diff options
-rw-r--r-- | oslo_db/sqlalchemy/enginefacade.py | 7 | ||||
-rw-r--r-- | oslo_db/tests/sqlalchemy/test_enginefacade.py | 25 |
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.""" |