MCPcopy
hub / github.com/psycopg/psycopg / test_fail_rollback_close

Function test_fail_rollback_close

tests/pool/test_pool_async.py:341–368  ·  view source on GitHub ↗
(dsn, caplog, monkeypatch)

Source from the content-addressed store, hash-verified

339
340@pytest.mark.crdb_skip("backend pid")
341async def test_fail_rollback_close(dsn, caplog, monkeypatch):
342 caplog.set_level(logging.WARNING, logger="psycopg.pool")
343
344 async with pool.AsyncConnectionPool(dsn, min_size=1) as p:
345 conn = await p.getconn()
346
347 async def bad_rollback():
348 conn.pgconn.finish()
349 await orig_rollback()
350
351 # Make the rollback fail
352 orig_rollback = conn.rollback
353 monkeypatch.setattr(conn, "rollback", bad_rollback)
354
355 pid = conn.info.backend_pid
356 with pytest.raises(psycopg.ProgrammingError):
357 await conn.execute("wat")
358 assert conn.info.transaction_status == TransactionStatus.INERROR
359 await p.putconn(conn)
360
361 async with p.connection() as conn2:
362 assert conn2.info.backend_pid != pid
363 assert conn2.info.transaction_status == TransactionStatus.IDLE
364
365 assert len(caplog.records) == 3
366 assert "INERROR" in caplog.records[0].message
367 assert "OperationalError" in caplog.records[1].message
368 assert "BAD" in caplog.records[2].message
369
370
371async def test_del_no_warning(dsn, recwarn, gc_collect):

Callers

nothing calls this directly

Calls 4

getconnMethod · 0.45
executeMethod · 0.45
putconnMethod · 0.45
connectionMethod · 0.45

Tested by

no test coverage detected