From: Daniele Varrazzo Date: Sun, 28 Nov 2021 18:50:59 +0000 (+0100) Subject: Close connections in TPC tests to avoid warnings in tests X-Git-Tag: pool-3.1~102^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=11eef0252238d89cc0d2d478c5f63543bec554fc;p=thirdparty%2Fpsycopg.git Close connections in TPC tests to avoid warnings in tests --- diff --git a/tests/dbapi20_tpc.py b/tests/dbapi20_tpc.py index 5026a6124..7254294de 100644 --- a/tests/dbapi20_tpc.py +++ b/tests/dbapi20_tpc.py @@ -28,19 +28,22 @@ class TwoPhaseCommitTests(unittest.TestCase): def test_xid(self): con = self.connect() try: - xid = con.xid(42, "global", "bqual") - except self.driver.NotSupportedError: - self.fail("Driver does not support transaction IDs.") - - self.assertEquals(xid[0], 42) - self.assertEquals(xid[1], "global") - self.assertEquals(xid[2], "bqual") - - # Try some extremes for the transaction ID: - xid = con.xid(0, "", "") - self.assertEquals(tuple(xid), (0, "", "")) - xid = con.xid(0x7fffffff, "a" * 64, "b" * 64) - self.assertEquals(tuple(xid), (0x7fffffff, "a" * 64, "b" * 64)) + try: + xid = con.xid(42, "global", "bqual") + except self.driver.NotSupportedError: + self.fail("Driver does not support transaction IDs.") + + self.assertEquals(xid[0], 42) + self.assertEquals(xid[1], "global") + self.assertEquals(xid[2], "bqual") + + # Try some extremes for the transaction ID: + xid = con.xid(0, "", "") + self.assertEquals(tuple(xid), (0, "", "")) + xid = con.xid(0x7fffffff, "a" * 64, "b" * 64) + self.assertEquals(tuple(xid), (0x7fffffff, "a" * 64, "b" * 64)) + finally: + con.close() def test_tpc_begin(self): con = self.connect() diff --git a/tests/test_tpc.py b/tests/test_tpc.py index 29dd7dd28..cde026245 100644 --- a/tests/test_tpc.py +++ b/tests/test_tpc.py @@ -1,6 +1,7 @@ import pytest import psycopg +from psycopg.pq import TransactionStatus def test_tpc_disabled(conn): @@ -17,10 +18,10 @@ def test_tpc_disabled(conn): class TestTPC: def test_tpc_commit(self, conn, tpc): xid = conn.xid(1, "gtrid", "bqual") - assert conn.info.transaction_status == conn.TransactionStatus.IDLE + assert conn.info.transaction_status == TransactionStatus.IDLE conn.tpc_begin(xid) - assert conn.info.transaction_status == conn.TransactionStatus.INTRANS + assert conn.info.transaction_status == TransactionStatus.INTRANS cur = conn.cursor() cur.execute("insert into test_tpc values ('test_tpc_commit')") @@ -28,21 +29,21 @@ class TestTPC: assert tpc.count_test_records() == 0 conn.tpc_prepare() - assert conn.info.transaction_status == conn.TransactionStatus.IDLE + assert conn.info.transaction_status == TransactionStatus.IDLE assert tpc.count_xacts() == 1 assert tpc.count_test_records() == 0 conn.tpc_commit() - assert conn.info.transaction_status == conn.TransactionStatus.IDLE + assert conn.info.transaction_status == TransactionStatus.IDLE assert tpc.count_xacts() == 0 assert tpc.count_test_records() == 1 def test_tpc_commit_one_phase(self, conn, tpc): xid = conn.xid(1, "gtrid", "bqual") - assert conn.info.transaction_status == conn.TransactionStatus.IDLE + assert conn.info.transaction_status == TransactionStatus.IDLE conn.tpc_begin(xid) - assert conn.info.transaction_status == conn.TransactionStatus.INTRANS + assert conn.info.transaction_status == TransactionStatus.INTRANS cur = conn.cursor() cur.execute("insert into test_tpc values ('test_tpc_commit_1p')") @@ -50,16 +51,16 @@ class TestTPC: assert tpc.count_test_records() == 0 conn.tpc_commit() - assert conn.info.transaction_status == conn.TransactionStatus.IDLE + assert conn.info.transaction_status == TransactionStatus.IDLE assert tpc.count_xacts() == 0 assert tpc.count_test_records() == 1 def test_tpc_commit_recovered(self, conn, dsn, tpc): xid = conn.xid(1, "gtrid", "bqual") - assert conn.info.transaction_status == conn.TransactionStatus.IDLE + assert conn.info.transaction_status == TransactionStatus.IDLE conn.tpc_begin(xid) - assert conn.info.transaction_status == conn.TransactionStatus.INTRANS + assert conn.info.transaction_status == TransactionStatus.INTRANS cur = conn.cursor() cur.execute("insert into test_tpc values ('test_tpc_commit_rec')") @@ -71,20 +72,20 @@ class TestTPC: assert tpc.count_xacts() == 1 assert tpc.count_test_records() == 0 - conn = psycopg.connect(dsn) - xid = conn.xid(1, "gtrid", "bqual") - conn.tpc_commit(xid) + with psycopg.connect(dsn) as conn: + xid = conn.xid(1, "gtrid", "bqual") + conn.tpc_commit(xid) + assert conn.info.transaction_status == TransactionStatus.IDLE - assert conn.info.transaction_status == conn.TransactionStatus.IDLE assert tpc.count_xacts() == 0 assert tpc.count_test_records() == 1 def test_tpc_rollback(self, conn, tpc): xid = conn.xid(1, "gtrid", "bqual") - assert conn.info.transaction_status == conn.TransactionStatus.IDLE + assert conn.info.transaction_status == TransactionStatus.IDLE conn.tpc_begin(xid) - assert conn.info.transaction_status == conn.TransactionStatus.INTRANS + assert conn.info.transaction_status == TransactionStatus.INTRANS cur = conn.cursor() cur.execute("insert into test_tpc values ('test_tpc_rollback')") @@ -92,21 +93,21 @@ class TestTPC: assert tpc.count_test_records() == 0 conn.tpc_prepare() - assert conn.info.transaction_status == conn.TransactionStatus.IDLE + assert conn.info.transaction_status == TransactionStatus.IDLE assert tpc.count_xacts() == 1 assert tpc.count_test_records() == 0 conn.tpc_rollback() - assert conn.info.transaction_status == conn.TransactionStatus.IDLE + assert conn.info.transaction_status == TransactionStatus.IDLE assert tpc.count_xacts() == 0 assert tpc.count_test_records() == 0 def test_tpc_rollback_one_phase(self, conn, tpc): xid = conn.xid(1, "gtrid", "bqual") - assert conn.info.transaction_status == conn.TransactionStatus.IDLE + assert conn.info.transaction_status == TransactionStatus.IDLE conn.tpc_begin(xid) - assert conn.info.transaction_status == conn.TransactionStatus.INTRANS + assert conn.info.transaction_status == TransactionStatus.INTRANS cur = conn.cursor() cur.execute("insert into test_tpc values ('test_tpc_rollback_1p')") @@ -114,16 +115,16 @@ class TestTPC: assert tpc.count_test_records() == 0 conn.tpc_rollback() - assert conn.info.transaction_status == conn.TransactionStatus.IDLE + assert conn.info.transaction_status == TransactionStatus.IDLE assert tpc.count_xacts() == 0 assert tpc.count_test_records() == 0 def test_tpc_rollback_recovered(self, conn, dsn, tpc): xid = conn.xid(1, "gtrid", "bqual") - assert conn.info.transaction_status == conn.TransactionStatus.IDLE + assert conn.info.transaction_status == TransactionStatus.IDLE conn.tpc_begin(xid) - assert conn.info.transaction_status == conn.TransactionStatus.INTRANS + assert conn.info.transaction_status == TransactionStatus.INTRANS cur = conn.cursor() cur.execute("insert into test_tpc values ('test_tpc_commit_rec')") @@ -135,24 +136,24 @@ class TestTPC: assert tpc.count_xacts() == 1 assert tpc.count_test_records() == 0 - conn = psycopg.connect(dsn) - xid = conn.xid(1, "gtrid", "bqual") - conn.tpc_rollback(xid) + with psycopg.connect(dsn) as conn: + xid = conn.xid(1, "gtrid", "bqual") + conn.tpc_rollback(xid) + assert conn.info.transaction_status == TransactionStatus.IDLE - assert conn.info.transaction_status == conn.TransactionStatus.IDLE assert tpc.count_xacts() == 0 assert tpc.count_test_records() == 0 def test_status_after_recover(self, conn, tpc): - assert conn.info.transaction_status == conn.TransactionStatus.IDLE + assert conn.info.transaction_status == TransactionStatus.IDLE conn.tpc_recover() - assert conn.info.transaction_status == conn.TransactionStatus.IDLE + assert conn.info.transaction_status == TransactionStatus.IDLE cur = conn.cursor() cur.execute("select 1") - assert conn.info.transaction_status == conn.TransactionStatus.INTRANS + assert conn.info.transaction_status == TransactionStatus.INTRANS conn.tpc_recover() - assert conn.info.transaction_status == conn.TransactionStatus.INTRANS + assert conn.info.transaction_status == TransactionStatus.INTRANS def test_recovered_xids(self, conn, tpc): # insert a few test xns @@ -210,18 +211,19 @@ class TestTPC: conn.tpc_prepare() conn.close() - conn = psycopg.connect(dsn) - xids = [ - x for x in conn.tpc_recover() if x.database == conn.info.dbname - ] - assert len(xids) == 1 - xid = xids[0] + with psycopg.connect(dsn) as conn: + xids = [ + x for x in conn.tpc_recover() if x.database == conn.info.dbname + ] + + assert len(xids) == 1 + xid = xids[0] + conn.tpc_rollback(xid) + assert xid.format_id == fid assert xid.gtrid == gtrid assert xid.bqual == bqual - conn.tpc_rollback(xid) - @pytest.mark.parametrize( "tid", [ @@ -235,28 +237,29 @@ class TestTPC: conn.tpc_prepare() conn.close() - conn = psycopg.connect(dsn) - xids = [ - x for x in conn.tpc_recover() if x.database == conn.info.dbname - ] - assert len(xids) == 1 - xid = xids[0] + with psycopg.connect(dsn) as conn: + xids = [ + x for x in conn.tpc_recover() if x.database == conn.info.dbname + ] + + assert len(xids) == 1 + xid = xids[0] + conn.tpc_rollback(xid) + assert xid.format_id is None assert xid.gtrid == tid assert xid.bqual is None - conn.tpc_rollback(xid) - def test_xid_unicode(self, conn, dsn, tpc): x1 = conn.xid(10, "uni", "code") conn.tpc_begin(x1) conn.tpc_prepare() conn.close() - conn = psycopg.connect(dsn) - xid = [ - x for x in conn.tpc_recover() if x.database == conn.info.dbname - ][0] + with psycopg.connect(dsn) as conn: + xid = [ + x for x in conn.tpc_recover() if x.database == conn.info.dbname + ][0] assert 10 == xid.format_id assert "uni" == xid.gtrid assert "code" == xid.bqual @@ -272,10 +275,11 @@ class TestTPC: conn.tpc_prepare() conn.close() - conn = psycopg.connect(dsn) - xid = [ - x for x in conn.tpc_recover() if x.database == conn.info.dbname - ][0] + with psycopg.connect(dsn) as conn: + xid = [ + x for x in conn.tpc_recover() if x.database == conn.info.dbname + ][0] + assert xid.format_id is None assert xid.gtrid == "transaction-id" assert xid.bqual is None @@ -292,9 +296,10 @@ class TestTPC: conn.tpc_prepare() conn.close() - conn = psycopg.connect(dsn) - xids = conn.tpc_recover() - xid = [x for x in xids if x.database == conn.info.dbname][0] + with psycopg.connect(dsn) as conn: + xids = conn.tpc_recover() + xid = [x for x in xids if x.database == conn.info.dbname][0] + assert xid.format_id is None assert xid.gtrid == "dict-connection" assert xid.bqual is None diff --git a/tests/test_tpc_async.py b/tests/test_tpc_async.py index 76aa6459b..6a80ecebf 100644 --- a/tests/test_tpc_async.py +++ b/tests/test_tpc_async.py @@ -1,6 +1,7 @@ import pytest import psycopg +from psycopg.pq import TransactionStatus pytestmark = [pytest.mark.asyncio] @@ -20,10 +21,10 @@ async def test_tpc_disabled(aconn): class TestTPC: async def test_tpc_commit(self, aconn, tpc): xid = aconn.xid(1, "gtrid", "bqual") - assert aconn.info.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.info.transaction_status == TransactionStatus.IDLE await aconn.tpc_begin(xid) - assert aconn.info.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.info.transaction_status == TransactionStatus.INTRANS cur = aconn.cursor() await cur.execute("insert into test_tpc values ('test_tpc_commit')") @@ -31,21 +32,21 @@ class TestTPC: assert tpc.count_test_records() == 0 await aconn.tpc_prepare() - assert aconn.info.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.info.transaction_status == TransactionStatus.IDLE assert tpc.count_xacts() == 1 assert tpc.count_test_records() == 0 await aconn.tpc_commit() - assert aconn.info.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.info.transaction_status == TransactionStatus.IDLE assert tpc.count_xacts() == 0 assert tpc.count_test_records() == 1 async def test_tpc_commit_one_phase(self, aconn, tpc): xid = aconn.xid(1, "gtrid", "bqual") - assert aconn.info.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.info.transaction_status == TransactionStatus.IDLE await aconn.tpc_begin(xid) - assert aconn.info.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.info.transaction_status == TransactionStatus.INTRANS cur = aconn.cursor() await cur.execute("insert into test_tpc values ('test_tpc_commit_1p')") @@ -53,16 +54,16 @@ class TestTPC: assert tpc.count_test_records() == 0 await aconn.tpc_commit() - assert aconn.info.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.info.transaction_status == TransactionStatus.IDLE assert tpc.count_xacts() == 0 assert tpc.count_test_records() == 1 async def test_tpc_commit_recovered(self, aconn, dsn, tpc): xid = aconn.xid(1, "gtrid", "bqual") - assert aconn.info.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.info.transaction_status == TransactionStatus.IDLE await aconn.tpc_begin(xid) - assert aconn.info.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.info.transaction_status == TransactionStatus.INTRANS cur = aconn.cursor() await cur.execute( @@ -76,20 +77,20 @@ class TestTPC: assert tpc.count_xacts() == 1 assert tpc.count_test_records() == 0 - aconn = await psycopg.AsyncConnection.connect(dsn) - xid = aconn.xid(1, "gtrid", "bqual") - await aconn.tpc_commit(xid) + async with await psycopg.AsyncConnection.connect(dsn) as aconn: + xid = aconn.xid(1, "gtrid", "bqual") + await aconn.tpc_commit(xid) + assert aconn.info.transaction_status == TransactionStatus.IDLE - assert aconn.info.transaction_status == aconn.TransactionStatus.IDLE assert tpc.count_xacts() == 0 assert tpc.count_test_records() == 1 async def test_tpc_rollback(self, aconn, tpc): xid = aconn.xid(1, "gtrid", "bqual") - assert aconn.info.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.info.transaction_status == TransactionStatus.IDLE await aconn.tpc_begin(xid) - assert aconn.info.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.info.transaction_status == TransactionStatus.INTRANS cur = aconn.cursor() await cur.execute("insert into test_tpc values ('test_tpc_rollback')") @@ -97,21 +98,21 @@ class TestTPC: assert tpc.count_test_records() == 0 await aconn.tpc_prepare() - assert aconn.info.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.info.transaction_status == TransactionStatus.IDLE assert tpc.count_xacts() == 1 assert tpc.count_test_records() == 0 await aconn.tpc_rollback() - assert aconn.info.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.info.transaction_status == TransactionStatus.IDLE assert tpc.count_xacts() == 0 assert tpc.count_test_records() == 0 async def test_tpc_rollback_one_phase(self, aconn, tpc): xid = aconn.xid(1, "gtrid", "bqual") - assert aconn.info.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.info.transaction_status == TransactionStatus.IDLE await aconn.tpc_begin(xid) - assert aconn.info.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.info.transaction_status == TransactionStatus.INTRANS cur = aconn.cursor() await cur.execute( @@ -121,16 +122,16 @@ class TestTPC: assert tpc.count_test_records() == 0 await aconn.tpc_rollback() - assert aconn.info.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.info.transaction_status == TransactionStatus.IDLE assert tpc.count_xacts() == 0 assert tpc.count_test_records() == 0 async def test_tpc_rollback_recovered(self, aconn, dsn, tpc): xid = aconn.xid(1, "gtrid", "bqual") - assert aconn.info.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.info.transaction_status == TransactionStatus.IDLE await aconn.tpc_begin(xid) - assert aconn.info.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.info.transaction_status == TransactionStatus.INTRANS cur = aconn.cursor() await cur.execute( @@ -144,24 +145,24 @@ class TestTPC: assert tpc.count_xacts() == 1 assert tpc.count_test_records() == 0 - aconn = await psycopg.AsyncConnection.connect(dsn) - xid = aconn.xid(1, "gtrid", "bqual") - await aconn.tpc_rollback(xid) + async with await psycopg.AsyncConnection.connect(dsn) as aconn: + xid = aconn.xid(1, "gtrid", "bqual") + await aconn.tpc_rollback(xid) + assert aconn.info.transaction_status == TransactionStatus.IDLE - assert aconn.info.transaction_status == aconn.TransactionStatus.IDLE assert tpc.count_xacts() == 0 assert tpc.count_test_records() == 0 async def test_status_after_recover(self, aconn, tpc): - assert aconn.info.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.info.transaction_status == TransactionStatus.IDLE await aconn.tpc_recover() - assert aconn.info.transaction_status == aconn.TransactionStatus.IDLE + assert aconn.info.transaction_status == TransactionStatus.IDLE cur = aconn.cursor() await cur.execute("select 1") - assert aconn.info.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.info.transaction_status == TransactionStatus.INTRANS await aconn.tpc_recover() - assert aconn.info.transaction_status == aconn.TransactionStatus.INTRANS + assert aconn.info.transaction_status == TransactionStatus.INTRANS async def test_recovered_xids(self, aconn, tpc): # insert a few test xns @@ -219,20 +220,20 @@ class TestTPC: await aconn.tpc_prepare() await aconn.close() - aconn = await psycopg.AsyncConnection.connect(dsn) - xids = [ - x - for x in await aconn.tpc_recover() - if x.database == aconn.info.dbname - ] - assert len(xids) == 1 - xid = xids[0] + async with await psycopg.AsyncConnection.connect(dsn) as aconn: + xids = [ + x + for x in await aconn.tpc_recover() + if x.database == aconn.info.dbname + ] + assert len(xids) == 1 + xid = xids[0] + await aconn.tpc_rollback(xid) + assert xid.format_id == fid assert xid.gtrid == gtrid assert xid.bqual == bqual - await aconn.tpc_rollback(xid) - @pytest.mark.parametrize( "tid", [ @@ -246,32 +247,33 @@ class TestTPC: await aconn.tpc_prepare() await aconn.close() - aconn = await psycopg.AsyncConnection.connect(dsn) - xids = [ - x - for x in await aconn.tpc_recover() - if x.database == aconn.info.dbname - ] - assert len(xids) == 1 - xid = xids[0] + async with await psycopg.AsyncConnection.connect(dsn) as aconn: + xids = [ + x + for x in await aconn.tpc_recover() + if x.database == aconn.info.dbname + ] + assert len(xids) == 1 + xid = xids[0] + await aconn.tpc_rollback(xid) + assert xid.format_id is None assert xid.gtrid == tid assert xid.bqual is None - await aconn.tpc_rollback(xid) - async def test_xid_unicode(self, aconn, dsn, tpc): x1 = aconn.xid(10, "uni", "code") await aconn.tpc_begin(x1) await aconn.tpc_prepare() await aconn.close() - aconn = await psycopg.AsyncConnection.connect(dsn) - xid = [ - x - for x in await aconn.tpc_recover() - if x.database == aconn.info.dbname - ][0] + async with await psycopg.AsyncConnection.connect(dsn) as aconn: + xid = [ + x + for x in await aconn.tpc_recover() + if x.database == aconn.info.dbname + ][0] + assert 10 == xid.format_id assert "uni" == xid.gtrid assert "code" == xid.bqual @@ -287,12 +289,13 @@ class TestTPC: await aconn.tpc_prepare() await aconn.close() - aconn = await psycopg.AsyncConnection.connect(dsn) - xid = [ - x - for x in await aconn.tpc_recover() - if x.database == aconn.info.dbname - ][0] + async with await psycopg.AsyncConnection.connect(dsn) as aconn: + xid = [ + x + for x in await aconn.tpc_recover() + if x.database == aconn.info.dbname + ][0] + assert xid.format_id is None assert xid.gtrid == "transaction-id" assert xid.bqual is None @@ -309,9 +312,10 @@ class TestTPC: await aconn.tpc_prepare() await aconn.close() - aconn = await psycopg.AsyncConnection.connect(dsn) - xids = await aconn.tpc_recover() - xid = [x for x in xids if x.database == aconn.info.dbname][0] + async with await psycopg.AsyncConnection.connect(dsn) as aconn: + xids = await aconn.tpc_recover() + xid = [x for x in xids if x.database == aconn.info.dbname][0] + assert xid.format_id is None assert xid.gtrid == "dict-connection" assert xid.bqual is None