summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDolph Mathews <dolph.mathews@rackspace.com>2011-08-17 11:00:07 -0500
committerDolph Mathews <dolph.mathews@rackspace.com>2011-08-17 11:32:06 -0500
commit73d26734d63f36044d108d7e4670dbc868dae396 (patch)
tree33fe3b17818dfe1fa16cc6972883a102e86a28bc
parentfabeec250510003cc05012cf9649472410066feb (diff)
downloadkeystone-73d26734d63f36044d108d7e4670dbc868dae396.tar.gz
keystone-73d26734d63f36044d108d7e4670dbc868dae396.tar.xz
keystone-73d26734d63f36044d108d7e4670dbc868dae396.zip
Tests running on in-memory sqlite db
Change-Id: I79e26b38416f0c143a0e83bb601c0046bb3dcf02
-rwxr-xr-xkeystone/backends/sqlalchemy/__init__.py20
-rw-r--r--keystone/test/__init__.py6
-rwxr-xr-xkeystone/test/etc/ldap.conf.template10
-rw-r--r--keystone/test/etc/memcache.conf.template10
-rw-r--r--keystone/test/etc/sql.conf.template10
-rwxr-xr-xrun_tests.py2
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,
]