From: Mike Bayer Date: Sun, 10 Aug 2008 05:15:11 +0000 (+0000) Subject: added a "live" test of recycle to further ensure #1133 is not valid X-Git-Tag: rel_0_4_8~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4aa36284926de225ff5869a6b468ae1eba33081b;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git added a "live" test of recycle to further ensure #1133 is not valid --- diff --git a/test/engine/reconnect.py b/test/engine/reconnect.py index b774ed7ae6..7cdd1a799a 100644 --- a/test/engine/reconnect.py +++ b/test/engine/reconnect.py @@ -2,7 +2,7 @@ import testenv; testenv.configure_for_tests() import sys, weakref from sqlalchemy import create_engine, exceptions, select, MetaData, Table, Column, Integer, String from testlib import * - +import time class MockDisconnect(Exception): pass @@ -275,6 +275,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.connect() + self.assertEquals(conn.execute(select([1])).scalar(), 1) + conn.close() + + engine.test_shutdown() + time.sleep(2) + + conn = engine.connect() + self.assertEquals(conn.execute(select([1])).scalar(), 1) + conn.close() + class InvalidateDuringResultTest(TestBase): def setUp(self): global meta, table, engine diff --git a/test/testlib/engines.py b/test/testlib/engines.py index f5694df57e..e0d3488bd7 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