Пример #1
0
    def test_preprocess(self, mock_osclients, mock_scenario_get):

        name = "some_plugin"

        context = {
            "a": 1,
            "b": 2,
            "admin": {"endpoint": mock.MagicMock()}
        }
        args = {"a": 10, "b": 20}

        class Preprocessor(types.ResourceType):

            @classmethod
            def transform(cls, clients, resource_config):
                return resource_config * 2

        mock_scenario_get.return_value._meta_get.return_value = {
            "a": Preprocessor
        }

        result = types.preprocess(name, context, args)
        mock_scenario_get.assert_called_once_with(name)
        mock_scenario_get.return_value._meta_get.assert_called_once_with(
            "preprocessors", default={})
        mock_osclients.Clients.assert_called_once_with(
            context["admin"]["endpoint"])
        self.assertEqual({"a": 20, "b": 20}, result)
Пример #2
0
    def test_convert_multiple(self, mock_resource_type_get):
        resourcetype_classes = {"bar": mock.Mock(), "baz": mock.Mock()}

        def _get_resource_type(name):
            # cut "test_" prefix
            name = name[5:]
            if name in resourcetype_classes:
                return resourcetype_classes[name]
            self.fail("The unexpected resource class tried to be used.")

        mock_resource_type_get.side_effect = _get_resource_type

        ctx = mock.MagicMock()
        scenario_args = {"bar": "bar_config", "baz": "baz_config"}
        processed_args = types.preprocess(
            "FakeConvertPlugin.two_args", ctx, scenario_args)

        mock_resource_type_get.assert_has_calls([mock.call("test_bar"),
                                                 mock.call("test_baz")],
                                                any_order=True)

        expected_dict = {}
        for resourcetype_n, resourcetype_cls in resourcetype_classes.items():
            resourcetype_cls.assert_called_once_with(ctx, {})
            resourcetype_obj = resourcetype_cls.return_value
            resourcetype_obj.pre_process.assert_called_once_with(
                resource_spec=scenario_args[resourcetype_n],
                config={"type": "test_%s" % resourcetype_n})
            return_value = resourcetype_obj.pre_process.return_value
            expected_dict[resourcetype_n] = return_value

        self.assertDictEqual(expected_dict, processed_args)
Пример #3
0
    def test_preprocess(self, mock_osclients, mock_scenario_get):

        name = "some_plugin"

        context = {
            "a": 1,
            "b": 2,
            "admin": {"credential": mock.MagicMock()}
        }
        args = {"a": 10, "b": 20}

        class Preprocessor(types.ResourceType):

            @classmethod
            def transform(cls, clients, resource_config):
                return resource_config * 2

        mock_scenario_get.return_value._meta_get.return_value = {
            "a": Preprocessor
        }

        result = types.preprocess(name, context, args)
        mock_scenario_get.assert_called_once_with(name)
        mock_scenario_get.return_value._meta_get.assert_called_once_with(
            "preprocessors", default={})
        mock_osclients.Clients.assert_called_once_with(
            context["admin"]["credential"])
        self.assertEqual({"a": 20, "b": 20}, result)
Пример #4
0
    def test_preprocess(self, mock_scenario_get):

        name = "some_plugin"
        type_name = "%s_type" % self.id()

        context = {
            "a": 1,
            "b": 2,
        }
        args = {"a": 10, "b": 20}

        @plugin.configure(type_name)
        class SomeType(types.ResourceType):

            def pre_process(self, resource_spec, config):
                return resource_spec * 2

        mock_scenario_get.return_value._meta_get.return_value = {
            "a": {"type": type_name}
        }

        result = types.preprocess(name, context, args)
        mock_scenario_get.assert_called_once_with(name)
        mock_scenario_get.return_value._meta_get.assert_called_once_with(
            "preprocessors", default={})
        self.assertEqual({"a": 20, "b": 20}, result)
Пример #5
0
    def test_convert_multiple(self, mock_resource_type_get):
        resourcetype_classes = {"bar": mock.Mock(), "baz": mock.Mock()}

        def _get_resource_type(name):
            # cut "test_" prefix
            name = name[5:]
            if name in resourcetype_classes:
                return resourcetype_classes[name]
            self.fail("The unexpected resource class tried to be used.")

        mock_resource_type_get.side_effect = _get_resource_type

        ctx = mock.MagicMock()
        scenario_args = {"bar": "bar_config", "baz": "baz_config"}
        processed_args = types.preprocess(
            "FakeConvertPlugin.two_args", ctx, scenario_args)

        mock_resource_type_get.assert_has_calls([mock.call("test_bar"),
                                                 mock.call("test_baz")],
                                                any_order=True)

        expected_dict = {}
        for resourcetype_n, resourcetype_cls in resourcetype_classes.items():
            resourcetype_cls.assert_called_once_with(ctx, {})
            resourcetype_obj = resourcetype_cls.return_value
            resourcetype_obj.pre_process.assert_called_once_with(
                resource_spec=scenario_args[resourcetype_n],
                config={"type": "test_%s" % resourcetype_n})
            return_value = resourcetype_obj.pre_process.return_value
            expected_dict[resourcetype_n] = return_value

        self.assertDictEqual(expected_dict, processed_args)
