summaryrefslogtreecommitdiff
path: root/tests/cloud_tests/snapshots
diff options
context:
space:
mode:
authorWesley Wiedenmeier <wesley.wiedenmeier@gmail.com>2017-06-08 18:23:31 -0400
committerScott Moser <smoser@brickies.net>2017-06-08 18:24:17 -0400
commit76d58265e34851b78e952a7f275340863c90a9f5 (patch)
tree91bf17879724b180e43bff07e428bb9089cbb395 /tests/cloud_tests/snapshots
parentad2680a689ab78847ccce7766d6591797d99e219 (diff)
downloadvyos-cloud-init-76d58265e34851b78e952a7f275340863c90a9f5.tar.gz
vyos-cloud-init-76d58265e34851b78e952a7f275340863c90a9f5.zip
Integration Testing: tox env, pyxld 2.2.3, and revamp framework
Massive update to clean up and greatly enhance the integration testing framework developed by Wesley Wiedenmeier. - Updated tox environment to run integration test 'citest' to utilize pylxd 2.2.3 - Add support for distro feature flags - add framework for feature flags to release config with feature groups and overrides allowed in any release conf override level - add support for feature flags in platform and config handling - during collect, skip testcases that require features not supported by the image with a warning message - Enable additional distros (i.e. centos, debian) - Add 'bddeb' command to build a deb from the current working tree cleanly in a container, so deps do not have to be installed on host - Adds a command line option '--preserve-data' that ensures that collected data will be left after tests run. This also allows the directory to store collected data in during the run command to be specified using '--data-dir'. - Updated Read the Docs testing page and doc strings for pep 257 compliance
Diffstat (limited to 'tests/cloud_tests/snapshots')
-rw-r--r--tests/cloud_tests/snapshots/__init__.py6
-rw-r--r--tests/cloud_tests/snapshots/base.py43
-rw-r--r--tests/cloud_tests/snapshots/lxd.py51
3 files changed, 52 insertions, 48 deletions
diff --git a/tests/cloud_tests/snapshots/__init__.py b/tests/cloud_tests/snapshots/__init__.py
index 2ab654de..93a54f5e 100644
--- a/tests/cloud_tests/snapshots/__init__.py
+++ b/tests/cloud_tests/snapshots/__init__.py
@@ -1,10 +1,10 @@
# This file is part of cloud-init. See LICENSE file for license information.
+"""Main init."""
+
def get_snapshot(image):
- """
- get snapshot from image
- """
+ """Get snapshot from image."""
return image.snapshot()
# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/snapshots/base.py b/tests/cloud_tests/snapshots/base.py
index d715f037..94328982 100644
--- a/tests/cloud_tests/snapshots/base.py
+++ b/tests/cloud_tests/snapshots/base.py
@@ -1,44 +1,45 @@
# This file is part of cloud-init. See LICENSE file for license information.
+"""Base snapshot."""
+
class Snapshot(object):
- """
- Base class for snapshots
- """
+ """Base class for snapshots."""
+
platform_name = None
- def __init__(self, properties, config):
- """
- Set up snapshot
+ def __init__(self, platform, properties, config, features):
+ """Set up snapshot.
+
+ @param platform: platform object
+ @param properties: image properties
+ @param config: image config
+ @param features: supported feature flags
"""
+ self.platform = platform
self.properties = properties
self.config = config
+ self.features = features
def __str__(self):
- """
- a brief description of the snapshot
- """
+ """A brief description of the snapshot."""
return '-'.join((self.properties['os'], self.properties['release']))
def launch(self, user_data, meta_data=None, block=True, start=True,
use_desc=None):
- """
- launch instance
-
- user_data: user-data for the instance
- instance_id: instance-id for the instance
- block: wait until instance is created
- start: start instance and wait until fully started
- use_desc: description of snapshot instance use
+ """Launch instance.
- return_value: an Instance
+ @param user_data: user-data for the instance
+ @param instance_id: instance-id for the instance
+ @param block: wait until instance is created
+ @param start: start instance and wait until fully started
+ @param use_desc: description of snapshot instance use
+ @return_value: an Instance
"""
raise NotImplementedError
def destroy(self):
- """
- Clean up snapshot data
- """
+ """Clean up snapshot data."""
pass
# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/snapshots/lxd.py b/tests/cloud_tests/snapshots/lxd.py
index eabbce3f..39c55c5e 100644
--- a/tests/cloud_tests/snapshots/lxd.py
+++ b/tests/cloud_tests/snapshots/lxd.py
@@ -1,49 +1,52 @@
# This file is part of cloud-init. See LICENSE file for license information.
+"""Base LXD snapshot."""
+
from tests.cloud_tests.snapshots import base
class LXDSnapshot(base.Snapshot):
- """
- LXD image copy backed snapshot
- """
+ """LXD image copy backed snapshot."""
+
platform_name = "lxd"
- def __init__(self, properties, config, platform, pylxd_frozen_instance):
- """
- Set up snapshot
+ def __init__(self, platform, properties, config, features,
+ pylxd_frozen_instance):
+ """Set up snapshot.
+
+ @param platform: platform object
+ @param properties: image properties
+ @param config: image config
+ @param features: supported feature flags
"""
- self.platform = platform
self.pylxd_frozen_instance = pylxd_frozen_instance
- super(LXDSnapshot, self).__init__(properties, config)
+ super(LXDSnapshot, self).__init__(
+ platform, properties, config, features)
def launch(self, user_data, meta_data=None, block=True, start=True,
use_desc=None):
- """
- launch instance
-
- user_data: user-data for the instance
- instance_id: instance-id for the instance
- block: wait until instance is created
- start: start instance and wait until fully started
- use_desc: description of snapshot instance use
-
- return_value: an Instance
+ """Launch instance.
+
+ @param user_data: user-data for the instance
+ @param instance_id: instance-id for the instance
+ @param block: wait until instance is created
+ @param start: start instance and wait until fully started
+ @param use_desc: description of snapshot instance use
+ @return_value: an Instance
"""
inst_config = {'user.user-data': user_data}
if meta_data:
inst_config['user.meta-data'] = meta_data
instance = self.platform.launch_container(
- container=self.pylxd_frozen_instance.name, config=inst_config,
- block=block, image_desc=str(self), use_desc=use_desc)
+ self.properties, self.config, self.features, block=block,
+ image_desc=str(self), container=self.pylxd_frozen_instance.name,
+ use_desc=use_desc, container_config=inst_config)
if start:
- instance.start(wait=True, wait_time=self.config.get('timeout'))
+ instance.start()
return instance
def destroy(self):
- """
- Clean up snapshot data
- """
+ """Clean up snapshot data."""
self.pylxd_frozen_instance.destroy()
super(LXDSnapshot, self).destroy()