blob: ddadef50e2da8820bc99d8012eba09cb86193f41 [file] [log] [blame]
Marc Koderer173fc062015-08-27 14:01:42 +02001# Copyright (c) 2015 Deutsche Telekom AG
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15
Andrea Frittoli (andreaf)6d4d85a2016-06-21 17:20:31 +010016from tempest.lib.services import clients
Marc Koderer173fc062015-08-27 14:01:42 +020017from tempest.test_discover import plugins
Matthew Treinishffad78a2016-04-16 14:39:52 -040018from tempest.tests import base
Marc Koderer173fc062015-08-27 14:01:42 +020019from tempest.tests import fake_tempest_plugin as fake_plugin
Andrea Frittoli9806f2d2017-09-01 14:50:07 +010020from tempest.tests.lib.services import registry_fixture
Marc Koderer173fc062015-08-27 14:01:42 +020021
22
23class TestPluginDiscovery(base.TestCase):
Andrea Frittoli9806f2d2017-09-01 14:50:07 +010024
25 def setUp(self):
26 super(TestPluginDiscovery, self).setUp()
27 # Make sure we leave the registry clean
28 self.useFixture(registry_fixture.RegistryFixture())
29
Marc Koderer173fc062015-08-27 14:01:42 +020030 def test_load_tests_with_one_plugin(self):
31 # we can't mock stevedore since it's a singleton and already executed
32 # during test discovery. So basically this test covers the plugin loop
33 # and the abstract plugin interface.
34 manager = plugins.TempestTestPluginManager()
35 fake_obj = fake_plugin.FakeStevedoreObj()
36 manager.ext_plugins = [fake_obj]
37 result = manager.get_plugin_load_tests_tuple()
38
39 self.assertEqual(fake_plugin.FakePlugin.expected_load_test,
40 result[fake_obj.name])
41
42 def test_load_tests_with_two_plugins(self):
43 manager = plugins.TempestTestPluginManager()
44 obj1 = fake_plugin.FakeStevedoreObj('fake01')
45 obj2 = fake_plugin.FakeStevedoreObj('fake02')
46 manager.ext_plugins = [obj1, obj2]
47 result = manager.get_plugin_load_tests_tuple()
48
49 self.assertEqual(fake_plugin.FakePlugin.expected_load_test,
50 result['fake01'])
51 self.assertEqual(fake_plugin.FakePlugin.expected_load_test,
52 result['fake02'])
Andrea Frittoli (andreaf)6d4d85a2016-06-21 17:20:31 +010053
54 def test__register_service_clients_with_one_plugin(self):
55 registry = clients.ClientsRegistry()
56 manager = plugins.TempestTestPluginManager()
57 fake_obj = fake_plugin.FakeStevedoreObj()
58 manager.ext_plugins = [fake_obj]
59 manager._register_service_clients()
60 expected_result = fake_plugin.FakePlugin.expected_service_clients
61 registered_clients = registry.get_service_clients()
62 self.assertIn(fake_obj.name, registered_clients)
63 self.assertEqual(expected_result, registered_clients[fake_obj.name])
64
65 def test__get_service_clients_with_two_plugins(self):
66 registry = clients.ClientsRegistry()
67 manager = plugins.TempestTestPluginManager()
68 obj1 = fake_plugin.FakeStevedoreObj('fake01')
69 obj2 = fake_plugin.FakeStevedoreObj('fake02')
70 manager.ext_plugins = [obj1, obj2]
71 manager._register_service_clients()
72 expected_result = fake_plugin.FakePlugin.expected_service_clients
73 registered_clients = registry.get_service_clients()
74 self.assertIn('fake01', registered_clients)
75 self.assertIn('fake02', registered_clients)
76 self.assertEqual(expected_result, registered_clients['fake01'])
77 self.assertEqual(expected_result, registered_clients['fake02'])
78
79 def test__register_service_clients_one_plugin_no_service_clients(self):
80 registry = clients.ClientsRegistry()
81 manager = plugins.TempestTestPluginManager()
82 fake_obj = fake_plugin.FakeStevedoreObjNoServiceClients()
83 manager.ext_plugins = [fake_obj]
84 manager._register_service_clients()
Andrea Frittoli (andreaf)6d4d85a2016-06-21 17:20:31 +010085 registered_clients = registry.get_service_clients()
Matthew Treinish00c72b92016-10-04 13:04:52 -040086 self.assertNotIn(fake_obj.name, registered_clients)