Пример #6
0
    def test_preprocess(self, mock_scenario_get):

        name = "some_plugin"
        type_name = "%s_type" % self.id()

        context = {
            "a": 1,
            "b": 2,
        }
        args = {"a": 10, "b": 20}

        @plugin.configure(type_name)
        class SomeType(types.ResourceType):

            def pre_process(self, resource_spec, config):
                return resource_spec * 2

        mock_scenario_get.return_value._meta_get.return_value = {
            "a": {"type": type_name}
        }

        result = types.preprocess(name, context, args)
        mock_scenario_get.assert_called_once_with(name)
        mock_scenario_get.return_value._meta_get.assert_called_once_with(
            "preprocessors", default={})
        self.assertEqual({"a": 20, "b": 20}, result)
Пример #7
0
 def test_convert(self, mock_resource_type_get):
     mock_transform = mock_resource_type_get.return_value.transform
     args = types.preprocess("TestConvertPlugin.one_arg", mock.MagicMock(),
                             {"bar": "bar_config"})
     mock_resource_type_get.assert_called_once_with("test_bar")
     mock_transform.assert_called_once_with(clients=mock.ANY,
                                            resource_config="bar_config")
     self.assertDictEqual(args, {"bar": mock_transform.return_value})
Пример #8
0
 def test_convert(self, mock_resource_type_get):
     mock_transform = mock_resource_type_get.return_value.transform
     args = types.preprocess("TestConvertPlugin.one_arg",
                             mock.MagicMock(),
                             {"bar": "bar_config"})
     mock_resource_type_get.assert_called_once_with("test_bar")
     mock_transform.assert_called_once_with(clients=mock.ANY,
                                            resource_config="bar_config")
     self.assertDictEqual(args, {"bar": mock_transform.return_value})
Пример #9
0
    def run(self, name, context, args):
        scenario_plugin = scenario.Scenario.get(name)

        # NOTE(boris-42): processing @types decorators
        args = types.preprocess(name, context, args)

        with rutils.Timer() as timer:
            # TODO(boris-42): remove method_name argument, now it's always run
            self._run_scenario(scenario_plugin, "run", context, args)

        self.run_duration = timer.duration()
Пример #10
0
    def run(self, name, context, args):
        cls_name, method_name = name.split(".", 1)
        cls = scenario.Scenario.get(name)._meta_get("cls_ref")

        # NOTE(boris-42): processing @types decorators
        args = types.preprocess(name, context, args)

        with rutils.Timer() as timer:
            self._run_scenario(cls, method_name, context, args)

        self.run_duration = timer.duration()
Пример #11
0
    def run(self, name, context, args):
        cls_name, method_name = name.split(".", 1)
        cls = scenario.Scenario.get(name)._meta_get("cls_ref")

        # NOTE(boris-42): processing @types decorators
        args = types.preprocess(name, context, args)

        with rutils.Timer() as timer:
            self._run_scenario(cls, method_name, context, args)

        self.run_duration = timer.duration()
Пример #12
0
    def run(self, name, context, args):
        scenario_plugin = scenario.Scenario.get(name)

        # NOTE(boris-42): processing @types decorators
        args = types.preprocess(name, context, args)

        with rutils.Timer() as timer:
            # TODO(boris-42): remove method_name argument, now it's always run
            self._run_scenario(scenario_plugin, "run", context, args)

        self.run_duration = timer.duration()
Пример #13
0
    def run(self, name, context, args):
        cls_name, method_name = name.split(".", 1)
        cls = scenario_base.Scenario.get_by_name(cls_name)

        self.aborted.clear()

        # NOTE(boris-42): processing @types decorators
        args = types.preprocess(cls, method_name, context, args)

        with rutils.Timer() as timer:
            self._run_scenario(cls, method_name, context, args)
        return timer.duration()
