summaryrefslogtreecommitdiff
path: root/test/engine
diff options
context:
space:
mode:
Diffstat (limited to 'test/engine')
-rw-r--r--test/engine/test_pool.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/test/engine/test_pool.py b/test/engine/test_pool.py
index e3f34dfa7..b699afbc6 100644
--- a/test/engine/test_pool.py
+++ b/test/engine/test_pool.py
@@ -730,6 +730,35 @@ class PoolEventsTest(PoolTestBase):
p2.connect()
eq_(canary, ["listen_one", "listen_two", "listen_one", "listen_three"])
+ def test_connect_event_fails_invalidates(self):
+ fail = False
+
+ def listen_one(conn, rec):
+ if fail:
+ raise Exception("it failed")
+
+ def listen_two(conn, rec):
+ rec.info['important_flag'] = True
+
+ p1 = pool.QueuePool(
+ creator=MockDBAPI().connect, pool_size=1, max_overflow=0)
+ event.listen(p1, 'connect', listen_one)
+ event.listen(p1, 'connect', listen_two)
+
+ conn = p1.connect()
+ eq_(conn.info['important_flag'], True)
+ conn.invalidate()
+ conn.close()
+
+ fail = True
+ assert_raises(Exception, p1.connect)
+
+ fail = False
+
+ conn = p1.connect()
+ eq_(conn.info['important_flag'], True)
+ conn.close()
+
def teardown(self):
# TODO: need to get remove() functionality
# going