def _copy_logs(self): """ Copy logs from remote machines to local destination """ if "LOGS_DIRECTORY" in self.master_config.mapping: logs_dir = self.master_config.mapping.get("LOGS_DIRECTORY") else: logs_dir = self.dynamic_config_module.LOGS_DIRECTORY utils.makedirs(logs_dir) for deployer in runtime.get_deployers(): for process in deployer.get_processes(): logs = [] if (hasattr(self.dynamic_config_module, "process_logs")): logs += self.dynamic_config_module.process_logs( process.servicename) if (hasattr(self.dynamic_config_module, "machine_logs")): logs += self.dynamic_config_module.machine_logs().get( process.unique_id, []) if (hasattr(self.dynamic_config_module, "naarad_logs")): logs += self.dynamic_config_module.naarad_logs().get( process.unique_id, []) if hasattr(self.dynamic_config_module, 'log_patterns'): pattern = self.dynamic_config_module.log_patterns().get( process.unique_id, '^$') else: pattern = '^$' deployer.get_logs(process.unique_id, logs, logs_dir, pattern)
def generate(self): """ Generates the report """ self._setup() header_html = self._generate_header() footer_html = self._generate_footer() results_topbar_html = self._generate_topbar("results") summary_topbar_html = self._generate_topbar("summary") summary_body_html = self._generate_summary_body() summary_html = header_html + summary_topbar_html + summary_body_html + footer_html Reporter._make_file(summary_html, self.report_info.home_page) for config_name in self.report_info.config_to_test_names_map.keys(): config_dir = os.path.join(self.report_info.resource_dir, config_name) utils.makedirs(config_dir) config_body_html = self._generate_config_body(config_name) config_html = header_html + results_topbar_html + config_body_html + footer_html config_file = os.path.join( config_dir, config_name + self.report_info.report_file_sfx) Reporter._make_file(config_html, config_file) for test_name in self.data_source.get_test_names(config_name): test_body_html = self._generate_test_body( config_name, test_name) test_html = header_html + results_topbar_html + test_body_html + footer_html test_file = os.path.join( config_dir, test_name + self.report_info.report_file_sfx) Reporter._make_file(test_html, test_file)
def generate(self): """ Generates the report """ self._setup() header_html = self._generate_header() footer_html = self._generate_footer() results_topbar_html = self._generate_topbar("results") summary_topbar_html = self._generate_topbar("summary") summary_body_html = self._generate_summary_body() summary_html = header_html + summary_topbar_html + summary_body_html + footer_html Reporter._make_file(summary_html, self.report_info.home_page) for config_name in self.report_info.config_to_test_names_map.keys(): config_dir = os.path.join(self.report_info.resource_dir, config_name) utils.makedirs(config_dir) config_body_html = self._generate_config_body(config_name) config_html = header_html + results_topbar_html + config_body_html + footer_html config_file = os.path.join(config_dir, config_name + self.report_info.report_file_sfx) Reporter._make_file(config_html, config_file) for test_name in self.data_source.get_test_names(config_name): test_body_html = self._generate_test_body(config_name, test_name) test_html = header_html + results_topbar_html + test_body_html + footer_html test_file = os.path.join(config_dir, test_name + self.report_info.report_file_sfx) Reporter._make_file(test_html, test_file)
def generate(self): """ Generates the report """ self._setup() for config_name in self.report_info.config_to_test_names_map.keys(): config_dir = os.path.join(self.report_info.resource_dir, config_name) utils.makedirs(config_dir) testsuite = self._generate_junit_xml(config_name) with open(os.path.join(self.report_info.junit_xml_path, 'zopkio_junit_reports.xml'), 'w') as file: TestSuite.to_file(file, [testsuite], prettyprint=False)
def setup_logging(output_dir): date_time = time.strftime("_%Y%m%d_%H%M%S", time.localtime(runtime.get_init_time())) log_dir = os.path.join(output_dir, "logs", "zopkio_log" + date_time) utils.makedirs(log_dir) log_file = os.path.join(log_dir, "zopkio_log" + date_time + ".log") logging.basicConfig(filename=log_file, filemode='a', format="%(asctime)s %(name)s [%(levelname)s] %(message)s", datefmt="%Y-%m-%d %H:%M:%S", level=logging.INFO)
def setup_logging(output_dir, log_level, console_level): log_dir = os.path.join(output_dir, "logs", "zopkio_log") utils.makedirs(log_dir) log_file = os.path.join(log_dir, "zopkio_log.log") logging.basicConfig(filename=log_file, filemode='a', format="%(asctime)s %(name)s [%(levelname)s] %(message)s", datefmt="%Y-%m-%d %H:%M:%S", level=string_to_level(log_level)) console = logging.StreamHandler() console.setLevel(string_to_level(console_level)) console.setFormatter(logging.Formatter("%(asctime)s %(name)s [%(levelname)s] %(message)s")) logging.getLogger('').addHandler(console)
def _copy_logs(self): """ Copy logs from remote machines to local destination """ if "LOGS_DIRECTORY" in self.master_config.mapping: logs_dir = self.master_config.mapping.get("LOGS_DIRECTORY") else: logs_dir = self.dynamic_config_module.LOGS_DIRECTORY utils.makedirs(logs_dir) for deployer in runtime.get_deployers(): for process in deployer.get_processes(): logs = self.dynamic_config_module.machine_logs()[process.unique_id] + self.dynamic_config_module.naarad_logs()[process.unique_id] deployer.get_logs(process.unique_id, logs, logs_dir)
def generate(self): """ Generates the report """ self._setup() for config_name in self.report_info.config_to_test_names_map.keys(): config_dir = os.path.join(self.report_info.resource_dir, config_name) utils.makedirs(config_dir) testsuite = self._generate_junit_xml(config_name) with open( os.path.join(self.report_info.junit_xml_path, '_junit_reports.xml'), 'w') as file: TestSuite.to_file(file, [testsuite], prettyprint=False)
def __init__(self, *args, **kwargs): """ :param kwargs: :return: """ if ('ztestsuite' in kwargs): self._new_constuctor(**kwargs) elif (len(args) >= 3): self._old_constructor(args[0], args[1], args[2]) #create logs dir self._logs_dir = self.master_config.mapping.get("LOGS_DIRECTORY") if "LOGS_DIRECTORY" in self.master_config.mapping else \ self.dynamic_config_module.LOGS_DIRECTORY try: utils.makedirs(self._logs_dir) except: logger.error("Unable to create logs dir {0}; no logs will be created".format(self._logs_dir)) self._logs_dir = None ##### #create methods used for identifying various types of logs if #not provided by client, creating them to return an empty list #The functions are wrapped to allow backwards compatibility with #an older signature for each function def wrap(func): def helper( unique_id ): try: return func( unique_id) except: #backwards compatible signature taking no arguments: return func().get(unique_id, []) return helper def assign_log_methods( method_name): if not hasattr( self.dynamic_config_module, method_name): setattr(self.dynamic_config_module, method_name,lambda unique_id: []) else: setattr(self.dynamic_config_module,method_name, wrap(getattr( self.dynamic_config_module, method_name,self.dynamic_config_module))) for method_name in ("process_logs", "machine_logs", "naarad_logs" ): assign_log_methods( method_name ) if not hasattr( self.dynamic_config_module, "log_patterns"): setattr( self.dynamic_config_module, "log_patterns", wrap( lambda unique_id: constants.FILTER_NAME_ALLOW_ALL )) else: self.dynamic_config_module.log_patterns = wrap( self.dynamic_config_module.log_patterns) self._output_dir = self.master_config.mapping.get("OUTPUT_DIRECTORY") or self.dynamic_config_module.OUTPUT_DIRECTORY self._failed_count = 0 self._success_count = 0
def __init__(self, *args, **kwargs): """ :param kwargs: :return: """ if ('ztestsuite' in kwargs): self._new_constuctor(**kwargs) elif (len(args) >= 3): self._old_constructor(args[0], args[1], args[2]) #create logs dir self._logs_dir = self.master_config.mapping.get("LOGS_DIRECTORY") if "LOGS_DIRECTORY" in self.master_config.mapping else \ self.dynamic_config_module.LOGS_DIRECTORY try: utils.makedirs(self._logs_dir) except: logger.error("Unable to create logs dir {0}; no logs will be created".format(self._logs_dir)) self._logs_dir = None ##### #create methods used for identifying various types of logs if #not provided by client, creating them to return an empty list #The functions are wrapped to allow backwards compatibility with #an older signature for each function def wrap(func): def helper( unique_id ): try: return func( unique_id) except: #backwards compatible signature taking no arguments: return func().get(unique_id, []) return helper def assign_log_methods( method_name): if not hasattr( self.dynamic_config_module, method_name): setattr(self.dynamic_config_module, method_name,lambda unique_id: []) else: setattr(self.dynamic_config_module,method_name, wrap(getattr( self.dynamic_config_module, method_name,self.dynamic_config_module))) for method_name in ("process_logs", "machine_logs", "naarad_logs" ): assign_log_methods( method_name ) if not hasattr( self.dynamic_config_module, "log_patterns"): setattr( self.dynamic_config_module, "log_patterns", wrap( lambda unique_id: constants.FILTER_NAME_ALLOW_NONE )) else: self.dynamic_config_module.log_patterns = wrap( self.dynamic_config_module.log_patterns) self._output_dir = self.master_config.mapping.get("OUTPUT_DIRECTORY") or self.dynamic_config_module.OUTPUT_DIRECTORY self._failed_count = 0 self._success_count = 0
def _copy_logs(self): """ Copy logs from remote machines to local destination """ if "LOGS_DIRECTORY" in self.master_config.mapping: logs_dir = self.master_config.mapping.get("LOGS_DIRECTORY") else: logs_dir = self.dynamic_config_module.LOGS_DIRECTORY utils.makedirs(logs_dir) for deployer in runtime.get_deployers(): for process in deployer.get_processes(): logs = self.dynamic_config_module.machine_logs( )[process.unique_id] + self.dynamic_config_module.naarad_logs( )[process.unique_id] deployer.get_logs(process.unique_id, logs, logs_dir)
def setup_logging(output_dir, log_level, console_level): log_dir = os.path.join(output_dir, "logs", "zopkio_log") utils.makedirs(log_dir) log_file = os.path.join(log_dir, "zopkio_log.log") logging.basicConfig( filename=log_file, filemode='a', format="%(asctime)s %(name)s [%(levelname)s] %(message)s", datefmt="%Y-%m-%d %H:%M:%S", level=string_to_level(log_level)) console = logging.StreamHandler() console.setLevel(string_to_level(console_level)) console.setFormatter( logging.Formatter("%(asctime)s %(name)s [%(levelname)s] %(message)s")) logging.getLogger('').addHandler(console)
def directory_setup(testfile, perf_module, configs): """ Sets up the output directories. :param testfile: the main testfile used in run_test(); only used here for its file name :returns: dict with keys ["report_name", "report_dir", "logs_dir"] """ dir_info = {} utils.makedirs(runtime.get_reports_dir()) report_name = os.path.splitext(os.path.basename(testfile))[0] # getting the file name without extension date_time = time.strftime("_%Y%m%d_%H%M%S", time.localtime(runtime.get_init_time())) report_name += date_time dir_info["report_name"] = report_name results_dir = os.path.join(runtime.get_reports_dir(), report_name) utils.makedirs(results_dir) dir_info["results_dir"] = results_dir if "LOGS_DIRECTORY" in configs.mapping: logs_dir = configs.mapping.get("LOGS_DIRECTORY") else: logs_dir = perf_module.LOGS_DIRECTORY utils.makedirs(logs_dir) dir_info["logs_dir"] = logs_dir return dir_info
def _copy_logs(self): """ Copy logs from remote machines to local destination """ if "LOGS_DIRECTORY" in self.master_config.mapping: logs_dir = self.master_config.mapping.get("LOGS_DIRECTORY") else: logs_dir = self.dynamic_config_module.LOGS_DIRECTORY utils.makedirs(logs_dir) for deployer in runtime.get_deployers(): for process in deployer.get_processes(): logs = [] if (hasattr(self.dynamic_config_module, "process_logs")): logs += self.dynamic_config_module.process_logs(process.servicename) if (hasattr(self.dynamic_config_module, "machine_logs")): logs += self.dynamic_config_module.machine_logs().get(process.unique_id, []) if (hasattr(self.dynamic_config_module, "naarad_logs")): logs += self.dynamic_config_module.naarad_logs().get(process.unique_id, []) if hasattr(self.dynamic_config_module, 'log_patterns'): pattern = self.dynamic_config_module.log_patterns().get(process.unique_id, '^$') else: pattern = '^$' deployer.get_logs(process.unique_id, logs, logs_dir, pattern)
def _setup(self): utils.makedirs(self.report_info.output_dir) utils.makedirs(self.report_info.resource_dir) self.report_info.config_to_test_names_map = self.get_config_to_test_names_map()