diff options
author | Chad Smith <chad.smith@canonical.com> | 2018-06-12 10:14:07 -0600 |
---|---|---|
committer | Chad Smith <chad.smith@canonical.com> | 2018-06-12 10:14:07 -0600 |
commit | 7b3c21615dac3b0d9163c9883309a2e7b675622a (patch) | |
tree | c9a29bea0a1677d651861eaa9a93e6f44a60598c /tests | |
parent | c3f1ad9abd4a28c1b4c1f34db28ac72a646cdca6 (diff) | |
download | vyos-cloud-init-7b3c21615dac3b0d9163c9883309a2e7b675622a.tar.gz vyos-cloud-init-7b3c21615dac3b0d9163c9883309a2e7b675622a.zip |
test: add optional --preserve-instance arg to integraiton tests
By default, integration tests destroy the test instances after each
test run. To aid debug and development of integration tests, support a
--preserve-instance argument which will leave the modified test instance
in a stopped state for further debug.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/cloud_tests/args.py | 3 | ||||
-rw-r--r-- | tests/cloud_tests/collect.py | 3 | ||||
-rw-r--r-- | tests/cloud_tests/stage.py | 15 |
3 files changed, 17 insertions, 4 deletions
diff --git a/tests/cloud_tests/args.py b/tests/cloud_tests/args.py index c6c1877b..ab345491 100644 --- a/tests/cloud_tests/args.py +++ b/tests/cloud_tests/args.py @@ -62,6 +62,9 @@ ARG_SETS = { (('-d', '--data-dir'), {'help': 'directory to store test data in', 'action': 'store', 'metavar': 'DIR', 'required': False}), + (('--preserve-instance',), + {'help': 'do not destroy the instance under test', + 'action': 'store_true', 'default': False, 'required': False}), (('--preserve-data',), {'help': 'do not remove collected data after successful run', 'action': 'store_true', 'default': False, 'required': False}),), diff --git a/tests/cloud_tests/collect.py b/tests/cloud_tests/collect.py index 78263bf5..75b50616 100644 --- a/tests/cloud_tests/collect.py +++ b/tests/cloud_tests/collect.py @@ -93,7 +93,8 @@ def collect_test_data(args, snapshot, os_name, test_name): # create test instance component = PlatformComponent( partial(platforms.get_instance, snapshot, user_data, - block=True, start=False, use_desc=test_name)) + block=True, start=False, use_desc=test_name), + preserve_instance=args.preserve_instance) LOG.info('collecting test data for test: %s', test_name) with component as instance: diff --git a/tests/cloud_tests/stage.py b/tests/cloud_tests/stage.py index 74a7d46d..d64a1dcc 100644 --- a/tests/cloud_tests/stage.py +++ b/tests/cloud_tests/stage.py @@ -12,9 +12,15 @@ from tests.cloud_tests import LOG class PlatformComponent(object): """Context manager to safely handle platform components.""" - def __init__(self, get_func): - """Store get_<platform component> function as partial with no args.""" + def __init__(self, get_func, preserve_instance=False): + """Store get_<platform component> function as partial with no args. + + @param get_func: Callable returning an instance from the platform. + @param preserve_instance: Boolean, when True, do not destroy instance + after test. Used for test development. + """ self.get_func = get_func + self.preserve_instance = preserve_instance def __enter__(self): """Create instance of platform component.""" @@ -24,7 +30,10 @@ class PlatformComponent(object): def __exit__(self, etype, value, trace): """Destroy instance.""" if self.instance is not None: - self.instance.destroy() + if self.preserve_instance: + LOG.info('Preserving test instance %s', self.instance.name) + else: + self.instance.destroy() def run_single(name, call): |