From f267135d983b6782ba11509f6519f89c0cc83406 Mon Sep 17 00:00:00 2001 From: amitgandhinz Date: Thu, 24 Jul 2014 09:39:09 -0400 Subject: [PATCH] added base classes for tests --- .coveragerc | 7 ++ tests/base.py | 86 +++++++++++++++++++ .../base/__init__.py} | 0 tests/functional/base/base.py | 28 ++++++ tests/functional/manager/__init__.py | 0 tests/functional/manager/default/__init__.py | 0 tests/unit/base/__init__.py | 0 tests/unit/base/base.py | 28 ++++++ tests/unit/manager/default/test_driver.py | 6 +- tests/unit/manager/default/test_services.py | 6 +- 10 files changed, 157 insertions(+), 4 deletions(-) create mode 100644 .coveragerc create mode 100644 tests/base.py rename tests/{test_functional.py => functional/base/__init__.py} (100%) create mode 100644 tests/functional/base/base.py create mode 100644 tests/functional/manager/__init__.py create mode 100644 tests/functional/manager/default/__init__.py create mode 100644 tests/unit/base/__init__.py create mode 100644 tests/unit/base/base.py diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 00000000..17649503 --- /dev/null +++ b/.coveragerc @@ -0,0 +1,7 @@ +[run] +omit = *cdn/openstack* + +[report] +exclude_lines = + # Don't complain if tests don't hit defensive assertion code + raise NotImplementedError diff --git a/tests/base.py b/tests/base.py new file mode 100644 index 00000000..9e6ec315 --- /dev/null +++ b/tests/base.py @@ -0,0 +1,86 @@ +# Copyright (c) 2014 Rackspace Hosting, Inc. +# +# 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. + +import os + +import fixtures +from oslo.config import cfg +import six +import testtools + + +class TestCase(testtools.TestCase): + """Child class of testtools.TestCase. + + Inherit from this and write your test methods. If the child class defines + a prepare(self) method, this method will be called before executing each + test method. + """ + + config_file = None + + def setUp(self): + super(TestCase, self).setUp() + + self.useFixture(fixtures.FakeLogger('cdn')) + + if self.config_file: + self.conf = self.load_conf(self.config_file) + else: + self.conf = cfg.ConfigOpts() + + @classmethod + def conf_path(cls, filename): + """Returns the full path to the specified conf file. + + :param filename: Name of the conf file to find (e.g., + 'wsgi_memory.conf') + """ + + if os.path.exists(filename): + return filename + + return os.path.join(os.environ["CDN_TESTS_CONFIGS_DIR"], filename) + + @classmethod + def load_conf(cls, filename): + """Loads `filename` configuration file. + + :param filename: Name of the conf file to find (e.g., + 'wsgi_memory.conf') + + :returns: Project's config object. + """ + conf = cfg.ConfigOpts() + conf(args=[], default_config_files=[cls.conf_path(filename)]) + return conf + + def config(self, group=None, **kw): + """Override some configuration values. + + The keyword arguments are the names of configuration options to + override and their values. + + If a group argument is supplied, the overrides are applied to + the specified configuration option group. + + All overrides are automatically cleared at the end of the current + test by the tearDown() method. + """ + for k, v in six.iteritems(kw): + self.conf.set_override(k, v, group) + + def _my_dir(self): + return os.path.abspath(os.path.dirname(__file__)) diff --git a/tests/test_functional.py b/tests/functional/base/__init__.py similarity index 100% rename from tests/test_functional.py rename to tests/functional/base/__init__.py diff --git a/tests/functional/base/base.py b/tests/functional/base/base.py new file mode 100644 index 00000000..fbc6dd25 --- /dev/null +++ b/tests/functional/base/base.py @@ -0,0 +1,28 @@ +# Copyright (c) 2014 Rackspace Hosting, Inc. +# +# 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 cdn import tests + + +class TestCase(tests.TestCase): + """Child class of tests.TestCase + + Inherit from this and write your test methods. If the child class defines + a prepare(self) method, this method will be called before executing each + test method. + """ + + def setUp(self): + super(TestCase, self).setUp() diff --git a/tests/functional/manager/__init__.py b/tests/functional/manager/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/functional/manager/default/__init__.py b/tests/functional/manager/default/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/unit/base/__init__.py b/tests/unit/base/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/unit/base/base.py b/tests/unit/base/base.py new file mode 100644 index 00000000..fbc6dd25 --- /dev/null +++ b/tests/unit/base/base.py @@ -0,0 +1,28 @@ +# Copyright (c) 2014 Rackspace Hosting, Inc. +# +# 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 cdn import tests + + +class TestCase(tests.TestCase): + """Child class of tests.TestCase + + Inherit from this and write your test methods. If the child class defines + a prepare(self) method, this method will be called before executing each + test method. + """ + + def setUp(self): + super(TestCase, self).setUp() diff --git a/tests/unit/manager/default/test_driver.py b/tests/unit/manager/default/test_driver.py index ae85cc3a..aacb0b45 100644 --- a/tests/unit/manager/default/test_driver.py +++ b/tests/unit/manager/default/test_driver.py @@ -15,16 +15,18 @@ from cdn.manager.default import driver from cdn.manager.default import services +from cdn.tests.unit import base from mock import patch from oslo.config import cfg -from unittest import TestCase -class DefaultManagerDriverTests(TestCase): +class DefaultManagerDriverTests(base.TestCase): @patch('cdn.storage.base.driver.StorageDriverBase') @patch('cdn.provider.base.driver.ProviderDriverBase') def setUp(self, mock_storage, mock_provider): + super(DefaultManagerDriverTests, self).setUp() + conf = cfg.ConfigOpts() self.driver = driver.DefaultManagerDriver(conf, mock_storage, diff --git a/tests/unit/manager/default/test_services.py b/tests/unit/manager/default/test_services.py index 5ac9d87a..48bdd0d9 100644 --- a/tests/unit/manager/default/test_services.py +++ b/tests/unit/manager/default/test_services.py @@ -15,18 +15,20 @@ from cdn.manager.default import driver from cdn.manager.default import services +from cdn.tests.unit import base from ddt import ddt, file_data from mock import patch from oslo.config import cfg -from unittest import TestCase @ddt -class DefaultManagerServiceTests(TestCase): +class DefaultManagerServiceTests(base.TestCase): @patch('cdn.storage.base.driver.StorageDriverBase') @patch('cdn.provider.base.driver.ProviderDriverBase') def setUp(self, mock_driver, mock_provider): + super(DefaultManagerServiceTests, self).setUp() + # create mocked config and driver conf = cfg.ConfigOpts() manager_driver = driver.DefaultManagerDriver(conf,