From d6fa8799d326990f0448c0df1958804516965390 Mon Sep 17 00:00:00 2001 From: Nicolas Pochet Date: Mon, 20 Aug 2018 10:57:50 +0200 Subject: [PATCH] Add logging level configuration for all functest-* Fixes #117 --- unit_tests/test_zaza_charm_lifecycle_configure.py | 8 ++++++++ unit_tests/test_zaza_charm_lifecycle_deploy.py | 15 +++++++++++++++ unit_tests/test_zaza_charm_lifecycle_destroy.py | 8 ++++++++ unit_tests/test_zaza_charm_lifecycle_prepare.py | 8 ++++++++ unit_tests/test_zaza_charm_lifecycle_test.py | 8 ++++++++ zaza/charm_lifecycle/configure.py | 8 +++++++- zaza/charm_lifecycle/deploy.py | 9 +++++++-- zaza/charm_lifecycle/destroy.py | 8 +++++++- zaza/charm_lifecycle/prepare.py | 8 +++++++- zaza/charm_lifecycle/test.py | 8 +++++++- 10 files changed, 82 insertions(+), 6 deletions(-) diff --git a/unit_tests/test_zaza_charm_lifecycle_configure.py b/unit_tests/test_zaza_charm_lifecycle_configure.py index 1c21349..6c9c10e 100644 --- a/unit_tests/test_zaza_charm_lifecycle_configure.py +++ b/unit_tests/test_zaza_charm_lifecycle_configure.py @@ -41,3 +41,11 @@ class TestCharmLifecycleConfigure(ut_utils.BaseTestCase): ['-m', 'modelname', '-c', 'my.func1', 'my.func2']) self.assertEqual(args.configfuncs, ['my.func1', 'my.func2']) self.assertEqual(args.model_name, 'modelname') + + def test_parser_logging(self): + # Using defaults + args = lc_configure.parse_args(['-m', 'model']) + self.assertEqual(args.loglevel, 'INFO') + # Using args + args = lc_configure.parse_args(['-m', 'model', '--log', 'DEBUG']) + self.assertEqual(args.loglevel, 'DEBUG') diff --git a/unit_tests/test_zaza_charm_lifecycle_deploy.py b/unit_tests/test_zaza_charm_lifecycle_deploy.py index a962b03..08d177f 100644 --- a/unit_tests/test_zaza_charm_lifecycle_deploy.py +++ b/unit_tests/test_zaza_charm_lifecycle_deploy.py @@ -239,3 +239,18 @@ class TestCharmLifecycleDeploy(ut_utils.BaseTestCase): '-b', 'bun.yaml', '--no-wait']) self.assertFalse(args.wait) + + def test_parser_logging(self): + args = lc_deploy.parse_args([ + '-m', 'mymodel', + '-b', 'bun.yaml' + ]) + # Using defaults + self.assertEqual(args.loglevel, 'INFO') + # Specify the parameter + args = lc_deploy.parse_args([ + '-m', 'mymodel', + '-b', 'bun.yaml', + '--log', 'DEBUG' + ]) + self.assertEqual(args.loglevel, 'DEBUG') diff --git a/unit_tests/test_zaza_charm_lifecycle_destroy.py b/unit_tests/test_zaza_charm_lifecycle_destroy.py index 3a14b29..7762ba2 100644 --- a/unit_tests/test_zaza_charm_lifecycle_destroy.py +++ b/unit_tests/test_zaza_charm_lifecycle_destroy.py @@ -26,3 +26,11 @@ class TestCharmLifecycleDestroy(ut_utils.BaseTestCase): def test_parser(self): args = lc_destroy.parse_args(['-m', 'doomed']) self.assertEqual(args.model_name, 'doomed') + + def test_parser_logging(self): + # Using defaults + args = lc_destroy.parse_args(['-m', 'doomed']) + self.assertEqual(args.loglevel, 'INFO') + # Using args + args = lc_destroy.parse_args(['-m', 'doomed', '--log', 'DEBUG']) + self.assertEqual(args.loglevel, 'DEBUG') diff --git a/unit_tests/test_zaza_charm_lifecycle_prepare.py b/unit_tests/test_zaza_charm_lifecycle_prepare.py index e124ea2..52d89bc 100644 --- a/unit_tests/test_zaza_charm_lifecycle_prepare.py +++ b/unit_tests/test_zaza_charm_lifecycle_prepare.py @@ -90,3 +90,11 @@ class TestCharmLifecyclePrepare(ut_utils.BaseTestCase): def test_parser(self): args = lc_prepare.parse_args(['-m', 'newmodel']) self.assertEqual(args.model_name, 'newmodel') + + def test_parser_logging(self): + # Using defaults + args = lc_prepare.parse_args(['-m', 'model']) + self.assertEqual(args.loglevel, 'INFO') + # Using args + args = lc_prepare.parse_args(['-m', 'model', '--log', 'DEBUG']) + self.assertEqual(args.loglevel, 'DEBUG') diff --git a/unit_tests/test_zaza_charm_lifecycle_test.py b/unit_tests/test_zaza_charm_lifecycle_test.py index 2b84c7e..cf6a8e8 100644 --- a/unit_tests/test_zaza_charm_lifecycle_test.py +++ b/unit_tests/test_zaza_charm_lifecycle_test.py @@ -50,3 +50,11 @@ class TestCharmLifecycleTest(ut_utils.BaseTestCase): args.tests, ['my.test_class1', 'my.test_class2']) self.assertEqual(args.model_name, 'modelname') + + def test_parser_logging(self): + # Using defaults + args = lc_test.parse_args(['-m', 'model']) + self.assertEqual(args.loglevel, 'INFO') + # Using args + args = lc_test.parse_args(['-m', 'model', '--log', 'DEBUG']) + self.assertEqual(args.loglevel, 'DEBUG') diff --git a/zaza/charm_lifecycle/configure.py b/zaza/charm_lifecycle/configure.py index 24aaf28..14c962f 100644 --- a/zaza/charm_lifecycle/configure.py +++ b/zaza/charm_lifecycle/configure.py @@ -59,6 +59,9 @@ def parse_args(args): required=False) parser.add_argument('-m', '--model-name', help='Name of model to remove', required=True) + parser.add_argument('--log', dest='loglevel', + help='Loglevel [DEBUG|INFO|WARN|ERROR|CRITICAL]') + parser.set_defaults(loglevel='INFO') return parser.parse_args(args) @@ -69,8 +72,11 @@ def main(): provided read the configuration functions from the charms tests.yaml config file """ - logging.basicConfig(level=logging.INFO) args = parse_args(sys.argv[1:]) + level = getattr(logging, args.loglevel.upper(), None) + if not isinstance(level, int): + raise ValueError('Invalid log level: "{}"'.format(args.loglevel)) + logging.basicConfig(level=level) funcs = args.configfuncs or utils.get_charm_config()['configure'] configure(args.model_name, funcs) asyncio.get_event_loop().close() diff --git a/zaza/charm_lifecycle/deploy.py b/zaza/charm_lifecycle/deploy.py index 21c0c98..872bdf8 100755 --- a/zaza/charm_lifecycle/deploy.py +++ b/zaza/charm_lifecycle/deploy.py @@ -266,12 +266,17 @@ def parse_args(args): parser.add_argument('--no-wait', dest='wait', help='Do not wait for deployment to settle', action='store_false') - parser.set_defaults(wait=True) + parser.add_argument('--log', dest='loglevel', + help='Loglevel [DEBUG|INFO|WARN|ERROR|CRITICAL]') + parser.set_defaults(wait=True, loglevel='INFO') return parser.parse_args(args) def main(): """Deploy bundle.""" - logging.basicConfig(level=logging.INFO) args = parse_args(sys.argv[1:]) + level = getattr(logging, args.loglevel.upper(), None) + if not isinstance(level, int): + raise ValueError('Invalid log level: "{}"'.format(args.loglevel)) + logging.basicConfig(level=level) deploy(args.bundle, args.model, wait=args.wait) diff --git a/zaza/charm_lifecycle/destroy.py b/zaza/charm_lifecycle/destroy.py index 95cd397..acc1be4 100644 --- a/zaza/charm_lifecycle/destroy.py +++ b/zaza/charm_lifecycle/destroy.py @@ -40,11 +40,17 @@ def parse_args(args): parser = argparse.ArgumentParser() parser.add_argument('-m', '--model-name', help='Name of model to remove', required=True) + parser.add_argument('--log', dest='loglevel', + help='Loglevel [DEBUG|INFO|WARN|ERROR|CRITICAL]') + parser.set_defaults(loglevel='INFO') return parser.parse_args(args) def main(): """Cleanup after test run.""" - logging.basicConfig(level=logging.INFO) args = parse_args(sys.argv[1:]) + level = getattr(logging, args.loglevel.upper(), None) + if not isinstance(level, int): + raise ValueError('Invalid log level: "{}"'.format(args.loglevel)) + logging.basicConfig(level=level) destroy(args.model_name) diff --git a/zaza/charm_lifecycle/prepare.py b/zaza/charm_lifecycle/prepare.py index a5bd47c..993d85b 100644 --- a/zaza/charm_lifecycle/prepare.py +++ b/zaza/charm_lifecycle/prepare.py @@ -106,11 +106,17 @@ def parse_args(args): parser = argparse.ArgumentParser() parser.add_argument('-m', '--model-name', help='Name of model to add', required=True) + parser.add_argument('--log', dest='loglevel', + help='Loglevel [DEBUG|INFO|WARN|ERROR|CRITICAL]') + parser.set_defaults(loglevel='INFO') return parser.parse_args(args) def main(): """Add a new model.""" - logging.basicConfig(level=logging.INFO) args = parse_args(sys.argv[1:]) + level = getattr(logging, args.loglevel.upper(), None) + if not isinstance(level, int): + raise ValueError('Invalid log level: "{}"'.format(args.loglevel)) + logging.basicConfig(level=level) prepare(args.model_name) diff --git a/zaza/charm_lifecycle/test.py b/zaza/charm_lifecycle/test.py index 663116c..c7e8293 100644 --- a/zaza/charm_lifecycle/test.py +++ b/zaza/charm_lifecycle/test.py @@ -57,6 +57,9 @@ def parse_args(args): required=False) parser.add_argument('-m', '--model-name', help='Name of model to remove', required=True) + parser.add_argument('--log', dest='loglevel', + help='Loglevel [DEBUG|INFO|WARN|ERROR|CRITICAL]') + parser.set_defaults(loglevel='INFO') return parser.parse_args(args) @@ -66,8 +69,11 @@ def main(): Run the tests defined by the command line args or if none were provided read the tests from the charms tests.yaml config file """ - logging.basicConfig(level=logging.INFO) args = parse_args(sys.argv[1:]) + level = getattr(logging, args.loglevel.upper(), None) + if not isinstance(level, int): + raise ValueError('Invalid log level: "{}"'.format(args.loglevel)) + logging.basicConfig(level=level) tests = args.tests or utils.get_charm_config()['tests'] test(args.model_name, tests) asyncio.get_event_loop().close()