Skip to content

Commit 1fd06a9

Browse files
verify query and rollback are siblings
1 parent 1f1653a commit 1fd06a9

File tree

1 file changed

+66
-32
lines changed

1 file changed

+66
-32
lines changed

tests/integrations/django/test_db_transactions.py

Lines changed: 66 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -192,29 +192,38 @@ def test_db_no_autocommit_rollback_execute(sentry_init, client, capture_events):
192192

193193
assert event["contexts"]["trace"]["origin"] == "auto.http.django"
194194

195-
commit_spans = [
195+
rollback_spans = [
196196
span
197197
for span in event["spans"]
198198
if span["data"].get(SPANDATA.DB_OPERATION) == DBOPERATION.ROLLBACK
199199
]
200-
assert len(commit_spans) == 1
201-
commit_span = commit_spans[0]
202-
assert commit_span["origin"] == "auto.db.django"
200+
assert len(rollback_spans) == 1
201+
rollback_span = rollback_spans[0]
202+
assert rollback_span["origin"] == "auto.db.django"
203203

204204
# Verify other database attributes
205-
assert commit_span["data"].get(SPANDATA.DB_SYSTEM) == "postgresql"
205+
assert rollback_span["data"].get(SPANDATA.DB_SYSTEM) == "postgresql"
206206
conn_params = connections["postgres"].get_connection_params()
207-
assert commit_span["data"].get(SPANDATA.DB_NAME) is not None
208-
assert commit_span["data"].get(SPANDATA.DB_NAME) == conn_params.get(
207+
assert rollback_span["data"].get(SPANDATA.DB_NAME) is not None
208+
assert rollback_span["data"].get(SPANDATA.DB_NAME) == conn_params.get(
209209
"database"
210210
) or conn_params.get("dbname")
211-
assert commit_span["data"].get(SPANDATA.SERVER_ADDRESS) == os.environ.get(
211+
assert rollback_span["data"].get(SPANDATA.SERVER_ADDRESS) == os.environ.get(
212212
"SENTRY_PYTHON_TEST_POSTGRES_HOST", "localhost"
213213
)
214-
assert commit_span["data"].get(SPANDATA.SERVER_PORT) == os.environ.get(
214+
assert rollback_span["data"].get(SPANDATA.SERVER_PORT) == os.environ.get(
215215
"SENTRY_PYTHON_TEST_POSTGRES_PORT", "5432"
216216
)
217217

218+
insert_spans = [
219+
span for span in event["spans"] if span["description"].startswith("INSERT INTO")
220+
]
221+
assert len(insert_spans) == 1
222+
insert_span = insert_spans[0]
223+
224+
# Verify query and commit statements are siblings
225+
assert rollback_span["parent_span_id"] == insert_span["parent_span_id"]
226+
218227

219228
@pytest.mark.forked
220229
@pytest_mark_django_db_decorator(transaction=True)
@@ -274,23 +283,31 @@ def test_db_no_autocommit_rollback_executemany(sentry_init, client, capture_even
274283
assert event["contexts"]["trace"]["origin"] == "manual"
275284
assert event["spans"][0]["origin"] == "auto.db.django"
276285

277-
commit_spans = [
286+
rollback_spans = [
278287
span
279288
for span in event["spans"]
280289
if span["data"].get(SPANDATA.DB_OPERATION) == DBOPERATION.ROLLBACK
281290
]
282-
assert len(commit_spans) == 1
283-
commit_span = commit_spans[0]
284-
assert commit_span["origin"] == "auto.db.django"
291+
assert len(rollback_spans) == 1
292+
rollback_span = rollback_spans[0]
293+
assert rollback_span["origin"] == "auto.db.django"
285294

286295
# Verify other database attributes
287-
assert commit_span["data"].get(SPANDATA.DB_SYSTEM) == "sqlite"
296+
assert rollback_span["data"].get(SPANDATA.DB_SYSTEM) == "sqlite"
288297
conn_params = connection.get_connection_params()
289-
assert commit_span["data"].get(SPANDATA.DB_NAME) is not None
290-
assert commit_span["data"].get(SPANDATA.DB_NAME) == conn_params.get(
298+
assert rollback_span["data"].get(SPANDATA.DB_NAME) is not None
299+
assert rollback_span["data"].get(SPANDATA.DB_NAME) == conn_params.get(
291300
"database"
292301
) or conn_params.get("dbname")
293302

303+
insert_spans = [
304+
span for span in event["spans"] if span["description"].startswith("INSERT INTO")
305+
]
306+
307+
# Verify queries and commit statements are siblings
308+
for insert_span in insert_spans:
309+
assert rollback_span["parent_span_id"] == insert_span["parent_span_id"]
310+
294311

295312
@pytest.mark.forked
296313
@pytest_mark_django_db_decorator(transaction=True)
@@ -457,29 +474,38 @@ def test_db_atomic_rollback_execute(sentry_init, client, capture_events):
457474

458475
assert event["contexts"]["trace"]["origin"] == "auto.http.django"
459476

460-
commit_spans = [
477+
rollback_spans = [
461478
span
462479
for span in event["spans"]
463480
if span["data"].get(SPANDATA.DB_OPERATION) == DBOPERATION.ROLLBACK
464481
]
465-
assert len(commit_spans) == 1
466-
commit_span = commit_spans[0]
467-
assert commit_span["origin"] == "auto.db.django"
482+
assert len(rollback_spans) == 1
483+
rollback_span = rollback_spans[0]
484+
assert rollback_span["origin"] == "auto.db.django"
468485

469486
# Verify other database attributes
470-
assert commit_span["data"].get(SPANDATA.DB_SYSTEM) == "postgresql"
487+
assert rollback_span["data"].get(SPANDATA.DB_SYSTEM) == "postgresql"
471488
conn_params = connections["postgres"].get_connection_params()
472-
assert commit_span["data"].get(SPANDATA.DB_NAME) is not None
473-
assert commit_span["data"].get(SPANDATA.DB_NAME) == conn_params.get(
489+
assert rollback_span["data"].get(SPANDATA.DB_NAME) is not None
490+
assert rollback_span["data"].get(SPANDATA.DB_NAME) == conn_params.get(
474491
"database"
475492
) or conn_params.get("dbname")
476-
assert commit_span["data"].get(SPANDATA.SERVER_ADDRESS) == os.environ.get(
493+
assert rollback_span["data"].get(SPANDATA.SERVER_ADDRESS) == os.environ.get(
477494
"SENTRY_PYTHON_TEST_POSTGRES_HOST", "localhost"
478495
)
479-
assert commit_span["data"].get(SPANDATA.SERVER_PORT) == os.environ.get(
496+
assert rollback_span["data"].get(SPANDATA.SERVER_PORT) == os.environ.get(
480497
"SENTRY_PYTHON_TEST_POSTGRES_PORT", "5432"
481498
)
482499

500+
insert_spans = [
501+
span for span in event["spans"] if span["description"].startswith("INSERT INTO")
502+
]
503+
assert len(insert_spans) == 1
504+
insert_span = insert_spans[0]
505+
506+
# Verify query and commit statements are siblings
507+
assert rollback_span["parent_span_id"] == insert_span["parent_span_id"]
508+
483509

484510
@pytest.mark.forked
485511
@pytest_mark_django_db_decorator(transaction=True)
@@ -537,19 +563,27 @@ def test_db_atomic_rollback_executemany(sentry_init, client, capture_events):
537563

538564
assert event["contexts"]["trace"]["origin"] == "manual"
539565

540-
commit_spans = [
566+
rollback_spans = [
541567
span
542568
for span in event["spans"]
543569
if span["data"].get(SPANDATA.DB_OPERATION) == DBOPERATION.ROLLBACK
544570
]
545-
assert len(commit_spans) == 1
546-
commit_span = commit_spans[0]
547-
assert commit_span["origin"] == "auto.db.django"
571+
assert len(rollback_spans) == 1
572+
rollback_span = rollback_spans[0]
573+
assert rollback_span["origin"] == "auto.db.django"
548574

549575
# Verify other database attributes
550-
assert commit_span["data"].get(SPANDATA.DB_SYSTEM) == "sqlite"
576+
assert rollback_span["data"].get(SPANDATA.DB_SYSTEM) == "sqlite"
551577
conn_params = connection.get_connection_params()
552-
assert commit_span["data"].get(SPANDATA.DB_NAME) is not None
553-
assert commit_span["data"].get(SPANDATA.DB_NAME) == conn_params.get(
578+
assert rollback_span["data"].get(SPANDATA.DB_NAME) is not None
579+
assert rollback_span["data"].get(SPANDATA.DB_NAME) == conn_params.get(
554580
"database"
555581
) or conn_params.get("dbname")
582+
583+
insert_spans = [
584+
span for span in event["spans"] if span["description"].startswith("INSERT INTO")
585+
]
586+
587+
# Verify queries and commit statements are siblings
588+
for insert_span in insert_spans:
589+
assert rollback_span["parent_span_id"] == insert_span["parent_span_id"]

0 commit comments

Comments
 (0)