Merge pull request #138 from fnordahl/issue/137

functest-prepare: auto-generate model name when not provided
This commit is contained in:
Liam Young
2018-10-03 11:15:33 +01:00
committed by GitHub
6 changed files with 30 additions and 23 deletions
@@ -20,12 +20,6 @@ import unit_tests.utils as ut_utils
class TestCharmLifecycleFuncTestRunner(ut_utils.BaseTestCase):
def test_generate_model_name(self):
self.patch_object(lc_func_test_runner.uuid, "uuid4")
self.uuid4.return_value = "longer-than-12characters"
self.assertEqual(lc_func_test_runner.generate_model_name(),
"zaza-12characters")
def test_parser(self):
# Test defaults
args = lc_func_test_runner.parse_args([])
@@ -47,7 +41,7 @@ class TestCharmLifecycleFuncTestRunner(ut_utils.BaseTestCase):
def test_func_test_runner(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.utils, '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')
@@ -97,7 +91,7 @@ class TestCharmLifecycleFuncTestRunner(ut_utils.BaseTestCase):
def test_func_test_runner_smoke(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.utils, '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')
@@ -122,7 +116,7 @@ class TestCharmLifecycleFuncTestRunner(ut_utils.BaseTestCase):
def test_func_test_runner_dev(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.utils, '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')
@@ -148,7 +142,7 @@ class TestCharmLifecycleFuncTestRunner(ut_utils.BaseTestCase):
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.utils, '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')
@@ -87,6 +87,10 @@ class TestCharmLifecyclePrepare(ut_utils.BaseTestCase):
model_name='newmodel')
def test_parser(self):
args = lc_prepare.parse_args([])
self.assertTrue(args.model_name.startswith('zaza-'))
def test_parser_model(self):
args = lc_prepare.parse_args(['-m', 'newmodel'])
self.assertEqual(args.model_name, 'newmodel')
@@ -20,6 +20,12 @@ import unit_tests.utils as ut_utils
class TestCharmLifecycleUtils(ut_utils.BaseTestCase):
def test_generate_model_name(self):
self.patch_object(lc_utils.uuid, "uuid4")
self.uuid4.return_value = "longer-than-12characters"
self.assertEqual(lc_utils.generate_model_name(),
"zaza-12characters")
def test_get_charm_config(self):
self.patch("builtins.open",
new_callable=mock.mock_open(),
+1 -11
View File
@@ -18,7 +18,6 @@ import asyncio
import logging
import os
import sys
import uuid
import zaza.charm_lifecycle.configure as configure
import zaza.charm_lifecycle.destroy as destroy
@@ -28,15 +27,6 @@ import zaza.charm_lifecycle.deploy as deploy
import zaza.charm_lifecycle.test as test
def generate_model_name():
"""Generate a unique model name.
:returns: Model name
:rtype: str
"""
return 'zaza-{}'.format(str(uuid.uuid4())[-12:])
def func_test_runner(keep_model=False, smoke=False, dev=False, bundle=None):
"""Deploy the bundles and run the tests as defined by the charms tests.yaml.
@@ -60,7 +50,7 @@ def func_test_runner(keep_model=False, smoke=False, dev=False, bundle=None):
bundles = test_config[bundle_key]
last_test = bundles[-1]
for t in bundles:
model_name = generate_model_name()
model_name = utils.generate_model_name()
# Prepare
prepare.prepare(model_name)
# Deploy
+5 -2
View File
@@ -22,6 +22,8 @@ import sys
import zaza.controller
import zaza.model
import zaza.charm_lifecycle.utils as utils
MODEL_DEFAULTS = {
# Model defaults from charm-test-infra
# https://jujucharms.com/docs/2.1/models-config
@@ -103,11 +105,11 @@ def parse_args(args):
:rtype: Namespace
"""
parser = argparse.ArgumentParser()
parser.add_argument('-m', '--model-name', help='Name of model to add',
required=True)
parser.add_argument('-m', '--model-name', help='Name of model to add')
parser.add_argument('--log', dest='loglevel',
help='Loglevel [DEBUG|INFO|WARN|ERROR|CRITICAL]')
parser.set_defaults(loglevel='INFO')
parser.set_defaults(model_name=utils.generate_model_name())
return parser.parse_args(args)
@@ -118,4 +120,5 @@ def main():
if not isinstance(level, int):
raise ValueError('Invalid log level: "{}"'.format(args.loglevel))
logging.basicConfig(level=level)
print('model_name: {}'.format(args.model_name))
prepare(args.model_name)
+10
View File
@@ -14,6 +14,7 @@
"""Utilities to support running lifecycle phases."""
import importlib
import uuid
import yaml
BUNDLE_DIR = "./tests/bundles/"
@@ -49,3 +50,12 @@ def get_class(class_str):
class_name = class_str.split('.')[-1]
module = importlib.import_module(module_name)
return getattr(module, class_name)
def generate_model_name():
"""Generate a unique model name.
:returns: Model name
:rtype: str
"""
return 'zaza-{}'.format(str(uuid.uuid4())[-12:])