From bb325e332c8d8a14de594e1460d09cb2fbd0f99d Mon Sep 17 00:00:00 2001 From: Rishabh Dave Date: Mon, 29 Jun 2020 12:00:12 +0530 Subject: [PATCH] vstart_runner.py: rotate logs between testcases Fixes: https://tracker.ceph.com/issues/46059 Signed-off-by: Rishabh Dave --- qa/tasks/vstart_runner.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/qa/tasks/vstart_runner.py b/qa/tasks/vstart_runner.py index ccf06872433..0e6262f50cf 100644 --- a/qa/tasks/vstart_runner.py +++ b/qa/tasks/vstart_runner.py @@ -1200,11 +1200,22 @@ class LocalContext(object): if test_path: shutil.rmtree(test_path) + +class LogRotate(): + def __init__(self): + self.conf_file_path = os.path.join(os.getcwd(), 'logrotate.conf') + self.state_file_path = os.path.join(os.getcwd(), 'logrotate.state') + + def run_logrotate(self): + remote.run(args=['logrotate', '-f', self.conf_file_path, '-s', + self.state_file_path, '--verbose']) + def teardown_cluster(): log.info('\ntearing down the cluster...') remote.run(args=[os.path.join(SRC_PREFIX, "stop.sh")], timeout=60) remote.run(args=['rm', '-rf', './dev', './out']) + def clear_old_log(): from os import stat @@ -1236,6 +1247,7 @@ def exec_test(): opt_use_ns = False opt_brxnet= None opt_verbose = True + opt_rotate_log = True args = sys.argv[1:] flags = [a for a in args if a.startswith("-")] @@ -1273,6 +1285,8 @@ def exec_test(): sys.exit(-1) elif '--no-verbose' == f: opt_verbose = False + elif f == '--dont-rotate': + opt_rotate_log = False else: log.error("Unknown option '{0}'".format(f)) sys.exit(-1) @@ -1503,14 +1517,23 @@ def exec_test(): else: super(LoggingResult, self).addSkip(test, reason) + # Execute! overall_suite = load_tests(modules, loader.TestLoader()) no_of_tests_execed = 0 + if opt_rotate_log: + logrotate = LogRotate() started_at = datetime.datetime.utcnow() for suite_, case in enumerate_methods(overall_suite): + # don't run logrotate beforehand since some ceph daemons might be + # down and pre/post-rotate scripts in logrotate.conf might fail. + if opt_rotate_log: + logrotate.run_logrotate() + result = unittest.TextTestRunner(stream=LogStream(), resultclass=LoggingResult, verbosity=2, failfast=True).run(case) + if not result.wasSuccessful(): break -- 2.39.5