Ejemplo n.º 1
0
    def test_generate_model_name(self, get_setup_file_contents):
        get_setup_file_contents.return_value = {}
        self.patch_object(lc_utils.uuid, "uuid4")
        self.uuid4.return_value = "longer-than-12characters"
        self.assertEqual(lc_utils.generate_model_name(), "zaza-12characters")

        get_setup_file_contents.return_value = {'model_name': 'mymodel-$UUID'}
        self.assertEqual(lc_utils.generate_model_name(),
                         "mymodel-12characters")
Ejemplo n.º 2
0
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.

    :param keep_model: Whether to destroy model at end of run
    :type keep_model: boolean
    :param smoke: Whether to just run smoke test.
    :param dev: Whether to just run dev test.
    :type smoke: boolean
    :type dev: boolean
    """
    if bundle:
        environment_deploys = [
            utils.EnvironmentDeploy(
                'default',
                [utils.ModelDeploy(
                    utils.DEFAULT_MODEL_ALIAS,
                    utils.generate_model_name(),
                    bundle)],
                True)]
    else:
        if smoke:
            bundle_key = 'smoke_bundles'
        elif dev:
            bundle_key = 'dev_bundles'
        else:
            bundle_key = 'gate_bundles'
        environment_deploys = utils.get_environment_deploys(bundle_key)
    last_test = environment_deploys[-1].name

    for env_deployment in environment_deploys:
        preserve_model = False
        if keep_model and last_test == env_deployment.name:
            preserve_model = True
        run_env_deployment(env_deployment, keep_model=preserve_model)
Ejemplo n.º 3
0
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.

    :param keep_model: Whether to destroy model at end of run
    :type keep_model: boolean
    :param smoke: Whether to just run smoke test.
    :param dev: Whether to just run dev test.
    :type smoke: boolean
    :type dev: boolean
    """
    if bundle:
        bundles = [{utils.DEFAULT_MODEL_ALIAS: bundle}]
    else:
        if smoke:
            bundle_key = 'smoke_bundles'
        elif dev:
            bundle_key = 'dev_bundles'
        else:
            bundle_key = 'gate_bundles'
        bundles = utils.get_test_bundles(bundle_key)
    last_test = bundles[-1]
    config_steps = utils.get_config_steps()
    test_steps = utils.get_test_steps()
    for bundle in bundles:
        model_aliases = {}
        for model_alias in sorted(bundle.keys()):
            model_name = utils.generate_model_name()
            # Prepare
            prepare.prepare(model_name)
            model_aliases[model_alias] = model_name
        for model_alias, model_name in model_aliases.items():
            # TODO Deploys should run in parallel
            # Deploy
            deploy.deploy(
                os.path.join(
                    utils.BUNDLE_DIR, '{}.yaml'.format(bundle[model_alias])),
                model_aliases[model_alias])
        for model_alias, model_name in model_aliases.items():
            configure.configure(
                model_name,
                config_steps.get(model_alias, []))
        # Test
        for model_alias, model_name in model_aliases.items():
            test.test(
                model_name,
                test_steps.get(model_alias, []))
        # Destroy
        # Keep the model from the last run if keep_model is true, this is to
        # maintian compat with osci and should change when the zaza collect
        # functions take over from osci for artifact collection.
        if keep_model and bundle == last_test:
            pass
        else:
            for model_name in model_aliases.values():
                destroy.destroy(model_name)
Ejemplo n.º 4
0
def func_test_runner(keep_model=False,
                     smoke=False,
                     dev=False,
                     bundle=None,
                     force=False,
                     test_directory=None):
    """Deploy the bundles and run the tests as defined by the charms tests.yaml.

    :param keep_model: Whether to destroy model at end of run
    :type keep_model: boolean
    :param smoke: Whether to just run smoke test.
    :param dev: Whether to just run dev test.
    :type smoke: boolean
    :type dev: boolean
    :param force: Pass the force parameter if True to the juju deploy command
    :type force: Boolean
    :param test_directory: Set the directory containing tests.yaml and bundles.
    :type test_directory: str
    """
    utils.set_base_test_dir(test_dir=test_directory)
    if bundle:
        if ':' in bundle:
            model_alias, bundle = bundle.split(':')
        else:
            model_alias = utils.DEFAULT_MODEL_ALIAS
        environment_deploys = [
            utils.EnvironmentDeploy('default', [
                utils.ModelDeploy(model_alias.strip(),
                                  utils.generate_model_name(), bundle.strip())
            ], True)
        ]
    else:
        if smoke:
            bundle_key = 'smoke_bundles'
        elif dev:
            bundle_key = 'dev_bundles'
        else:
            bundle_key = 'gate_bundles'
        environment_deploys = utils.get_environment_deploys(bundle_key)
    last_test = environment_deploys[-1].name

    for env_deployment in environment_deploys:
        preserve_model = False
        if keep_model and last_test == env_deployment.name:
            preserve_model = True
        run_env_deployment(env_deployment,
                           keep_model=preserve_model,
                           force=force,
                           test_directory=test_directory)
Ejemplo n.º 5
0
def parse_args(args):
    """Parse command line arguments.

    :param args: List of configure functions functions
    :type list: [str1, str2,...] List of command line arguments
    :returns: Parsed arguments
    :rtype: Namespace
    """
    parser = argparse.ArgumentParser()
    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)
Ejemplo n.º 6
0
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.

    :param keep_model: Whether to destroy model at end of run
    :type keep_model: boolean
    :param smoke: Whether to just run smoke test.
    :param dev: Whether to just run dev test.
    :type smoke: boolean
    :type dev: boolean
    """
    test_config = utils.get_charm_config()
    if bundle:
        bundles = [bundle]
    else:
        if smoke:
            bundle_key = 'smoke_bundles'
        elif dev:
            bundle_key = 'dev_bundles'
        else:
            bundle_key = 'gate_bundles'
        bundles = test_config[bundle_key]
    last_test = bundles[-1]
    for t in bundles:
        model_name = utils.generate_model_name()
        # Prepare
        prepare.prepare(model_name)
        # Deploy
        deploy.deploy(os.path.join(utils.BUNDLE_DIR, '{}.yaml'.format(t)),
                      model_name)
        if 'configure' in test_config:
            # Configure
            configure.configure(model_name, test_config['configure'])
        # Test
        test.test(model_name, test_config['tests'])
        # Destroy
        # Keep the model from the last run if keep_model is true, this is to
        # maintian compat with osci and should change when the zaza collect
        # functions take over from osci for artifact collection.
        if keep_model and t == last_test:
            pass
        else:
            destroy.destroy(model_name)
 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")