diff options
| author | Dolph Mathews <dolph.mathews@rackspace.com> | 2011-08-17 11:00:07 -0500 |
|---|---|---|
| committer | Dolph Mathews <dolph.mathews@rackspace.com> | 2011-08-17 11:32:06 -0500 |
| commit | 73d26734d63f36044d108d7e4670dbc868dae396 (patch) | |
| tree | 33fe3b17818dfe1fa16cc6972883a102e86a28bc | |
| parent | fabeec250510003cc05012cf9649472410066feb (diff) | |
| download | keystone-73d26734d63f36044d108d7e4670dbc868dae396.tar.gz keystone-73d26734d63f36044d108d7e4670dbc868dae396.tar.xz keystone-73d26734d63f36044d108d7e4670dbc868dae396.zip | |
Tests running on in-memory sqlite db
Change-Id: I79e26b38416f0c143a0e83bb601c0046bb3dcf02
| -rwxr-xr-x | keystone/backends/sqlalchemy/__init__.py | 20 | ||||
| -rw-r--r-- | keystone/test/__init__.py | 6 | ||||
| -rwxr-xr-x | keystone/test/etc/ldap.conf.template | 10 | ||||
| -rw-r--r-- | keystone/test/etc/memcache.conf.template | 10 | ||||
| -rw-r--r-- | keystone/test/etc/sql.conf.template | 10 | ||||
| -rwxr-xr-x | run_tests.py | 2 |
6 files changed, 35 insertions, 23 deletions
diff --git a/keystone/backends/sqlalchemy/__init__.py b/keystone/backends/sqlalchemy/__init__.py index a46ec934..fe580cb3 100755 --- a/keystone/backends/sqlalchemy/__init__.py +++ b/keystone/backends/sqlalchemy/__init__.py @@ -20,18 +20,21 @@ import logging from sqlalchemy import create_engine from sqlalchemy.orm import joinedload, aliased, sessionmaker +from sqlalchemy.pool import StaticPool from keystone.common import config from keystone.backends.sqlalchemy import models import keystone.utils as utils import keystone.backends.api as top_api import keystone.backends.models as top_models +from keystone.test import sampledata _ENGINE = None _MAKER = None BASE = models.Base MODEL_PREFIX = 'keystone.backends.sqlalchemy.models.' API_PREFIX = 'keystone.backends.sqlalchemy.api.' +FOR_TESTING_ONLY = 'for_testing_only' def configure_backend(options): @@ -49,15 +52,28 @@ def configure_backend(options): options, 'verbose', type='bool', default=False) timeout = config.get_option( options, 'sql_idle_timeout', type='int', default=3600) - _ENGINE = create_engine(options['sql_connection'], - pool_recycle=timeout) + + if options['sql_connection'] == FOR_TESTING_ONLY: + _ENGINE = create_engine('sqlite://', + connect_args={'check_same_thread': False}, + poolclass=StaticPool) + else: + _ENGINE = create_engine(options['sql_connection'], + pool_recycle=timeout) + logger = logging.getLogger('sqlalchemy.engine') if debug: logger.setLevel(logging.DEBUG) elif verbose: logger.setLevel(logging.INFO) + register_models(options) + # this is TERRIBLE coupling, but... + # if we're starting up a test database, load sample fixtures + if options['sql_connection'] == FOR_TESTING_ONLY: + sampledata.load_fixture() + def get_session(autocommit=True, expire_on_commit=False): """Helper method to grab session""" diff --git a/keystone/test/__init__.py b/keystone/test/__init__.py index a7302248..42eefbe7 100644 --- a/keystone/test/__init__.py +++ b/keystone/test/__init__.py @@ -67,17 +67,13 @@ class KeystoneTest(object): self.clear_database() self.construct_temp_conf_file() - # Populate the test database - print "Populating registry and token databases..." - execute('sampledata -c %s' % self.conf_fp.name) - # run the keystone server print "Starting the keystone server..." self.server = subprocess.Popen( [os.path.join(BASE_DIR, 'bin/keystone'), '-c', self.conf_fp.name]) # blatent hack. - time.sleep(3) + time.sleep(1) if self.server.poll() is not None: raise RuntimeError('Failed to start server') diff --git a/keystone/test/etc/ldap.conf.template b/keystone/test/etc/ldap.conf.template index f1cac609..6a9d104c 100755 --- a/keystone/test/etc/ldap.conf.template +++ b/keystone/test/etc/ldap.conf.template @@ -16,7 +16,7 @@ keystone-admin-role = Admin keystone-service-admin-role = KeystoneServiceAdmin [keystone.backends.sqlalchemy] -sql_connection = sqlite:///%(test_dir)s/keystone.db +sql_connection = for_testing_only sql_idle_timeout = 30 backend_entities = ['Endpoints', 'Credentials', 'EndpointTemplates', 'Token', 'Service'] @@ -28,15 +28,15 @@ backend_entities = ['Tenant', 'User', 'UserRoleAssociation', 'Role'] [pipeline:admin] pipeline = - urlrewritefilter - admin_api + urlrewritefilter + admin_api [pipeline:keystone-legacy-auth] pipeline = urlrewritefilter legacy_auth - RAX-KEY-extension - service_api + RAX-KEY-extension + service_api [app:service_api] paste.app_factory = keystone.server:service_app_factory diff --git a/keystone/test/etc/memcache.conf.template b/keystone/test/etc/memcache.conf.template index db3d35b2..832ee087 100644 --- a/keystone/test/etc/memcache.conf.template +++ b/keystone/test/etc/memcache.conf.template @@ -16,7 +16,7 @@ keystone-admin-role = Admin keystone-service-admin-role = KeystoneServiceAdmin [keystone.backends.sqlalchemy] -sql_connection = sqlite:///%(test_dir)s/keystone.db +sql_connection = for_testing_only sql_idle_timeout = 30 backend_entities = ['Endpoints', 'Credentials', 'EndpointTemplates', 'Tenant', 'User', 'UserRoleAssociation', 'Role', 'Service'] @@ -27,15 +27,15 @@ cache_time = 86400 [pipeline:admin] pipeline = - urlrewritefilter - admin_api + urlrewritefilter + admin_api [pipeline:keystone-legacy-auth] pipeline = urlrewritefilter legacy_auth - RAXKEY-extension - service_api + RAX-KEY-extension + service_api [app:service_api] paste.app_factory = keystone.server:service_app_factory diff --git a/keystone/test/etc/sql.conf.template b/keystone/test/etc/sql.conf.template index 208b5323..bd7f3c5f 100644 --- a/keystone/test/etc/sql.conf.template +++ b/keystone/test/etc/sql.conf.template @@ -16,21 +16,21 @@ keystone-admin-role = Admin keystone-service-admin-role = KeystoneServiceAdmin [keystone.backends.sqlalchemy] -sql_connection = sqlite:///%(test_dir)s/keystone.db +sql_connection = for_testing_only sql_idle_timeout = 30 backend_entities = ['Endpoints', 'Credentials', 'EndpointTemplates', 'Tenant', 'User', 'UserRoleAssociation', 'Role', 'Token', 'Service'] [pipeline:admin] pipeline = - urlrewritefilter - admin_api + urlrewritefilter + admin_api [pipeline:keystone-legacy-auth] pipeline = urlrewritefilter legacy_auth - RAX-KEY-extension - service_api + RAX-KEY-extension + service_api [app:service_api] paste.app_factory = keystone.server:service_app_factory diff --git a/run_tests.py b/run_tests.py index ca9c1772..fde2512e 100755 --- a/run_tests.py +++ b/run_tests.py @@ -20,7 +20,7 @@ class LDAPTest(KeystoneTest): TESTS = [ SQLTest, - # not running MemcacheTest, + # currently failing, and has yet to pass in jenkins: MemcacheTest, LDAPTest, ] |
