summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/engine/reconnect.py18
-rw-r--r--test/testlib/engines.py5
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