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()
import pytest
import psycopg
+from psycopg.pq import TransactionStatus
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')")
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')")
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')")
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')")
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')")
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')")
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
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",
[
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
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
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
import pytest
import psycopg
+from psycopg.pq import TransactionStatus
pytestmark = [pytest.mark.asyncio]
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')")
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')")
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(
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')")
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(
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(
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
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",
[
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
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
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