Пример #1
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)
 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
Пример #5
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)