def __init__(self, args=None, standalone=False): """ Creates an instance of Job class. :param args: an instance of :class:`argparse.Namespace`. :param standalone: do not create any content and present the job log on the output. """ self.args = args self.standalone = standalone if args is not None: self.unique_id = args.unique_job_id or job_id.create_unique_job_id( ) else: self.unique_id = job_id.create_unique_job_id() self.view = output.View(app_args=self.args) self.logdir = None if self.args is not None: raw_log_level = args.job_log_level mapping = { 'info': logging.INFO, 'debug': logging.DEBUG, 'warning': logging.WARNING, 'error': logging.ERROR, 'critical': logging.CRITICAL } if raw_log_level is not None and raw_log_level in mapping: self.loglevel = mapping[raw_log_level] else: self.loglevel = logging.DEBUG if multiplexer.MULTIPLEX_CAPABLE: self.multiplex_files = args.multiplex_files self.show_job_log = args.show_job_log self.silent = args.silent else: self.loglevel = logging.DEBUG self.multiplex_files = None self.show_job_log = False self.silent = False if standalone: self.show_job_log = True if self.args is not None: setattr(self.args, 'show_job_log', True) if self.show_job_log: if not self.silent: test_logger = logging.getLogger('avocado.test') output.add_console_handler(test_logger) test_logger.setLevel(self.loglevel) self.test_dir = data_dir.get_test_dir() self.test_index = 1 self.status = "RUNNING" self.result_proxy = result.TestResultProxy() self.sysinfo = None
def __init__(self, args=None): """ Creates an instance of Job class. :param args: an instance of :class:`argparse.Namespace`. """ if args is None: args = argparse.Namespace() self.args = args self.standalone = getattr(self.args, 'standalone', False) unique_id = getattr(self.args, 'unique_job_id', None) if unique_id is None: unique_id = job_id.create_unique_job_id() self.unique_id = unique_id self.view = output.View(app_args=self.args) self.logdir = None raw_log_level = settings.get_value('job.output', 'loglevel', default='debug') mapping = { 'info': logging.INFO, 'debug': logging.DEBUG, 'warning': logging.WARNING, 'error': logging.ERROR, 'critical': logging.CRITICAL } if raw_log_level in mapping: self.loglevel = mapping[raw_log_level] else: self.loglevel = logging.DEBUG self.show_job_log = getattr(self.args, 'show_job_log', False) self.silent = getattr(self.args, 'silent', False) if self.standalone: self.show_job_log = True if self.args is not None: setattr(self.args, 'show_job_log', True) if self.show_job_log: if not self.silent: output.add_console_handler(_TEST_LOGGER) _TEST_LOGGER.setLevel(self.loglevel) self.test_dir = data_dir.get_test_dir() self.test_index = 1 self.status = "RUNNING" self.result_proxy = result.TestResultProxy() self.sysinfo = None
def __init__(self, args=None): """ Creates an instance of Job class. :param args: an instance of :class:`argparse.Namespace`. """ self.args = args if args is not None: self.unique_id = args.unique_job_id or job_id.create_unique_job_id() else: self.unique_id = job_id.create_unique_job_id() self.logdir = data_dir.get_job_logs_dir(self.args, self.unique_id) self.logfile = os.path.join(self.logdir, "job.log") self.idfile = os.path.join(self.logdir, "id") with open(self.idfile, 'w') as id_file_obj: id_file_obj.write("%s\n" % self.unique_id) if self.args is not None: raw_log_level = args.job_log_level mapping = {'info': logging.INFO, 'debug': logging.DEBUG, 'warning': logging.WARNING, 'error': logging.ERROR, 'critical': logging.CRITICAL} if raw_log_level is not None and raw_log_level in mapping: self.loglevel = mapping[raw_log_level] else: self.loglevel = logging.DEBUG self.multiplex_files = args.multiplex_files self.show_job_log = args.show_job_log self.silent = args.silent else: self.loglevel = logging.DEBUG self.multiplex_files = None self.show_job_log = False self.silent = False if self.show_job_log: if not self.silent: test_logger = logging.getLogger('avocado.test') output.add_console_handler(test_logger) test_logger.setLevel(self.loglevel) self.test_dir = data_dir.get_test_dir() self.test_index = 1 self.status = "RUNNING" self.result_proxy = result.TestResultProxy() self.view = output.View(app_args=self.args)
def __init__(self, args=None): """ Creates an instance of Job class. :param args: an instance of :class:`argparse.Namespace`. """ if args is None: args = argparse.Namespace() self.args = args self.standalone = getattr(self.args, 'standalone', False) unique_id = getattr(self.args, 'unique_job_id', None) if unique_id is None: unique_id = job_id.create_unique_job_id() self.unique_id = unique_id self.view = output.View(app_args=self.args) self.logdir = None raw_log_level = settings.get_value('job.output', 'loglevel', default='debug') mapping = {'info': logging.INFO, 'debug': logging.DEBUG, 'warning': logging.WARNING, 'error': logging.ERROR, 'critical': logging.CRITICAL} if raw_log_level in mapping: self.loglevel = mapping[raw_log_level] else: self.loglevel = logging.DEBUG self.show_job_log = getattr(self.args, 'show_job_log', False) self.silent = getattr(self.args, 'silent', False) if self.standalone: self.show_job_log = True if self.args is not None: setattr(self.args, 'show_job_log', True) if self.show_job_log: if not self.silent: output.add_console_handler(_TEST_LOGGER) _TEST_LOGGER.setLevel(self.loglevel) self.test_dir = data_dir.get_test_dir() self.test_index = 1 self.status = "RUNNING" self.result_proxy = result.TestResultProxy() self.sysinfo = None self.timeout = getattr(self.args, 'job_timeout', 0)
def collect_sysinfo(args): """ Collect sysinfo to a base directory. :param args: :class:`argparse.Namespace` object with command line params. """ output.add_console_handler(log) basedir = args.sysinfodir if not basedir: cwd = os.getcwd() timestamp = time.strftime('%Y-%m-%d-%H.%M.%S') basedir = os.path.join(cwd, 'sysinfo-%s' % timestamp) sysinfo_logger = SysInfo(basedir=basedir, log_packages=True) sysinfo_logger.start_job_hook() log.info("Logged system information to %s", basedir)