From 76d58265e34851b78e952a7f275340863c90a9f5 Mon Sep 17 00:00:00 2001 From: Wesley Wiedenmeier Date: Thu, 8 Jun 2017 18:23:31 -0400 Subject: 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 --- tests/cloud_tests/__main__.py | 45 ++++++++++--------------------------------- 1 file changed, 10 insertions(+), 35 deletions(-) (limited to 'tests/cloud_tests/__main__.py') diff --git a/tests/cloud_tests/__main__.py b/tests/cloud_tests/__main__.py index ed654ad3..260ddb3f 100644 --- a/tests/cloud_tests/__main__.py +++ b/tests/cloud_tests/__main__.py @@ -1,19 +1,17 @@ # This file is part of cloud-init. See LICENSE file for license information. +"""Main entry point.""" + import argparse import logging -import shutil import sys -import tempfile -from tests.cloud_tests import (args, collect, manage, verify) +from tests.cloud_tests import args, bddeb, collect, manage, run_funcs, verify from tests.cloud_tests import LOG def configure_log(args): - """ - configure logging - """ + """Configure logging.""" level = logging.INFO if args.verbose: level = logging.DEBUG @@ -22,41 +20,15 @@ def configure_log(args): LOG.setLevel(level) -def run(args): - """ - run full test suite - """ - failed = 0 - args.data_dir = tempfile.mkdtemp(prefix='cloud_test_data_') - LOG.debug('using tmpdir %s', args.data_dir) - try: - failed += collect.collect(args) - failed += verify.verify(args) - except Exception: - failed += 1 - raise - finally: - # TODO: make this configurable via environ or cmdline - if failed: - LOG.warning('some tests failed, leaving data in %s', args.data_dir) - else: - shutil.rmtree(args.data_dir) - return failed - - def main(): - """ - entry point for cloud test suite - """ + """Entry point for cloud test suite.""" # configure parser parser = argparse.ArgumentParser(prog='cloud_tests') subparsers = parser.add_subparsers(dest="subcmd") subparsers.required = True def add_subparser(name, description, arg_sets): - """ - add arguments to subparser - """ + """Add arguments to subparser.""" subparser = subparsers.add_parser(name, help=description) for (_args, _kwargs) in (a for arg_set in arg_sets for a in arg_set): subparser.add_argument(*_args, **_kwargs) @@ -80,9 +52,12 @@ def main(): # run handler LOG.debug('running with args: %s\n', parsed) return { + 'bddeb': bddeb.bddeb, 'collect': collect.collect, 'create': manage.create, - 'run': run, + 'run': run_funcs.run, + 'tree_collect': run_funcs.tree_collect, + 'tree_run': run_funcs.tree_run, 'verify': verify.verify, }[parsed.subcmd](parsed) -- cgit v1.2.3