]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
merged r5018 from 0.4 branch, but using contextual_connect() (will fix in 0.4 too)
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 10 Aug 2008 05:26:16 +0000 (05:26 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 10 Aug 2008 05:26:16 +0000 (05:26 +0000)
test/engine/reconnect.py
test/testlib/engines.py

index 1539d80e0df6ec01d0db15ac4a87fd925d8f92ae..8bb2d9cd6775f159b84a71194f463456daf1bfb0 100644 (file)
@@ -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):
index 73ac80632e5b1174f6431866189ad99d5a0fb02d..3df98d4fc4ec524fdb86f4e1c63ac523808670bd 100644 (file)
@@ -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