From 00c72b90f69769d84a3d2944d4f6fdab438ef753 Mon Sep 17 00:00:00 2001 From: Matthew Treinish Date: Tue, 4 Oct 2016 13:04:52 -0400 Subject: [PATCH] Only call register_service_clients if there are clients Right now we unconditionally run register_service_clients() on each plugin regardless of whether there are any clients or not. This can lead to false tracebacks being logged if there is any error reported in the call path, regardless of whether the plugin is at fault or not. To avoid this potential confusion this commit changes the registry call to only occur if there are any clients we actually want to register. If there aren't any we just skip that plugin. Change-Id: I526d4acd99bbcfbf27c4090391f341bc61fdb194 --- tempest/test_discover/plugins.py | 6 ++++-- tempest/tests/test_tempest_plugin.py | 4 +--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tempest/test_discover/plugins.py b/tempest/test_discover/plugins.py index eb50126904..f8d5d9de2a 100644 --- a/tempest/test_discover/plugins.py +++ b/tempest/test_discover/plugins.py @@ -157,8 +157,10 @@ class TempestTestPluginManager(object): registry = clients.ClientsRegistry() for plug in self.ext_plugins: try: - registry.register_service_client( - plug.name, plug.obj.get_service_clients()) + service_clients = plug.obj.get_service_clients() + if service_clients: + registry.register_service_client( + plug.name, service_clients) except Exception: LOG.exception('Plugin %s raised an exception trying to run ' 'get_service_clients' % plug.name) diff --git a/tempest/tests/test_tempest_plugin.py b/tempest/tests/test_tempest_plugin.py index dd50125b68..13e249937b 100644 --- a/tempest/tests/test_tempest_plugin.py +++ b/tempest/tests/test_tempest_plugin.py @@ -75,7 +75,5 @@ class TestPluginDiscovery(base.TestCase): fake_obj = fake_plugin.FakeStevedoreObjNoServiceClients() manager.ext_plugins = [fake_obj] manager._register_service_clients() - expected_result = [] registered_clients = registry.get_service_clients() - self.assertIn(fake_obj.name, registered_clients) - self.assertEqual(expected_result, registered_clients[fake_obj.name]) + self.assertNotIn(fake_obj.name, registered_clients)