Add initial unit test for tempest plugins

Add test for get_plugin_load_tests_tuple()

Partially implements bp external-plugin-interface

Change-Id: If441e4877f60c1b7e9a59692e7579b1c16e84c9d
This commit is contained in:
Marc Koderer 2015-08-27 14:01:42 +02:00
parent 3924344991
commit 173fc06461
2 changed files with 84 additions and 0 deletions

View File

@ -0,0 +1,40 @@
# Copyright (c) 2015 Deutsche Telekom AG
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from tempest.test_discover import plugins
class FakePlugin(plugins.TempestPlugin):
expected_load_test = ["my/test/path", "/home/dir"]
def load_tests(self):
return self.expected_load_test
def register_opts(self, conf):
return
def get_opt_lists(self):
return []
class FakeStevedoreObj(object):
obj = FakePlugin()
@property
def name(self):
return self._name
def __init__(self, name='Test1'):
self._name = name

View File

@ -0,0 +1,44 @@
# Copyright (c) 2015 Deutsche Telekom AG
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from tempest.test_discover import plugins
from tempest.tests import base
from tempest.tests import fake_tempest_plugin as fake_plugin
class TestPluginDiscovery(base.TestCase):
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_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'])