def load_tests(loader, tests, pattern): ext_plugins = plugins.TempestTestPluginManager() suite = unittest.TestSuite() base_path = os.path.split(os.path.dirname(os.path.abspath(__file__)))[0] base_path = os.path.split(base_path)[0] # Load local tempest tests for test_dir in ['tempest/api','tempest/scenario', 'tempest/thirdparty']: full_test_dir = os.path.join(base_path, test_dir) if not pattern: suite.addTests(loader.discover(full_test_dir, top_level_dir=base_path)) else: suite.addTests(loader.discover(full_test_dir, pattern=pattern, top_level_dir=base_path)) plugin_load_tests = ext_plugins.get_plugin_load_tests_tuple() if not plugin_load_tests: return suite # Load any installed plugin tests for plugin in plugin_load_tests: test_dir, top_path = plugin_load_tests[plugin] if not pattern: suite.addTests(loader.discover(test_dir, top_level_dir=top_path)) else: suite.addTests(loader.discover(test_dir, pattern=pattern, top_level_dir=top_path)) return suite
def _list_plugins(self): plugins = plg.TempestTestPluginManager() output = prettytable.PrettyTable(["Name", "EntryPoint"]) for plugin in plugins.ext_plugins.extensions: output.add_row([plugin.name, plugin.entry_point_target]) print(output)
def test__register_service_clients_one_plugin_no_service_clients(self): registry = clients.ClientsRegistry() manager = plugins.TempestTestPluginManager() fake_obj = fake_plugin.FakeStevedoreObjNoServiceClients() manager.ext_plugins = [fake_obj] manager._register_service_clients() registered_clients = registry.get_service_clients() self.assertNotIn(fake_obj.name, registered_clients)
def test__register_service_clients_with_one_plugin(self): registry = clients.ClientsRegistry() manager = plugins.TempestTestPluginManager() fake_obj = fake_plugin.FakeStevedoreObj() manager.ext_plugins = [fake_obj] manager._register_service_clients() expected_result = fake_plugin.FakePlugin.expected_service_clients registered_clients = registry.get_service_clients() self.assertIn(fake_obj.name, registered_clients) self.assertEqual(expected_result, registered_clients[fake_obj.name])
def test_load_tests_with_two_plugins(self): manager = plugins.TempestTestPluginManager() obj1 = fake_plugin.FakeStevedoreObj('fake01') obj2 = fake_plugin.FakeStevedoreObj('fake02') manager.ext_plugins = [obj1, obj2] result = manager.get_plugin_load_tests_tuple() self.assertEqual(fake_plugin.FakePlugin.expected_load_test, result['fake01']) self.assertEqual(fake_plugin.FakePlugin.expected_load_test, result['fake02'])
def test_load_tests_with_one_plugin(self): # we can't mock stevedore since it's a singleton and already executed # during test discovery. So basically this test covers the plugin loop # and the abstract plugin interface. manager = plugins.TempestTestPluginManager() fake_obj = fake_plugin.FakeStevedoreObj() manager.ext_plugins = [fake_obj] result = manager.get_plugin_load_tests_tuple() self.assertEqual(fake_plugin.FakePlugin.expected_load_test, result[fake_obj.name])
def test__get_service_clients_with_two_plugins(self): registry = clients.ClientsRegistry() manager = plugins.TempestTestPluginManager() obj1 = fake_plugin.FakeStevedoreObj('fake01') obj2 = fake_plugin.FakeStevedoreObj('fake02') manager.ext_plugins = [obj1, obj2] manager._register_service_clients() expected_result = fake_plugin.FakePlugin.expected_service_clients registered_clients = registry.get_service_clients() self.assertIn('fake01', registered_clients) self.assertIn('fake02', registered_clients) self.assertEqual(expected_result, registered_clients['fake01']) self.assertEqual(expected_result, registered_clients['fake02'])
def load_tests(loader, standard_tests, pattern): logging.setup(config.init_conf(), __name__) suite = unittest.TestSuite() heat_integration_dir = os.path.dirname(os.path.abspath(__file__)) top_level_dir = os.path.split(heat_integration_dir)[0] if pattern: discovered = loader.discover(heat_integration_dir, pattern=pattern, top_level_dir=top_level_dir) else: discovered = loader.discover(heat_integration_dir, top_level_dir=top_level_dir) suite.addTests(discovered) # Discover tests from the heat-tempest-plugin if it is present, using # the Tempest plugin mechanism so we don't need a hard dependency on it. from tempest.test_discover import plugins as tempest_plugins ext_plugins = tempest_plugins.TempestTestPluginManager() plugin_data = ext_plugins.get_plugin_load_tests_tuple() heat_plugin_data = plugin_data.get('heat') if heat_plugin_data is not None: plugin_dir, plugin_path = heat_plugin_data LOG.info('Found Heat Tempest plugin: %s, %s', plugin_dir, plugin_path) if pattern: discovered = loader.discover(plugin_dir, pattern=pattern, top_level_dir=plugin_path) else: discovered = loader.discover(plugin_dir, top_level_dir=plugin_path) suite.addTests(discovered) else: LOG.error('Heat Tempest plugin not found') LOG.info('Available Tempest plugins: %s', ', '.join(plugin_data.keys())) return suite