Пример #14
0
 def test_convert(self, mock_resource_type_get):
     ctx = mock.MagicMock()
     args = types.preprocess("FakeConvertPlugin.one_arg", ctx,
                             {"bar": "bar_config"})
     mock_resource_type_get.assert_called_once_with("test_bar")
     resourcetype_cls = mock_resource_type_get.return_value
     resourcetype_cls.assert_called_once_with(ctx, {})
     resourcetype_obj = resourcetype_cls.return_value
     resourcetype_obj.pre_process.assert_called_once_with(
         resource_spec="bar_config", config={"type": "test_bar"})
     self.assertDictEqual(
         args, {"bar": resourcetype_obj.pre_process.return_value})
Пример #15
0
    def run(self, name, context, args):
        cls_name, method_name = name.split(".", 1)
        cls = scenario.Scenario.get_by_name(cls_name)

        self.aborted.clear()

        # NOTE(boris-42): processing @types decorators
        args = types.preprocess(cls, method_name, context, args)

        with rutils.Timer() as timer:
            self._run_scenario(cls, method_name, context, args)
        self.run_duration = timer.duration()
        return self.run_duration
Пример #16
0
 def test_convert(self, mock_resource_type_get):
     ctx = mock.MagicMock()
     args = types.preprocess("FakeConvertPlugin.one_arg",
                             ctx,
                             {"bar": "bar_config"})
     mock_resource_type_get.assert_called_once_with("test_bar")
     resourcetype_cls = mock_resource_type_get.return_value
     resourcetype_cls.assert_called_once_with(ctx, {})
     resourcetype_obj = resourcetype_cls.return_value
     resourcetype_obj.pre_process.assert_called_once_with(
         resource_spec="bar_config", config={"type": "test_bar"})
     self.assertDictEqual(
         args, {"bar": resourcetype_obj.pre_process.return_value})
Пример #17
0
    def run(self, name, context, args):
        scenario_plugin = scenario.Scenario.get(name)

        # NOTE(boris-42): processing @types decorators
        args = types.preprocess(name, context, args)

        if scenario_plugin.is_classbased:
            cls, method_name = scenario_plugin, "run"
        else:
            cls, method_name = (scenario_plugin._meta_get("cls_ref"),
                                name.split(".", 1).pop())

        with rutils.Timer() as timer:
            self._run_scenario(cls, method_name, context, args)

        self.run_duration = timer.duration()
Пример #18
0
    def run(self, name, context, args):
        scenario_plugin = scenario.Scenario.get(name)

        # NOTE(boris-42): processing @types decorators
        args = types.preprocess(name, context, args)

        if scenario_plugin.is_classbased:
            cls, method_name = scenario_plugin, "run"
        else:
            cls, method_name = (scenario_plugin._meta_get("cls_ref"),
                                name.split(".", 1).pop())

        with rutils.Timer() as timer:
            self._run_scenario(cls, method_name, context, args)

        self.run_duration = timer.duration()
Пример #19
0
    def test_convert_multiple(self, mock_resource_type_get):
        loaders = {"test_bar": mock.Mock(), "test_baz": mock.Mock()}
        mock_resource_type_get.side_effect = lambda p: loaders[p]

        args = types.preprocess("TestConvertPlugin.two_args",
                                mock.MagicMock(),
                                {"bar": "bar_config",
                                 "baz": "baz_config"})
        mock_resource_type_get.assert_has_calls([mock.call("test_bar"),
                                                 mock.call("test_baz")],
                                                any_order=True)
        loaders["test_bar"].transform.assert_called_once_with(
            clients=mock.ANY, resource_config="bar_config")
        loaders["test_baz"].transform.assert_called_once_with(
            clients=mock.ANY, resource_config="baz_config")
        self.assertDictEqual(
            args,
            {"bar": loaders["test_bar"].transform.return_value,
             "baz": loaders["test_baz"].transform.return_value})
Пример #20
0
    def test_preprocess(self, mock_osclients, mock_scenario_meta):
        cls = "some_class"
        method_name = "method_name"
        context = {"a": 1, "b": 2, "admin": {"endpoint": mock.MagicMock()}}
        args = {"a": 10, "b": 20}

        class Preprocessor(types.ResourceType):
            @classmethod
            def transform(cls, clients, resource_config):
                return resource_config * 2

        mock_scenario_meta.return_value = {"a": Preprocessor}
        result = types.preprocess(cls, method_name, context, args)
        mock_scenario_meta.assert_called_once_with(cls,
                                                   default={},
                                                   method_name=method_name,
                                                   attr_name="preprocessors")
        mock_osclients.Clients.assert_called_once_with(
            context["admin"]["endpoint"])
        self.assertEqual({"a": 20, "b": 20}, result)