diff --git a/keystone/tests/core.py b/keystone/tests/core.py index e6b61aeae1..1848d3f964 100644 --- a/keystone/tests/core.py +++ b/keystone/tests/core.py @@ -50,7 +50,6 @@ from keystone.common import environment environment.use_eventlet() from keystone import auth -from keystone.common import cache from keystone.common import dependency from keystone.common import kvs from keystone.common.kvs import core as kvs_core @@ -63,6 +62,7 @@ from keystone.openstack.common.db.sqlalchemy import session from keystone.openstack.common import log from keystone.openstack.common import timeutils from keystone import service +from keystone.tests import fixtures as ksfixtures # NOTE(dstanek): Tests inheriting from TestCase depend on having the # policy_file command-line option declared before setUp runs. Importing the @@ -326,16 +326,9 @@ class TestCase(testtools.TestCase): self.opt(policy_file=dirs.etc('policy.json')) - # NOTE(morganfainberg): The only way to reconfigure the - # CacheRegion object on each setUp() call is to remove the - # .backend property. - self.addCleanup(delattr, cache.REGION, 'backend') - - # ensure the cache region instance is setup - cache.configure_cache_region(cache.REGION) - self.logger = self.useFixture(fixtures.FakeLogger(level=logging.DEBUG)) warnings.filterwarnings('ignore', category=DeprecationWarning) + self.useFixture(ksfixtures.Cache()) # Clear the registry of providers so that providers from previous # tests aren't used. diff --git a/keystone/tests/fixtures/__init__.py b/keystone/tests/fixtures/__init__.py index e69de29bb2..d54164c4eb 100644 --- a/keystone/tests/fixtures/__init__.py +++ b/keystone/tests/fixtures/__init__.py @@ -0,0 +1,16 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# 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 keystone.tests.fixtures.cache import Cache # flake8: noqa diff --git a/keystone/tests/fixtures/cache.py b/keystone/tests/fixtures/cache.py new file mode 100644 index 0000000000..b12940779b --- /dev/null +++ b/keystone/tests/fixtures/cache.py @@ -0,0 +1,38 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# 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 fixtures + +from keystone.common import cache + + +class Cache(fixtures.Fixture): + """A fixture for setting up and tearing down the cache between test cases. + """ + + def setUp(self): + # NOTE(dstanek): We must remove the existing cache backend in the + # setUp instead of the tearDown because it defaults to a no-op cache + # and we want the configure call below to create the correct backend. + + # NOTE(morganfainberg): The only way to reconfigure the CacheRegion + # object on each setUp() call is to remove the .backend property. + if hasattr(cache.REGION, 'backend'): + del cache.REGION.backend + + # ensure the cache region instance is setup + cache.configure_cache_region(cache.REGION) + + super(Cache, self).setUp()