summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--oslo_db/sqlalchemy/enginefacade.py7
-rw-r--r--oslo_db/tests/sqlalchemy/test_enginefacade.py25
2 files changed, 32 insertions, 0 deletions
diff --git a/oslo_db/sqlalchemy/enginefacade.py b/oslo_db/sqlalchemy/enginefacade.py
index 111f033..7f64acc 100644
--- a/oslo_db/sqlalchemy/enginefacade.py
+++ b/oslo_db/sqlalchemy/enginefacade.py
@@ -952,6 +952,10 @@ class LegacyEngineFacade(object):
_conf, connection=sql_connection,
slave_connection=slave_connection)
+ def _check_factory_started(self):
+ if not self._factory._started:
+ self._factory._start()
+
def get_engine(self, use_slave=False):
"""Get the engine instance (note, that it's shared).
@@ -962,6 +966,7 @@ class LegacyEngineFacade(object):
:type use_slave: bool
"""
+ self._check_factory_started()
if use_slave:
return self._factory._reader_engine
else:
@@ -982,6 +987,7 @@ class LegacyEngineFacade(object):
was created). See SQLAlchemy Session docs for details.
"""
+ self._check_factory_started()
if use_slave:
return self._factory._reader_maker(**kwargs)
else:
@@ -994,6 +1000,7 @@ class LegacyEngineFacade(object):
be temporarily injected with some state such as a specific connection.
"""
+ self._check_factory_started()
if use_slave:
return self._factory._reader_maker
else:
diff --git a/oslo_db/tests/sqlalchemy/test_enginefacade.py b/oslo_db/tests/sqlalchemy/test_enginefacade.py
index 62e3fa9..9226c05 100644
--- a/oslo_db/tests/sqlalchemy/test_enginefacade.py
+++ b/oslo_db/tests/sqlalchemy/test_enginefacade.py
@@ -997,6 +997,31 @@ class LegacyIntegrationtest(test_base.DbTestCase):
self.assertNotEqual(legacy1, legacy2)
+ def test_legacy_not_started(self):
+
+ factory = enginefacade._TransactionFactory()
+
+ self.assertRaises(
+ exception.CantStartEngineError,
+ factory.get_legacy_facade
+ )
+
+ legacy_facade = factory.get_legacy_facade()
+ self.assertRaises(
+ exception.CantStartEngineError,
+ legacy_facade.get_session
+ )
+
+ self.assertRaises(
+ exception.CantStartEngineError,
+ legacy_facade.get_session
+ )
+
+ self.assertRaises(
+ exception.CantStartEngineError,
+ legacy_facade.get_engine
+ )
+
class ThreadingTest(test_base.DbTestCase):
"""Test copy/pickle on new threads using real connections and sessions."""