Remove driver version specifiers from tests

Now that we no longer support driver versioning, we don't need to
specify specific driver versioning in our tests. Unwinding this code.

Change-Id: I25d1202ada6b9e2806e102aa22e22ccc77429a53
This commit is contained in:
Ronald De Rose 2016-10-06 20:58:25 +00:00 committed by Ron De Rose
parent 4888a11c4d
commit 76d588be55
9 changed files with 13 additions and 78 deletions

View File

@ -647,7 +647,6 @@ class TestCase(BaseTestCase):
keystone.conf.auth, '_register_auth_plugin_opt', keystone.conf.auth, '_register_auth_plugin_opt',
new=mocked_register_auth_plugin_opt)) new=mocked_register_auth_plugin_opt))
self.sql_driver_version_overrides = {}
self.config_overrides() self.config_overrides()
# NOTE(morganfainberg): ensure config_overrides has been called. # NOTE(morganfainberg): ensure config_overrides has been called.
self.addCleanup(self._assert_config_overrides_called) self.addCleanup(self._assert_config_overrides_called)
@ -874,20 +873,3 @@ class SQLDriverOverrides(object):
self.config_fixture.config(group='policy', driver='sql') self.config_fixture.config(group='policy', driver='sql')
self.config_fixture.config(group='token', driver='sql') self.config_fixture.config(group='token', driver='sql')
self.config_fixture.config(group='trust', driver='sql') self.config_fixture.config(group='trust', driver='sql')
def use_specific_sql_driver_version(self, driver_path,
versionless_backend, version_suffix):
"""Add this versioned driver to the list that will be loaded.
:param driver_path: The path to the drivers, e.g. 'keystone.assignment'
:param versionless_backend: The name of the versionless drivers, e.g.
'backends'
:param version_suffix: The suffix for the version , e.g. ``V8_``
This method assumes that versioned drivers are named:
<version_suffix><name of versionless driver>, e.g. 'V8_backends'.
"""
self.sql_driver_version_overrides[driver_path] = {
'versionless_backend': versionless_backend,
'versioned_backend': version_suffix + versionless_backend}

View File

@ -208,7 +208,7 @@ class LDAPDeleteTreeTest(unit.TestCase):
self.useFixture( self.useFixture(
ldapdb.LDAPDatabase(dbclass=fakeldap.FakeLdapNoSubtreeDelete)) ldapdb.LDAPDatabase(dbclass=fakeldap.FakeLdapNoSubtreeDelete))
self.useFixture(database.Database(self.sql_driver_version_overrides)) self.useFixture(database.Database())
self.load_backends() self.load_backends()
self.load_fixtures(default_fixtures) self.load_fixtures(default_fixtures)
@ -371,7 +371,7 @@ class LDAPPagedResultsTest(unit.TestCase):
super(LDAPPagedResultsTest, self).setUp() super(LDAPPagedResultsTest, self).setUp()
self.useFixture(ldapdb.LDAPDatabase()) self.useFixture(ldapdb.LDAPDatabase())
self.useFixture(database.Database(self.sql_driver_version_overrides)) self.useFixture(database.Database())
self.load_backends() self.load_backends()
self.load_fixtures(default_fixtures) self.load_fixtures(default_fixtures)

View File

@ -40,8 +40,7 @@ class TestIdentityDriver(db_test.DbTestCase,
sql.core, '_TESTING_USE_GLOBAL_CONTEXT_MANAGER', False) sql.core, '_TESTING_USE_GLOBAL_CONTEXT_MANAGER', False)
self.addCleanup(sql.cleanup) self.addCleanup(sql.cleanup)
version_specifiers = {} database._load_sqlalchemy_models()
database._load_sqlalchemy_models(version_specifiers)
sql.ModelBase.metadata.create_all(bind=self.engine) sql.ModelBase.metadata.create_all(bind=self.engine)
self.driver = sql_backend.Identity() self.driver = sql_backend.Identity()

View File

@ -32,9 +32,9 @@ def run_once(f):
""" """
@functools.wraps(f) @functools.wraps(f)
def wrapper(one): def wrapper():
if not wrapper.already_ran: if not wrapper.already_ran:
f(one) f()
wrapper.already_ran = True wrapper.already_ran = True
wrapper.already_ran = False wrapper.already_ran = False
return wrapper return wrapper
@ -52,7 +52,7 @@ def initialize_sql_session(connection_str=unit.IN_MEM_DB_CONN_STRING):
@run_once @run_once
def _load_sqlalchemy_models(version_specifiers): def _load_sqlalchemy_models():
"""Find all modules containing SQLAlchemy models and import them. """Find all modules containing SQLAlchemy models and import them.
This creates more consistent, deterministic test runs because tables This creates more consistent, deterministic test runs because tables
@ -67,24 +67,6 @@ def _load_sqlalchemy_models(version_specifiers):
as more models are imported. Importing all models at the start of as more models are imported. Importing all models at the start of
the test run avoids this problem. the test run avoids this problem.
version_specifiers is a dict that contains any specific driver versions
that have been requested. The dict is of the form:
{<module_name> : {'versioned_backend' : <name of backend requested>,
'versionless_backend' : <name of default backend>}
}
For example:
{'keystone.assignment': {'versioned_backend' : 'V8_backends',
'versionless_backend' : 'backends'},
'keystone.identity': {'versioned_backend' : 'V9_backends',
'versionless_backend' : 'backends'}
}
The version_specifiers will be used to load the correct driver. The
algorithm for this assumes that versioned drivers begin in 'V'.
""" """
keystone_root = os.path.normpath(os.path.join( keystone_root = os.path.normpath(os.path.join(
os.path.dirname(__file__), '..', '..', '..')) os.path.dirname(__file__), '..', '..', '..'))
@ -104,32 +86,6 @@ def _load_sqlalchemy_models(version_specifiers):
for x in range(0, len(module_components) - 1): for x in range(0, len(module_components) - 1):
module_without_backends += module_components[x] + '.' module_without_backends += module_components[x] + '.'
module_without_backends = module_without_backends.rstrip('.') module_without_backends = module_without_backends.rstrip('.')
this_backend = module_components[len(module_components) - 1]
# At this point module_without_backends might be something like
# 'keystone.assignment', while this_backend might be something
# 'V8_backends'.
if module_without_backends.startswith('keystone.contrib'):
# All the sql modules have now been moved into the core tree
# so no point in loading these again here (and, in fact, doing
# so might break trying to load a versioned driver.
continue
if module_without_backends in version_specifiers:
# OK, so there is a request for a specific version of this one.
# We therefore should skip any other versioned backend as well
# as the non-versioned one.
version = version_specifiers[module_without_backends]
if ((this_backend != version['versioned_backend'] and
this_backend.startswith('V')) or
this_backend == version['versionless_backend']):
continue
else:
# No versioned driver requested, so ignore any that are
# versioned
if this_backend.startswith('V'):
continue
module_name = module_root + '.sql' module_name = module_root + '.sql'
__import__(module_name) __import__(module_name)
@ -138,12 +94,10 @@ def _load_sqlalchemy_models(version_specifiers):
class Database(fixtures.Fixture): class Database(fixtures.Fixture):
"""A fixture for setting up and tearing down a database.""" """A fixture for setting up and tearing down a database."""
def __init__(self, version_specifiers=None): def __init__(self):
super(Database, self).__init__() super(Database, self).__init__()
initialize_sql_session() initialize_sql_session()
if version_specifiers is None: _load_sqlalchemy_models()
version_specifiers = {}
_load_sqlalchemy_models(version_specifiers)
def setUp(self): def setUp(self):
super(Database, self).setUp() super(Database, self).setUp()

View File

@ -30,7 +30,7 @@ class TestResourceManagerNoFixtures(unit.SQLDriverOverrides, unit.TestCase):
def setUp(self): def setUp(self):
super(TestResourceManagerNoFixtures, self).setUp() super(TestResourceManagerNoFixtures, self).setUp()
self.useFixture(database.Database(self.sql_driver_version_overrides)) self.useFixture(database.Database())
self.load_backends() self.load_backends()
def test_ensure_default_domain_exists(self): def test_ensure_default_domain_exists(self):

View File

@ -57,7 +57,7 @@ class RestfulTestCase(unit.TestCase):
self.auth_plugin_config_override() self.auth_plugin_config_override()
self.useFixture(database.Database(self.sql_driver_version_overrides)) self.useFixture(database.Database())
self.load_backends() self.load_backends()
self.load_fixtures(default_fixtures) self.load_fixtures(default_fixtures)

View File

@ -108,7 +108,7 @@ class KvsTokenCacheInvalidation(unit.TestCase,
token_tests.TokenCacheInvalidation): token_tests.TokenCacheInvalidation):
def setUp(self): def setUp(self):
super(KvsTokenCacheInvalidation, self).setUp() super(KvsTokenCacheInvalidation, self).setUp()
self.useFixture(database.Database(self.sql_driver_version_overrides)) self.useFixture(database.Database())
self.load_backends() self.load_backends()
self._create_test_data() self._create_test_data()

View File

@ -1946,7 +1946,7 @@ class LDAPLimitTests(unit.TestCase, identity_tests.LimitTests):
super(LDAPLimitTests, self).setUp() super(LDAPLimitTests, self).setUp()
self.useFixture(ldapdb.LDAPDatabase()) self.useFixture(ldapdb.LDAPDatabase())
self.useFixture(database.Database(self.sql_driver_version_overrides)) self.useFixture(database.Database())
self.load_backends() self.load_backends()
self.load_fixtures(default_fixtures) self.load_fixtures(default_fixtures)
identity_tests.LimitTests.setUp(self) identity_tests.LimitTests.setUp(self)

View File

@ -52,7 +52,7 @@ class SqlTests(unit.SQLDriverOverrides, unit.TestCase):
def setUp(self): def setUp(self):
super(SqlTests, self).setUp() super(SqlTests, self).setUp()
self.useFixture(database.Database(self.sql_driver_version_overrides)) self.useFixture(database.Database())
self.load_backends() self.load_backends()
# populate the engine with tables & fixtures # populate the engine with tables & fixtures