From 86afbaf929e53f218e649cf754250a2f83946cf0 Mon Sep 17 00:00:00 2001 From: Anders Ingemann Date: Tue, 25 Nov 2014 22:45:03 +0100 Subject: [PATCH] Clean up integration testing --- build_settings.yml | 3 +++ tests/integration/__init__.py | 11 ++------ tests/integration/manifests/__init__.py | 15 +++++++++++ tests/integration/manifests/stable64.yml | 4 +++ tests/integration/tools/__init__.py | 13 +++++++++- tests/integration/virtualbox_tests.py | 33 ++++++++++++------------ tox.ini | 2 +- 7 files changed, 54 insertions(+), 27 deletions(-) create mode 100644 build_settings.yml create mode 100644 tests/integration/manifests/__init__.py create mode 100644 tests/integration/manifests/stable64.yml diff --git a/build_settings.yml b/build_settings.yml new file mode 100644 index 0000000..87b0ba2 --- /dev/null +++ b/build_settings.yml @@ -0,0 +1,3 @@ +--- +virtualbox: + guest_additions: /root/images/VBoxGuestAdditions.iso diff --git a/tests/integration/__init__.py b/tests/integration/__init__.py index 04befef..ed30250 100644 --- a/tests/integration/__init__.py +++ b/tests/integration/__init__.py @@ -1,11 +1,4 @@ -import os.path from bootstrapvz.common.tools import load_data -partial_manifests_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'manifests') -import glob -partial_yaml = glob.glob(os.path.join(partial_manifests_path, '*.yml')) -partial_json = glob.glob(os.path.join(partial_manifests_path, '*.json')) -manifests = {} -for path in partial_yaml + partial_json: - manifests[os.path.basename(path)] = load_data(path) -build_settings = load_data(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'build_settings.yml')) +# tox makes sure that the cwd is the project root +build_settings = load_data('build_settings.yml') diff --git a/tests/integration/manifests/__init__.py b/tests/integration/manifests/__init__.py new file mode 100644 index 0000000..7d84774 --- /dev/null +++ b/tests/integration/manifests/__init__.py @@ -0,0 +1,15 @@ +import os.path +import glob +from bootstrapvz.common.tools import load_data + +partial_json = glob.glob(os.path.join(os.path.dirname(__file__), '*.yml')) +partial_yaml = glob.glob(os.path.join(os.path.dirname(__file__), '*.json')) + +def dictkey(path): + return +# yaml overrides json +partials = {} +for path in partial_json + partial_yaml: + key = os.path.splitext(os.path.basename(path))[0] + partials[key] = load_data(path) + diff --git a/tests/integration/manifests/stable64.yml b/tests/integration/manifests/stable64.yml new file mode 100644 index 0000000..4489269 --- /dev/null +++ b/tests/integration/manifests/stable64.yml @@ -0,0 +1,4 @@ +--- +system: + release: wheezy + architecture: amd64 diff --git a/tests/integration/tools/__init__.py b/tests/integration/tools/__init__.py index 0c9f002..d057444 100644 --- a/tests/integration/tools/__init__.py +++ b/tests/integration/tools/__init__.py @@ -1,4 +1,6 @@ +from bootstrapvz.common.tools import load_data +build_servers = load_data('build_servers.yml') # Snatched from here: http://stackoverflow.com/a/7205107 def merge_dicts(*args): @@ -19,11 +21,20 @@ def merge_dicts(*args): return reduce(merge, args, {}) -def bootstrap(manifest, build_settings): +def bootstrap(manifest): # if 'build_host' in build_settings: # run = get_remote_run(build_settings) # else: # run = __import__('bootstrapvz.base.run') # run(manifest) + from bootstrapvz.base.remote.remote import run + run(manifest, + build_servers['virtualbox'], + debug=True, + dry_run=True) + from ..image import Image return Image() + +def test_instance(instance): + pass diff --git a/tests/integration/virtualbox_tests.py b/tests/integration/virtualbox_tests.py index d3b317b..3fc641a 100644 --- a/tests/integration/virtualbox_tests.py +++ b/tests/integration/virtualbox_tests.py @@ -1,28 +1,29 @@ import tools -from . import manifests +from manifests import partials from . import build_settings def test_virtualbox_unpartitioned_extlinux(): - specific_settings = {} - specific_settings['provider'] = {'name': 'virtualbox', - 'guest_additions': build_settings['virtualbox']['guest_additions']} - specific_settings['system'] = {'release': 'wheezy', - 'architecture': 'amd64', - 'bootloader': 'extlinux'} - specific_settings['volume'] = {'backing': 'vdi', - 'partitions': {'type': 'msdos'}} - manifest = tools.merge_dicts(manifests['base'], manifests['unpartitioned'], specific_settings) + import yaml + specific_settings = yaml.load(""" +provider: + name: virtualbox + guest_additions: {guest_additions} +system: + bootloader: extlinux +volume: + backing: vdi + partitions: + type: msdos +""".format(guest_additions=build_settings['virtualbox']['guest_additions'])) + manifest = tools.merge_dicts(partials['base'], partials['stable64'], + partials['unpartitioned'], specific_settings) - client = tools.get_client(build_settings['virtualbox']) - - image = client.bootstrap(manifest, build_settings['virtualbox']) + image = tools.bootstrap(manifest) instance = image.create_instance() instance.boot() - tools.test_instance(instance, build_settings['virtualbox']) + tools.test_instance(instance) instance.destroy() image.destroy() - - client.shutdown() diff --git a/tox.ini b/tox.ini index 122ee83..660e716 100644 --- a/tox.ini +++ b/tox.ini @@ -3,7 +3,7 @@ ignore = E101,E221,E241,E501,W191 max-line-length = 110 [tox] -envlist = flake8, integration +envlist = flake8, unit [testenv:flake8] deps = flake8