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):
|
def _maker_args_for_conf(self, conf):
|
||||||
return self._args_for_conf(self._maker_cfg, 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):
|
def _start(self, conf=False, connection=None, slave_connection=None):
|
||||||
with self._start_lock:
|
with self._start_lock:
|
||||||
# self._started has been checked on the outside
|
# self._started has been checked on the outside
|
||||||
@@ -638,6 +648,10 @@ class _TransactionContextManager(object):
|
|||||||
|
|
||||||
return self._factory.get_legacy_facade()
|
return self._factory.get_legacy_facade()
|
||||||
|
|
||||||
|
def dispose_pool(self):
|
||||||
|
"""Call engine.pool.dispose() on underlying Engine objects."""
|
||||||
|
self._factory.dispose_pool()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def replace(self):
|
def replace(self):
|
||||||
"""Modifier to replace the global transaction factory with this one."""
|
"""Modifier to replace the global transaction factory with this one."""
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ class SingletonEngine(SingletonOnName):
|
|||||||
super(SingletonEngine, self).__init__(
|
super(SingletonEngine, self).__init__(
|
||||||
"engine",
|
"engine",
|
||||||
connect=mock.Mock(return_value=connection),
|
connect=mock.Mock(return_value=connection),
|
||||||
|
pool=mock.Mock(),
|
||||||
url=connection,
|
url=connection,
|
||||||
_assert_connection=connection,
|
_assert_connection=connection,
|
||||||
**kw
|
**kw
|
||||||
@@ -417,6 +418,48 @@ class MockFacadeTest(oslo_test_base.BaseTestCase):
|
|||||||
session.mock_calls,
|
session.mock_calls,
|
||||||
self.sessions.element_for_writer(writer).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):
|
def test_session_reader_decorator(self):
|
||||||
context = oslo_context.RequestContext()
|
context = oslo_context.RequestContext()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user