diff --git a/test/maple_test/configs.py b/test/maple_test/configs.py index a0f61f15113c4e031dbd7bb5357f6fd43c6d7b88..8745897d0564bbf86ebebfa01cc99ff0b6f57a79 100644 --- a/test/maple_test/configs.py +++ b/test/maple_test/configs.py @@ -284,15 +284,18 @@ def init_config(): global LOGGER maple_test_log_config = log_config.copy() maple_test_log_config["verbose"] = True + maple_test_log_config["level"] = min(20, maple_test_log_config.get("level")) stream_fmt = logging.Formatter("%(message)s") log_dir = maple_test_log_config.get("dir") if not log_dir.exists(): log_dir.mkdir(parents=True, exist_ok=True) LOGGER = construct_logger( - maple_test_log_config, "Maple_Test", stream_fmt=stream_fmt + maple_test_log_config, + "Maple_Test", + stream_fmt=stream_fmt, + stream_level=min(20, maple_test_log_config.get("level")), ) LOGGER.info("Test log saved to {}".format(log_dir)) - running_config["log_config"] = log_config.copy() return test_suite_config, running_config, log_config @@ -325,7 +328,14 @@ class StoreDictKeyPair(argparse.Action): setattr(namespace, self.dest, my_dict) -def construct_logger(log_config, name, stream_fmt=None, file_fmt=None): +def construct_logger( + log_config, + name, + stream_fmt=None, + file_fmt=None, + stream_level=None, + file_level=logging.DEBUG, +): name = str(name) log_dir = str(log_config["dir"]) level = log_config["level"] @@ -340,21 +350,25 @@ def construct_logger(log_config, name, stream_fmt=None, file_fmt=None): logger = logging.getLogger(name) if logger.handlers: return logger - logger.setLevel(level) + logger.setLevel(logging.DEBUG) handler1 = logging.StreamHandler() - handler1.setLevel(level) handler1.setFormatter(stream_fmt) if not verbose: - handler1.setLevel(logging.WARNING) + level = logging.WARNING + else: + level = logging.DEBUG + if stream_level: + level = stream_level + handler1.setLevel(level) logger.addHandler(handler1) handler2 = logging.FileHandler(filename="{}/{}.log".format(log_dir, name), mode="w") - handler2.setLevel(level) + handler2.setLevel(file_level) handler2.setFormatter(file_fmt) logger.addHandler(handler2) - logger.info("Log file at: {}/{}.log".format(log_dir, name)) + logger.debug("Log file at: {}/{}.log".format(log_dir, name)) return logger diff --git a/test/maple_test/run.py b/test/maple_test/run.py index 1bacafb09dd089a0420d290db5dccd451a848ad5..2a7efe1ed7e35db4a18c6acd1c7f5f791d724f1f 100644 --- a/test/maple_test/run.py +++ b/test/maple_test/run.py @@ -45,7 +45,7 @@ def run_command(cmd, work_dir, timeout, logger, env=None): close_fds=True, start_new_session=True, ) - logger.debug("execute cmd: %s", cmd) + logger.debug("execute cmd ===>>>: %s", cmd) return_code = com_out = com_err = None try: com_out, com_err = process_command.communicate(timeout=timeout) @@ -77,6 +77,7 @@ def run_commands(position, commands, work_dir, timeout, log_config, env=None): logger = construct_logger(log_config[0], name) remain_time = timeout result = (PASS, None) + logger.debug("Work directory: {}".format(work_dir)) if not commands: return position, (UNRESOLVED, None) for command in commands: @@ -101,7 +102,7 @@ def run_commands(position, commands, work_dir, timeout, log_config, env=None): "Run time: {:.2}, remain time: {:.2}".format(run_time, remain_time) ) if result[0] == PASS: - logger.info("Task executed successfully") + logger.debug("Task executed successfully") handlers = logger.handlers[:] for handler in handlers: handler.close() diff --git a/test/maple_test/task.py b/test/maple_test/task.py index 1a8298675c6fd7f6e8e79beb02648d812ab4ba9d..5011bd8d2d78d046844273ba5f8a68e7a237ca0d 100644 --- a/test/maple_test/task.py +++ b/test/maple_test/task.py @@ -201,7 +201,6 @@ class TestSuiteTask: def serial_run_task(self): for tasks_name in self.task_set: for index, task in enumerate(self.task_set[tasks_name]): - print("Running task: {}. {}".format(index, task.name)) if task.result[0] == PASS: continue self.task_set_result[tasks_name][task.result[0]] -= 1 @@ -209,7 +208,6 @@ class TestSuiteTask: (tasks_name, index), task.commands, **task.running_config ) status, _ = task.result - print("Task result: {}".format(task.result)) self.task_set_result[tasks_name][status] += 1 def parallel_run_task(self, process_num): @@ -262,18 +260,11 @@ class TestSuiteTask: for line in self.gen_summary(print_type).splitlines(): logger.info(line) - def gen_summary(self, print_type=None): - self.result = defaultdict(int) - for name in self.task_set_result: - for status, num in self.task_set_result[name].items(): - self.result[status] += num - if print_type is None: - print_type = configs.get_val("print_type") - - summary = "\nTestSuiteTask: {}\n".format(self.name) - summary += "Path: {}\n".format(self.path) + def gen_brief_summary(self): total = sum(self.result.values()) - result = "".join( + total_summary = "TestSuiteTask: {}, Total: {}, ".format( + self.name, total + ) + "".join( [ "{}: {}, ".format(k, v) for k, v in sorted( @@ -281,30 +272,44 @@ class TestSuiteTask: ) ] ) - summary += "Total: {}, {}\n".format(total, result) - if not total: - return summary + task_set_summary = "" for tasks_name in self.task_set: - result = "".join( - [ - "{}: {}, ".format(k, v) - for k, v in sorted( - self.task_set_result[tasks_name].items(), - key=lambda item: item[1], - reverse=True, - ) - ] + total = sum(self.task_set_result[tasks_name].values()) + task_set_summary += ( + "\n " + + tasks_name + + ", total: {}, ".format(total) + + "".join( + [ + "{}: {}, ".format(k, v) + for k, v in sorted( + self.task_set_result[tasks_name].items(), + key=lambda item: item[1], + reverse=True, + ) + ] + ) ) - summary += "\n {}, {}\n".format(tasks_name, result) - for task in self.task_set[tasks_name]: - reason = "" - if task.result[-1] is not None: - reason = ", Reason: {}".format(task.result[-1]) + return total_summary + task_set_summary + "\n" + + def gen_summary(self, print_type=None): + self.result = defaultdict(int) + for name in self.task_set_result: + for status, num in self.task_set_result[name].items(): + self.result[status] += num + if print_type is None: + print_type = configs.get_val("print_type") + brief_summary = self.gen_brief_summary() + summary = "-" * 120 + summary += "\nTestSuite Path: {}\n".format(self.path) + for tasks_name in self.task_set: + for task in sorted(self.task_set[tasks_name], key=lambda task: task.name): result = task.result[0] if not print_type or task.result[0] in configs.get_val("print_type"): - summary += " {}, Case: {}, Result: {} {}\n".format( - task.name, task.case_path, result, reason + summary += " {}, Case: {}, Result: {}\n".format( + tasks_name, task.case_path, result ) + summary += "\n" + brief_summary summary += "-" * 120 return summary diff --git a/test/maple_test/test.py b/test/maple_test/test.py index cbc4acba3fbfb674a078be444c2aa01a2a9fb286..cdae5e85542b0f715fa807c48101b905735606ac 100644 --- a/test/maple_test/test.py +++ b/test/maple_test/test.py @@ -22,8 +22,12 @@ from maple_test.utils import split_comment, filter_line class Case: def __init__(self, path, test_path, comment, encoding): - self.name = str(path).replace(".", "_") - self.path = test_path / path + if path != test_path: + self.name = str(path).replace(".", "_") + self.path = test_path / path + else: + self.name = "{}_{}".format(path.parent.name, path.name).replace(".", "_") + self.path = path self.relative_path = path self.test_path = test_path self.comment = comment