Merge pull request #24 from gnuoy/feature/optionally-pass-bundle-to-runner

Add option to allow bundle name to be passed to runner
This commit is contained in:
David Ames
2018-04-20 14:54:38 -07:00
committed by GitHub
2 changed files with 42 additions and 6 deletions
@@ -15,11 +15,14 @@ class TestCharmLifecycleFuncTestRunner(ut_utils.BaseTestCase):
args = lc_func_test_runner.parse_args([])
self.assertFalse(args.keep_model)
self.assertFalse(args.smoke)
self.assertIsNone(args.bundle)
# Test flags
args = lc_func_test_runner.parse_args(['--keep-model'])
self.assertTrue(args.keep_model)
args = lc_func_test_runner.parse_args(['--smoke'])
self.assertTrue(args.smoke)
args = lc_func_test_runner.parse_args(['--bundle', 'mybundle'])
self.assertEqual(args.bundle, 'mybundle')
def test_func_test_runner(self):
self.patch_object(lc_func_test_runner.utils, 'get_charm_config')
@@ -92,3 +95,27 @@ class TestCharmLifecycleFuncTestRunner(ut_utils.BaseTestCase):
deploy_calls = [
mock.call('./tests/bundles/bundle2.yaml', 'newmodel')]
self.deploy.assert_has_calls(deploy_calls)
def test_func_test_runner_specify_bundle(self):
self.patch_object(lc_func_test_runner.utils, 'get_charm_config')
self.patch_object(lc_func_test_runner, 'generate_model_name')
self.patch_object(lc_func_test_runner.prepare, 'prepare')
self.patch_object(lc_func_test_runner.deploy, 'deploy')
self.patch_object(lc_func_test_runner.configure, 'configure')
self.patch_object(lc_func_test_runner.test, 'test')
self.patch_object(lc_func_test_runner.destroy, 'destroy')
self.generate_model_name.return_value = 'newmodel'
self.get_charm_config.return_value = {
'charm_name': 'mycharm',
'gate_bundles': ['bundle1', 'bundle2'],
'smoke_bundles': ['bundle2'],
'configure': [
'zaza.charm_tests.mycharm.setup.basic_setup'
'zaza.charm_tests.othercharm.setup.setup'],
'tests': [
'zaza.charm_tests.mycharm.tests.SmokeTest',
'zaza.charm_tests.mycharm.tests.ComplexTest']}
lc_func_test_runner.func_test_runner(bundle='maveric-filebeat')
deploy_calls = [
mock.call('./tests/bundles/maveric-filebeat.yaml', 'newmodel')]
self.deploy.assert_has_calls(deploy_calls)
+15 -6
View File
@@ -18,7 +18,7 @@ def generate_model_name(charm_name, bundle_name):
return 'zaza-{}{}{}'.format(charm_name, bundle_name, timestamp)
def func_test_runner(keep_model=False, smoke=False):
def func_test_runner(keep_model=False, smoke=False, bundle=None):
"""Deploy the bundles and run the tests as defined by the charms tests.yaml
:param keep_model: Whether to destroy model at end of run
@@ -27,11 +27,14 @@ def func_test_runner(keep_model=False, smoke=False):
:type smoke: boolean
"""
test_config = utils.get_charm_config()
if smoke:
bundle_key = 'smoke_bundles'
if bundle:
bundles = [bundle]
else:
bundle_key = 'gate_bundles'
bundles = test_config[bundle_key]
if smoke:
bundle_key = 'smoke_bundles'
else:
bundle_key = 'gate_bundles'
bundles = test_config[bundle_key]
last_test = bundles[-1]
for t in bundles:
model_name = generate_model_name(test_config['charm_name'], t)
@@ -70,6 +73,9 @@ def parse_args(args):
parser.add_argument('--smoke', dest='smoke',
help='Just run smoke test',
action='store_true')
parser.add_argument('-b', '--bundle',
help='Override the bundle to be run',
required=False)
parser.set_defaults(keep_model=False, smoke=False)
return parser.parse_args(args)
@@ -77,5 +83,8 @@ def parse_args(args):
def main():
logging.basicConfig(level=logging.INFO)
args = parse_args(sys.argv[1:])
func_test_runner(keep_model=args.keep_model, smoke=args.smoke)
func_test_runner(
keep_model=args.keep_model,
smoke=args.smoke,
bundle=args.bundle)
asyncio.get_event_loop().close()