diff options
| -rw-r--r-- | test/engine/reconnect.py | 18 | ||||
| -rw-r--r-- | test/testlib/engines.py | 5 |
2 files changed, 21 insertions, 2 deletions
diff --git a/test/engine/reconnect.py b/test/engine/reconnect.py index 1539d80e0..8bb2d9cd6 100644 --- a/test/engine/reconnect.py +++ b/test/engine/reconnect.py @@ -3,7 +3,7 @@ import weakref from testlib.sa import select, MetaData, Table, Column, Integer, String import testlib.sa as tsa from testlib import TestBase, testing, engines - +import time class MockDisconnect(Exception): pass @@ -277,6 +277,22 @@ class RealReconnectTest(TestBase): self.assertEquals(conn.execute(select([1])).scalar(), 1) assert not conn.invalidated +class RecycleTest(TestBase): + def test_basic(self): + for threadlocal in (False, True): + engine = engines.reconnecting_engine(options={'pool_recycle':1, 'pool_threadlocal':threadlocal}) + + conn = engine.contextual_connect() + self.assertEquals(conn.execute(select([1])).scalar(), 1) + conn.close() + + engine.test_shutdown() + time.sleep(2) + + conn = engine.contextual_connect() + self.assertEquals(conn.execute(select([1])).scalar(), 1) + conn.close() + meta, table, engine = None, None, None class InvalidateDuringResultTest(TestBase): def setUp(self): diff --git a/test/testlib/engines.py b/test/testlib/engines.py index 73ac80632..3df98d4fc 100644 --- a/test/testlib/engines.py +++ b/test/testlib/engines.py @@ -87,7 +87,10 @@ class ReconnectFixture(object): def reconnecting_engine(url=None, options=None): url = url or config.db_url dbapi = config.db.dialect.dbapi - engine = testing_engine(url, {'module':ReconnectFixture(dbapi)}) + if not options: + options = {} + options['module'] = ReconnectFixture(dbapi) + engine = testing_engine(url, options) engine.test_shutdown = engine.dialect.dbapi.shutdown return engine |
