summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-08-10 05:26:16 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-08-10 05:26:16 +0000
commit50c4825b54502bdd73b531704b87d463c6edda88 (patch)
treefbc8f30dbdde252c504edd82e590f0eead315d64
parentc20f8b1cfe30d5000e7bcf49c3ad031ce127f7df (diff)
downloadsqlalchemy-50c4825b54502bdd73b531704b87d463c6edda88.tar.gz
merged r5018 from 0.4 branch, but using contextual_connect() (will fix in 0.4 too)
-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