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")
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)
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)
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)
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)
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")