def _create_runtime_tasks_for_test(test_suite, runnable, no_digits, index, variant): """Creates runtime tasks for both tests, and for its requirements.""" result = [] # test related operations # create test ID if test_suite.name: prefix = "{}-{}".format(test_suite.name, index) else: prefix = index test_id = TestID(prefix, runnable.uri, variant, no_digits) # inject variant on runnable runnable.variant = dump_variant(variant) # handles the test task task = nrunner.Task( runnable, identifier=test_id, known_runners=nrunner.RUNNERS_REGISTRY_PYTHON_CLASS) runtime_task = RuntimeTask(task) result.append(runtime_task) # handles the requirements requirements_runtime_tasks = (Runner._get_requirements_runtime_tasks( runnable, prefix)) # extend the list of tasks with the requirements runtime tasks if requirements_runtime_tasks is not None: for requirement_runtime_task in requirements_runtime_tasks: # make sure we track the dependencies of a task runtime_task.task.dependencies.add( requirement_runtime_task.task) result.extend(requirements_runtime_tasks) return result
def from_runnable( cls, runnable, no_digits, index, variant, test_suite_name=None, status_server_uri=None, job_id=None, ): """Creates runtime task for test from runnable :param runnable: the "description" of what the task should run. :type runnable: :class:`avocado.core.nrunner.Runnable` :param no_digits: number of digits of the test uid :type no_digits: int :param index: index of tests inside test suite :type index: int :param test_suite_name: test suite name which this test is related to :type test_suite_name: str :param status_server_uri: the URIs for the status servers that this task should send updates to. :type status_server_uri: list :param job_id: the ID of the job, for authenticating messages that get sent to the destination job's status server and will make into the job's results. :type job_id: str :returns: RuntimeTask of the test from runnable """ # create test ID if test_suite_name: prefix = f"{test_suite_name}-{index}" else: prefix = index test_id = TestID(prefix, runnable.identifier, variant, no_digits) # inject variant on runnable runnable.variant = dump_variant(variant) # handles the test task task = Task(runnable, identifier=test_id, status_uris=status_server_uri, job_id=job_id) return cls(task)