from psycopg import Connection, ProgrammingError, Rollback
+# TODOCRDB: is this the expected behaviour?
+crdb_skip_external_observer = pytest.mark.crdb(
+ "skip", reason="deadlock on observer connection"
+)
+
@pytest.fixture
def conn(conn, pipeline):
assert not inserted(svcconn)
+@crdb_skip_external_observer
def test_autocommit_off_and_tx_in_progress_successful_exit(conn, pipeline, svcconn):
"""
Scenario:
assert not inserted(svcconn)
+@crdb_skip_external_observer
def test_autocommit_off_and_tx_in_progress_exception_exit(conn, pipeline, svcconn):
"""
Scenario:
assert not inserted(svcconn)
+@crdb_skip_external_observer
def test_explicit_rollback_discards_changes(conn, svcconn):
"""
Raising a Rollback exception in the middle of a block exits the block and
assert_no_rows()
+@crdb_skip_external_observer
def test_explicit_rollback_outer_tx_unaffected(conn, svcconn):
"""
Raising a Rollback exception in the middle of a block does not impact an
assert not inserted(conn)
+@crdb_skip_external_observer
def test_explicit_rollback_of_enclosing_tx_outer_tx_unaffected(conn, svcconn):
"""
Rolling-back an enclosing transaction does not impact an outer transaction.
from psycopg import AsyncConnection, ProgrammingError, Rollback
from psycopg._compat import create_task
-from .test_transaction import in_transaction, insert_row, inserted
-from .test_transaction import ExpectedException, get_exc_info
+from .test_transaction import in_transaction, insert_row, inserted, get_exc_info
+from .test_transaction import ExpectedException, crdb_skip_external_observer
from .test_transaction import create_test_table # noqa # autouse fixture
pytestmark = pytest.mark.asyncio
assert not await inserted(aconn)
+@pytest.mark.crdb("skip", reason="pg_terminate_backend")
async def test_context_inerror_rollback_no_clobber(aconn, apipeline, dsn, caplog):
if apipeline:
# Only 'aconn' is possibly in pipeline mode, but the transaction and
assert "in rollback" in rec.message
+@pytest.mark.crdb("skip", reason="copy")
async def test_context_active_rollback_no_clobber(dsn, caplog):
caplog.set_level(logging.WARNING, logger="psycopg")
assert not inserted(svcconn)
+@crdb_skip_external_observer
async def test_autocommit_off_and_tx_in_progress_successful_exit(
aconn, apipeline, svcconn
):
assert not inserted(svcconn)
+@crdb_skip_external_observer
async def test_autocommit_off_and_tx_in_progress_exception_exit(
aconn, apipeline, svcconn
):
assert not inserted(svcconn)
+@crdb_skip_external_observer
async def test_explicit_rollback_discards_changes(aconn, svcconn):
"""
Raising a Rollback exception in the middle of a block exits the block and
await assert_no_rows()
+@crdb_skip_external_observer
async def test_explicit_rollback_outer_tx_unaffected(aconn, svcconn):
"""
Raising a Rollback exception in the middle of a block does not impact an
assert not await inserted(aconn)
+@crdb_skip_external_observer
async def test_explicit_rollback_of_enclosing_tx_outer_tx_unaffected(aconn, svcconn):
"""
Rolling-back an enclosing transaction does not impact an outer transaction.