From: Mike Bayer Date: Wed, 8 Apr 2015 04:10:54 +0000 (-0400) Subject: - add some teardown for connections that are held open after tests X-Git-Tag: rel_0_9_10~49 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=eb6afc187e83d5ddf0c2b516b5d75e13d52d5f74;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - add some teardown for connections that are held open after tests in some cases, interfering with tests that check pool._refs (cherry picked from commit 44a9820b4e02f65b3884fa2c016efce9663e4910) --- diff --git a/test/engine/test_pool.py b/test/engine/test_pool.py index 78d4a01b94..81360dc82d 100644 --- a/test/engine/test_pool.py +++ b/test/engine/test_pool.py @@ -9,6 +9,7 @@ from sqlalchemy.testing.engines import testing_engine from sqlalchemy.testing import fixtures import random from sqlalchemy.testing.mock import Mock, call +import weakref join_timeout = 10 @@ -35,11 +36,22 @@ def MockDBAPI(): class PoolTestBase(fixtures.TestBase): def setup(self): pool.clear_managers() + self._teardown_conns = [] + + def teardown(self): + for ref in self._teardown_conns: + conn = ref() + if conn: + conn.close() @classmethod def teardown_class(cls): pool.clear_managers() + def _with_teardown(self, connection): + self._teardown_conns.append(weakref.ref(connection)) + return connection + def _queuepool_fixture(self, **kw): dbapi, pool = self._queuepool_dbapi_fixture(**kw) return pool @@ -960,9 +972,9 @@ class QueuePoolTest(PoolTestBase): return creator() p = pool.QueuePool(creator=create, pool_size=2, max_overflow=3) - c1 = p.connect() - c2 = p.connect() - c3 = p.connect() + c1 = self._with_teardown(p.connect()) + c2 = self._with_teardown(p.connect()) + c3 = self._with_teardown(p.connect()) eq_(p._overflow, 1) creator = failing_dbapi assert_raises(Exception, p.connect) @@ -1287,13 +1299,13 @@ class QueuePoolTest(PoolTestBase): dbapi.shutdown(False) - c1 = p.connect() + c1 = self._with_teardown(p.connect()) assert p._pool.empty() # poolsize is one, so we're empty OK - c2 = p.connect() + c2 = self._with_teardown(p.connect()) eq_(p._overflow, 1) # and not 2 # this hangs if p._overflow is 2 - c3 = p.connect() + c3 = self._with_teardown(p.connect()) def test_error_on_pooled_reconnect_cleanup_invalidate(self): dbapi, p = self._queuepool_dbapi_fixture(pool_size=1, max_overflow=2)