Merge "Add dispose_pool() method to enginefacade context, factory"
This commit is contained in:
@@ -308,6 +308,16 @@ class _TransactionFactory(object):
|
||||
def _maker_args_for_conf(self, conf):
|
||||
return self._args_for_conf(self._maker_cfg, conf)
|
||||
|
||||
def dispose_pool(self):
|
||||
"""Call engine.pool.dispose() on underlying Engine objects."""
|
||||
with self._start_lock:
|
||||
if not self._started:
|
||||
return
|
||||
|
||||
self._writer_engine.pool.dispose()
|
||||
if self._reader_engine is not self._writer_engine:
|
||||
self._reader_engine.pool.dispose()
|
||||
|
||||
def _start(self, conf=False, connection=None, slave_connection=None):
|
||||
with self._start_lock:
|
||||
# self._started has been checked on the outside
|
||||
@@ -638,6 +648,10 @@ class _TransactionContextManager(object):
|
||||
|
||||
return self._factory.get_legacy_facade()
|
||||
|
||||
def dispose_pool(self):
|
||||
"""Call engine.pool.dispose() on underlying Engine objects."""
|
||||
self._factory.dispose_pool()
|
||||
|
||||
@property
|
||||
def replace(self):
|
||||
"""Modifier to replace the global transaction factory with this one."""
|
||||
|
||||
@@ -62,6 +62,7 @@ class SingletonEngine(SingletonOnName):
|
||||
super(SingletonEngine, self).__init__(
|
||||
"engine",
|
||||
connect=mock.Mock(return_value=connection),
|
||||
pool=mock.Mock(),
|
||||
url=connection,
|
||||
_assert_connection=connection,
|
||||
**kw
|
||||
@@ -417,6 +418,48 @@ class MockFacadeTest(oslo_test_base.BaseTestCase):
|
||||
session.mock_calls,
|
||||
self.sessions.element_for_writer(writer).mock_calls)
|
||||
|
||||
def test_dispose_pool(self):
|
||||
facade = enginefacade.transaction_context()
|
||||
|
||||
facade.configure(
|
||||
connection=self.engine_uri,
|
||||
)
|
||||
|
||||
facade.dispose_pool()
|
||||
self.assertFalse(hasattr(facade._factory, '_writer_engine'))
|
||||
|
||||
facade._factory._start()
|
||||
facade.dispose_pool()
|
||||
|
||||
self.assertEqual(
|
||||
facade._factory._writer_engine.pool.mock_calls,
|
||||
[mock.call.dispose()]
|
||||
)
|
||||
|
||||
def test_dispose_pool_w_reader(self):
|
||||
facade = enginefacade.transaction_context()
|
||||
|
||||
facade.configure(
|
||||
connection=self.engine_uri,
|
||||
slave_connection=self.slave_uri
|
||||
)
|
||||
|
||||
facade.dispose_pool()
|
||||
self.assertFalse(hasattr(facade._factory, '_writer_engine'))
|
||||
self.assertFalse(hasattr(facade._factory, '_reader_engine'))
|
||||
|
||||
facade._factory._start()
|
||||
facade.dispose_pool()
|
||||
|
||||
self.assertEqual(
|
||||
facade._factory._writer_engine.pool.mock_calls,
|
||||
[mock.call.dispose()]
|
||||
)
|
||||
self.assertEqual(
|
||||
facade._factory._reader_engine.pool.mock_calls,
|
||||
[mock.call.dispose()]
|
||||
)
|
||||
|
||||
def test_session_reader_decorator(self):
|
||||
context = oslo_context.RequestContext()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user