def run(self, config): plugin_types = [ (dispatcher.InitDispatcher(), 'Plugins that always need to be initialized (init): '), (dispatcher.CLICmdDispatcher(), 'Plugins that add new commands (cli.cmd):'), (dispatcher.CLIDispatcher(), 'Plugins that add new options to commands (cli):'), (dispatcher.JobPrePostDispatcher(), 'Plugins that run before/after the execution of jobs (job.prepost):'), (dispatcher.ResultDispatcher(), 'Plugins that generate job result in different formats (result):'), (dispatcher.ResultEventsDispatcher(config), ('Plugins that generate job result based on job/test events ' '(result_events):')), (dispatcher.VarianterDispatcher(), 'Plugins that generate test variants (varianter): '), (Resolver(), 'Plugins that resolve test references (resolver): '), (dispatcher.RunnerDispatcher(), 'Plugins that run test suites on a job (runners): '), ] for plugins_active, msg in plugin_types: LOG_UI.info(msg) plugin_matrix = [] for plugin in sorted(plugins_active, key=lambda x: x.name): plugin_matrix.append((plugin.name, plugin.obj.description)) if not plugin_matrix: LOG_UI.debug("(No active plugin)") else: for line in astring.iter_tabular_output(plugin_matrix): LOG_UI.debug(line) LOG_UI.debug("")
def run(self, args): log = logging.getLogger("avocado.app") plugin_types = [ (dispatcher.CLICmdDispatcher(), 'Plugins that add new commands (cli.cmd):'), (dispatcher.CLIDispatcher(), 'Plugins that add new options to commands (cli):'), (dispatcher.JobPrePostDispatcher(), 'Plugins that run before/after the execution of jobs (job.prepost):' ), (dispatcher.ResultDispatcher(), 'Plugins that generate job result in different formats (result):' ), (dispatcher.ResultEventsDispatcher(args), ('Plugins that generate job result based on job/test events ' '(result_events):')), (dispatcher.VarianterDispatcher(), 'Plugins that generate test variants (varianter): ') ] for plugins_active, msg in plugin_types: log.info(msg) plugin_matrix = [] for plugin in sorted(plugins_active, key=lambda x: x.name): plugin_matrix.append((plugin.name, plugin.obj.description)) if not plugin_matrix: log.debug("(No active plugin)") else: for line in astring.iter_tabular_output(plugin_matrix): log.debug(line)
def new_job(config): """ Produce a new job object and thus a job. :param config: command line arguments :type config: {str, str} """ with job.Job(config) as job_instance: pre_post_dispatcher = dispatcher.JobPrePostDispatcher() try: # run job pre plugins output.log_plugin_failures(pre_post_dispatcher.load_failures) pre_post_dispatcher.map_method('pre', job_instance) # second initiation stage (as a test runner) yield job_instance finally: # run job post plugins pre_post_dispatcher.map_method('post', job_instance) result_dispatcher = dispatcher.ResultDispatcher() if result_dispatcher.extensions: result_dispatcher.map_method('render', job_instance.result, job_instance)
def run(self): """ Runs all job phases, returning the test execution results. This method is supposed to be the simplified interface for jobs, that is, they run all phases of a job. :return: Integer with overall job status. See :mod:`avocado.core.exit_codes` for more information. """ assert self.tmpdir is not None, "Job.setup() not called" if self.time_start == -1: self.time_start = time.monotonic() try: self.result.tests_total = self.size pre_post_dispatcher = dispatcher.JobPrePostDispatcher() output.log_plugin_failures(pre_post_dispatcher.load_failures) pre_post_dispatcher.map_method("pre", self) self.pre_tests() return self.run_tests() except exceptions.JobBaseException as details: self.status = details.status fail_class = details.__class__.__name__ self.log.error("\nAvocado job failed: %s: %s", fail_class, details) self.exitcode |= exit_codes.AVOCADO_JOB_FAIL return self.exitcode except exceptions.OptionValidationError as details: self.log.error("\n%s", str(details)) self.exitcode |= exit_codes.AVOCADO_JOB_FAIL return self.exitcode except Exception as details: # pylint: disable=W0703 self.status = "ERROR" exc_type, exc_value, exc_traceback = sys.exc_info() tb_info = traceback.format_exception( exc_type, exc_value, exc_traceback.tb_next ) fail_class = details.__class__.__name__ self.log.error("\nAvocado crashed: %s: %s", fail_class, details) for line in tb_info: self.log.debug(line) self.log.error( "Please include the traceback info and command line" " used on your bug report" ) self.log.error("Report bugs visiting %s", _NEW_ISSUE_LINK) self.exitcode |= exit_codes.AVOCADO_FAIL return self.exitcode finally: self.post_tests() if self.time_end == -1: self.time_end = time.monotonic() self.time_elapsed = self.time_end - self.time_start self.render_results() pre_post_dispatcher.map_method("post", self)
def run(self, config): plugin_types = [ (dispatcher.InitDispatcher(), 'Plugins that always need to be initialized (init): '), (dispatcher.CLICmdDispatcher(), 'Plugins that add new commands (cli.cmd):'), (dispatcher.CLIDispatcher(), 'Plugins that add new options to commands (cli):'), (dispatcher.JobPrePostDispatcher(), 'Plugins that run before/after the execution of jobs (job.prepost):'), (dispatcher.ResultDispatcher(), 'Plugins that generate job result in different formats (result):'), (dispatcher.ResultEventsDispatcher(config), ('Plugins that generate job result based on job/test events ' '(result_events):')), (dispatcher.VarianterDispatcher(), 'Plugins that generate test variants (varianter): '), (Resolver(), 'Plugins that resolve test references (resolver): '), (dispatcher.RunnerDispatcher(), 'Plugins that run test suites on a job (runners): '), (dispatcher.SpawnerDispatcher(), 'Plugins that spawn tasks and know about their status (spawner): '), (dispatcher.RunnableRunnerDispatcher(), 'Plugins that run runnables (under a task and spawner) (runnable.runner): '), ] for plugins_active, msg in plugin_types: LOG_UI.info(msg) plugin_matrix = [] if config.get('plugins.ordered_list'): sorted_plugins = plugins_active.get_extentions_by_priority() else: sorted_plugins = plugins_active.get_extentions_by_name() for plugin in sorted_plugins: plugin_matrix.append((plugin.name, plugin.obj.description)) if not plugin_matrix: LOG_UI.debug("(No active plugin)") else: for line in astring.iter_tabular_output(plugin_matrix): LOG_UI.debug(line) LOG_UI.debug("")
def run(self, args): log = logging.getLogger("avocado.app") plugin_types = [ (dispatcher.CLICmdDispatcher(), 'Plugins that add new commands (avocado.plugins.cli.cmd):'), (dispatcher.CLIDispatcher(), 'Plugins that add new options to commands (avocado.plugins.cli):'), (dispatcher.JobPrePostDispatcher(), 'Plugins that run before/after the execution of jobs (avocado.plugins.job.prepost):') ] for plugins_active, msg in plugin_types: log.info(msg) plugin_matrix = [] for plugin in sorted(plugins_active): plugin_matrix.append((plugin.name, plugin.obj.description)) if not plugin_matrix: log.debug("(No active plugin)") else: for line in astring.iter_tabular_output(plugin_matrix): log.debug(line)