Esempio n. 1
0
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
Esempio n. 2
0
    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'])
Esempio n. 8
0
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