diff --git a/unit_tests/test_zaza_charm_lifecycle_func_test_runner.py b/unit_tests/test_zaza_charm_lifecycle_func_test_runner.py index 9312a29..43ce7b7 100644 --- a/unit_tests/test_zaza_charm_lifecycle_func_test_runner.py +++ b/unit_tests/test_zaza_charm_lifecycle_func_test_runner.py @@ -25,6 +25,8 @@ class TestCharmLifecycleFuncTestRunner(ut_utils.BaseTestCase): self.assertTrue(args.smoke) args = lc_func_test_runner.parse_args(['--bundle', 'mybundle']) self.assertEqual(args.bundle, 'mybundle') + args = lc_func_test_runner.parse_args(['--log', 'DEBUG']) + self.assertEqual(args.loglevel, 'DEBUG') def test_func_test_runner(self): self.patch_object(lc_func_test_runner.utils, 'get_charm_config') @@ -121,3 +123,30 @@ class TestCharmLifecycleFuncTestRunner(ut_utils.BaseTestCase): deploy_calls = [ mock.call('./tests/bundles/maveric-filebeat.yaml', 'newmodel')] self.deploy.assert_has_calls(deploy_calls) + + def test_main_loglevel(self): + self.patch_object(lc_func_test_runner, 'parse_args') + self.patch_object(lc_func_test_runner, 'logging') + self.patch_object(lc_func_test_runner, 'func_test_runner') + self.patch_object(lc_func_test_runner, 'asyncio') + _args = mock.Mock() + _args.loglevel = 'DeBuG' + self.parse_args.return_value = _args + self.logging.DEBUG = 10 + lc_func_test_runner.main() + self.logging.basicConfig.assert_called_with(level=10) + + def test_main_loglevel_invalid(self): + self.patch_object(lc_func_test_runner, 'parse_args') + self.patch_object(lc_func_test_runner, 'logging') + self.patch_object(lc_func_test_runner, 'func_test_runner') + self.patch_object(lc_func_test_runner, 'asyncio') + _args = mock.Mock() + _args.loglevel = 'invalid' + self.parse_args.return_value = _args + with self.assertRaises(ValueError) as context: + lc_func_test_runner.main() + self.assertEqual( + 'Invalid log level: "invalid"', + str(context.exception)) + self.assertFalse(self.logging.basicConfig.called) diff --git a/zaza/charm_lifecycle/func_test_runner.py b/zaza/charm_lifecycle/func_test_runner.py index 2c0df11..3969d0d 100644 --- a/zaza/charm_lifecycle/func_test_runner.py +++ b/zaza/charm_lifecycle/func_test_runner.py @@ -75,13 +75,20 @@ def parse_args(args): parser.add_argument('-b', '--bundle', help='Override the bundle to be run', required=False) - parser.set_defaults(keep_model=False, smoke=False) + parser.add_argument('--log', dest='loglevel', + help='Loglevel [DEBUG|INFO|WARN|ERROR|CRITICAL]') + parser.set_defaults(keep_model=False, smoke=False, loglevel='INFO') return parser.parse_args(args) def main(): - 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) + func_test_runner( keep_model=args.keep_model, smoke=args.smoke,