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 test_event_context_vars_multiple_deploys(self): env_deployment = lc_utils.EnvironmentDeploy( name='default1', model_deploys=[ lc_utils.ModelDeploy(model_alias='default_alias', model_name='zaza-b9413598c856', bundle='conncheck-focal'), lc_utils.ModelDeploy(model_alias='default_alias2', model_name='zaza-interesting', bundle='conncheck-bionic') ], run_in_series=True) self.assertEqual(notifications.event_context_vars(env_deployment), { 'bundle': 'default1', 'date': '42000000us' })
def test_get_environment_deploy_single_aliased(self): self.patch_object(lc_utils, 'generate_model_name', return_value='zaza-model-1') self.patch_object(lc_utils, 'get_default_env_deploy_name', return_value='env-alias-1') expect = lc_utils.EnvironmentDeploy( 'env-alias-1', [lc_utils.ModelDeploy('alias', 'zaza-model-1', 'bundle')], True) self.assertEqual( lc_utils.get_environment_deploy_single_aliased({'alias': 'bundle'}), expect)
def setUp(self): super().setUp() self.patch_object(notifications, 'logger', name='mock_logger') self.patch_object(notifications, 'subscribe', name='mock_subscribe') self.patch_object(notifications, 'get_option', name='mock_get_option') self.patch('tempfile.gettempdir', name='mock_gettempdir') self.mock_gettempdir.return_value = '/some/tmp' self.patch('tempfile.TemporaryDirectory', name='mock_TemporaryDirectory') self.mock_TemporaryDirectory.return_value = '/a/tmp-zaza-events' self.patch_object(notifications, 'Path', name='mock_Path', new=mock.MagicMock()) self.ev = notifications.EventsPlugin('env-deployments') self._options = { 'zaza-events.keep-logs': False, 'zaza-events.log-collection-name': 'some-logs', 'zaza-events.collection-description': 'nice-description', 'zaza-events.modules': [], 'zaza-events.raise-exceptions': False, } self.mock_get_option.side_effect = self._get_option self.patch_object(notifications.utils, 'get_class', name='mock_get_class', new=mock.MagicMock()) self.mock_collection = mock.Mock() self.patch_object(notifications.ze_collection, 'get_collection', name='mock_get_collection') self.mock_get_collection.return_value = self.mock_collection self.patch_object(notifications, 'get_global_event_logger_instance', name='mock_get_global_event_logger_instance') self.mock_events = mock.Mock() self.mock_get_global_event_logger_instance.return_value = ( self.mock_events) self.env_deployment = lc_utils.EnvironmentDeploy( name='default1', model_deploys=[ lc_utils.ModelDeploy(model_alias='default_alias', model_name='zaza-b9413598c856', bundle='conncheck-focal') ], run_in_series=True) self.patch('datetime.datetime', name='mock_datetime', spec=datetime.datetime) self.mock_datetime.now().timestamp.return_value = 42
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)