Tests running on in-memory sqlite db
Change-Id: I79e26b38416f0c143a0e83bb601c0046bb3dcf02
This commit is contained in:
parent
fabeec2505
commit
73d26734d6
|
@ -20,18 +20,21 @@ import logging
|
||||||
|
|
||||||
from sqlalchemy import create_engine
|
from sqlalchemy import create_engine
|
||||||
from sqlalchemy.orm import joinedload, aliased, sessionmaker
|
from sqlalchemy.orm import joinedload, aliased, sessionmaker
|
||||||
|
from sqlalchemy.pool import StaticPool
|
||||||
|
|
||||||
from keystone.common import config
|
from keystone.common import config
|
||||||
from keystone.backends.sqlalchemy import models
|
from keystone.backends.sqlalchemy import models
|
||||||
import keystone.utils as utils
|
import keystone.utils as utils
|
||||||
import keystone.backends.api as top_api
|
import keystone.backends.api as top_api
|
||||||
import keystone.backends.models as top_models
|
import keystone.backends.models as top_models
|
||||||
|
from keystone.test import sampledata
|
||||||
_ENGINE = None
|
_ENGINE = None
|
||||||
_MAKER = None
|
_MAKER = None
|
||||||
BASE = models.Base
|
BASE = models.Base
|
||||||
|
|
||||||
MODEL_PREFIX = 'keystone.backends.sqlalchemy.models.'
|
MODEL_PREFIX = 'keystone.backends.sqlalchemy.models.'
|
||||||
API_PREFIX = 'keystone.backends.sqlalchemy.api.'
|
API_PREFIX = 'keystone.backends.sqlalchemy.api.'
|
||||||
|
FOR_TESTING_ONLY = 'for_testing_only'
|
||||||
|
|
||||||
|
|
||||||
def configure_backend(options):
|
def configure_backend(options):
|
||||||
|
@ -49,15 +52,28 @@ def configure_backend(options):
|
||||||
options, 'verbose', type='bool', default=False)
|
options, 'verbose', type='bool', default=False)
|
||||||
timeout = config.get_option(
|
timeout = config.get_option(
|
||||||
options, 'sql_idle_timeout', type='int', default=3600)
|
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')
|
logger = logging.getLogger('sqlalchemy.engine')
|
||||||
if debug:
|
if debug:
|
||||||
logger.setLevel(logging.DEBUG)
|
logger.setLevel(logging.DEBUG)
|
||||||
elif verbose:
|
elif verbose:
|
||||||
logger.setLevel(logging.INFO)
|
logger.setLevel(logging.INFO)
|
||||||
|
|
||||||
register_models(options)
|
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):
|
def get_session(autocommit=True, expire_on_commit=False):
|
||||||
"""Helper method to grab session"""
|
"""Helper method to grab session"""
|
||||||
|
|
|
@ -67,17 +67,13 @@ class KeystoneTest(object):
|
||||||
self.clear_database()
|
self.clear_database()
|
||||||
self.construct_temp_conf_file()
|
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
|
# run the keystone server
|
||||||
print "Starting the keystone server..."
|
print "Starting the keystone server..."
|
||||||
self.server = subprocess.Popen(
|
self.server = subprocess.Popen(
|
||||||
[os.path.join(BASE_DIR, 'bin/keystone'), '-c', self.conf_fp.name])
|
[os.path.join(BASE_DIR, 'bin/keystone'), '-c', self.conf_fp.name])
|
||||||
|
|
||||||
# blatent hack.
|
# blatent hack.
|
||||||
time.sleep(3)
|
time.sleep(1)
|
||||||
if self.server.poll() is not None:
|
if self.server.poll() is not None:
|
||||||
raise RuntimeError('Failed to start server')
|
raise RuntimeError('Failed to start server')
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ keystone-admin-role = Admin
|
||||||
keystone-service-admin-role = KeystoneServiceAdmin
|
keystone-service-admin-role = KeystoneServiceAdmin
|
||||||
|
|
||||||
[keystone.backends.sqlalchemy]
|
[keystone.backends.sqlalchemy]
|
||||||
sql_connection = sqlite:///%(test_dir)s/keystone.db
|
sql_connection = for_testing_only
|
||||||
sql_idle_timeout = 30
|
sql_idle_timeout = 30
|
||||||
backend_entities = ['Endpoints', 'Credentials', 'EndpointTemplates', 'Token', 'Service']
|
backend_entities = ['Endpoints', 'Credentials', 'EndpointTemplates', 'Token', 'Service']
|
||||||
|
|
||||||
|
@ -28,15 +28,15 @@ backend_entities = ['Tenant', 'User', 'UserRoleAssociation', 'Role']
|
||||||
|
|
||||||
[pipeline:admin]
|
[pipeline:admin]
|
||||||
pipeline =
|
pipeline =
|
||||||
urlrewritefilter
|
urlrewritefilter
|
||||||
admin_api
|
admin_api
|
||||||
|
|
||||||
[pipeline:keystone-legacy-auth]
|
[pipeline:keystone-legacy-auth]
|
||||||
pipeline =
|
pipeline =
|
||||||
urlrewritefilter
|
urlrewritefilter
|
||||||
legacy_auth
|
legacy_auth
|
||||||
RAX-KEY-extension
|
RAX-KEY-extension
|
||||||
service_api
|
service_api
|
||||||
|
|
||||||
[app:service_api]
|
[app:service_api]
|
||||||
paste.app_factory = keystone.server:service_app_factory
|
paste.app_factory = keystone.server:service_app_factory
|
||||||
|
|
|
@ -16,7 +16,7 @@ keystone-admin-role = Admin
|
||||||
keystone-service-admin-role = KeystoneServiceAdmin
|
keystone-service-admin-role = KeystoneServiceAdmin
|
||||||
|
|
||||||
[keystone.backends.sqlalchemy]
|
[keystone.backends.sqlalchemy]
|
||||||
sql_connection = sqlite:///%(test_dir)s/keystone.db
|
sql_connection = for_testing_only
|
||||||
sql_idle_timeout = 30
|
sql_idle_timeout = 30
|
||||||
backend_entities = ['Endpoints', 'Credentials', 'EndpointTemplates', 'Tenant', 'User', 'UserRoleAssociation', 'Role', 'Service']
|
backend_entities = ['Endpoints', 'Credentials', 'EndpointTemplates', 'Tenant', 'User', 'UserRoleAssociation', 'Role', 'Service']
|
||||||
|
|
||||||
|
@ -27,15 +27,15 @@ cache_time = 86400
|
||||||
|
|
||||||
[pipeline:admin]
|
[pipeline:admin]
|
||||||
pipeline =
|
pipeline =
|
||||||
urlrewritefilter
|
urlrewritefilter
|
||||||
admin_api
|
admin_api
|
||||||
|
|
||||||
[pipeline:keystone-legacy-auth]
|
[pipeline:keystone-legacy-auth]
|
||||||
pipeline =
|
pipeline =
|
||||||
urlrewritefilter
|
urlrewritefilter
|
||||||
legacy_auth
|
legacy_auth
|
||||||
RAXKEY-extension
|
RAX-KEY-extension
|
||||||
service_api
|
service_api
|
||||||
|
|
||||||
[app:service_api]
|
[app:service_api]
|
||||||
paste.app_factory = keystone.server:service_app_factory
|
paste.app_factory = keystone.server:service_app_factory
|
||||||
|
|
|
@ -16,21 +16,21 @@ keystone-admin-role = Admin
|
||||||
keystone-service-admin-role = KeystoneServiceAdmin
|
keystone-service-admin-role = KeystoneServiceAdmin
|
||||||
|
|
||||||
[keystone.backends.sqlalchemy]
|
[keystone.backends.sqlalchemy]
|
||||||
sql_connection = sqlite:///%(test_dir)s/keystone.db
|
sql_connection = for_testing_only
|
||||||
sql_idle_timeout = 30
|
sql_idle_timeout = 30
|
||||||
backend_entities = ['Endpoints', 'Credentials', 'EndpointTemplates', 'Tenant', 'User', 'UserRoleAssociation', 'Role', 'Token', 'Service']
|
backend_entities = ['Endpoints', 'Credentials', 'EndpointTemplates', 'Tenant', 'User', 'UserRoleAssociation', 'Role', 'Token', 'Service']
|
||||||
|
|
||||||
[pipeline:admin]
|
[pipeline:admin]
|
||||||
pipeline =
|
pipeline =
|
||||||
urlrewritefilter
|
urlrewritefilter
|
||||||
admin_api
|
admin_api
|
||||||
|
|
||||||
[pipeline:keystone-legacy-auth]
|
[pipeline:keystone-legacy-auth]
|
||||||
pipeline =
|
pipeline =
|
||||||
urlrewritefilter
|
urlrewritefilter
|
||||||
legacy_auth
|
legacy_auth
|
||||||
RAX-KEY-extension
|
RAX-KEY-extension
|
||||||
service_api
|
service_api
|
||||||
|
|
||||||
[app:service_api]
|
[app:service_api]
|
||||||
paste.app_factory = keystone.server:service_app_factory
|
paste.app_factory = keystone.server:service_app_factory
|
||||||
|
|
|
@ -20,7 +20,7 @@ class LDAPTest(KeystoneTest):
|
||||||
|
|
||||||
TESTS = [
|
TESTS = [
|
||||||
SQLTest,
|
SQLTest,
|
||||||
# not running MemcacheTest,
|
# currently failing, and has yet to pass in jenkins: MemcacheTest,
|
||||||
LDAPTest,
|
LDAPTest,
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue