Best Python code snippet using autotest_python
agent_task.py
Source:agent_task.py
...443 keyval_contents,444 file_path=keyval_path)445 def _write_keyvals_before_job(self, keyval_dict):446 self._write_keyvals_before_job_helper(keyval_dict, self._keyval_path())447 def _write_host_keyvals(self, host):448 keyval_path = os.path.join(self._working_directory(), 'host_keyvals',449 host.hostname)450 platform, all_labels = host.platform_and_labels()451 all_labels = [ urllib.quote(label) for label in all_labels ]452 keyval_dict = dict(platform=platform, labels=','.join(all_labels))453 self._write_keyvals_before_job_helper(keyval_dict, keyval_path)454class SpecialAgentTask(AgentTask, TaskWithJobKeyvals):455 """456 Subclass for AgentTasks that correspond to a SpecialTask entry in the DB.457 """458 TASK_TYPE = None459 host = None460 queue_entry = None461 def __init__(self, task, extra_command_args):462 super(SpecialAgentTask, self).__init__()463 assert self.TASK_TYPE is not None, 'self.TASK_TYPE must be overridden'464 self.host = rdb_lib.get_hosts([task.host.id])[0]465 self.host.dbg_str = 'Task: %s' % str(task)466 self.queue_entry = None467 if task.queue_entry:468 self.queue_entry = scheduler_models.HostQueueEntry(469 id=task.queue_entry.id)470 self.host.dbg_str += self.queue_entry.get_dbg_str()471 self.task = task472 self._extra_command_args = extra_command_args473 self.host.metadata = self.get_metadata()474 def get_metadata(self):475 """Get a dictionary that contains task information.476 The return value is a dictionary that includes task information like id,477 name and related job information. The value will be stored in metadata478 database.479 @return: A dictionary containing the task id, name and related job id.480 If some attributes are failed to be accessed, an empty481 dictionary will be returned, and error will be logged.482 """483 try:484 metadata = {'task_id':self.task.id, 'task_name':self.task.task,485 'hostname':self.task.host.hostname}486 if self.task.queue_entry:487 job = self.task.queue_entry.job488 metadata.update(489 scheduler_models.get_job_metadata(job))490 return metadata491 except AttributeError as e:492 logging.error('Task has missing attribute: %s', e)493 return {}494 def _keyval_path(self):495 return os.path.join(self._working_directory(), self._KEYVAL_FILE)496 def _command_line(self):497 return autoserv_utils._autoserv_command_line(self.host.hostname,498 self._extra_command_args,499 queue_entry=self.queue_entry,500 in_lab=True)501 def _working_directory(self):502 return self.task.execution_path()503 @property504 def owner_username(self):505 if self.task.requested_by:506 return self.task.requested_by.login507 return None508 def prolog(self):509 super(SpecialAgentTask, self).prolog()510 self.task.activate()511 self._write_host_keyvals(self.host)512 def _fail_queue_entry(self):513 assert self.queue_entry514 if self.queue_entry.meta_host:515 return # don't fail metahost entries, they'll be reassigned516 self.queue_entry.update_from_database()517 if self.queue_entry.status != models.HostQueueEntry.Status.QUEUED:518 return # entry has been aborted519 self._actually_fail_queue_entry()520 # TODO(milleral): http://crbug.com/268607521 # All this used to be a part of _fail_queue_entry. The522 # exact semantics of when one should and should not be failing a queue523 # entry need to be worked out, because provisioning has placed us in a524 # case where we want to fail a queue entry that could be requeued,525 # which makes us fail the two above if statements, and thus...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!