Merge pull request #138 from fnordahl/issue/137
functest-prepare: auto-generate model name when not provided
This commit is contained in:
@@ -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(),
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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:])
|
||||
|
||||
Reference in New Issue
Block a user