Skip to content

Commit 29de949

Browse files
committed
Address code review comments regarding the middleware tests
1 parent 92b4121 commit 29de949

1 file changed

Lines changed: 29 additions & 27 deletions

File tree

tests/integrations/starlette/test_starlette.py

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,7 @@ def test_middleware_spans(sentry_init, capture_events, capture_items, span_strea
654654
sentry_init(
655655
traces_sample_rate=1.0,
656656
integrations=[StarletteIntegration(middleware_spans=True)],
657+
auto_enabling_integrations=False, # disable because httpx will enable otherwise, leading to the segment span being an `http.client` sentry.op (the TestClient initiating the request), rather than the more realistic `http.server`.
657658
_experiments={
658659
"trace_lifecycle": "stream" if span_streaming else "static",
659660
},
@@ -686,19 +687,19 @@ def test_middleware_spans(sentry_init, capture_events, capture_items, span_strea
686687
if span_streaming:
687688
sentry_sdk.flush()
688689

689-
middleware_spans = sorted(
690-
[
691-
item.payload
692-
for item in items
693-
if item.payload.get("attributes", {})
694-
.get("sentry.op", "")
695-
.startswith("middleware.starlette")
696-
],
697-
key=lambda s: s["start_timestamp"],
698-
)
690+
segment = items.pop().payload
691+
middleware_spans = [item.payload for item in items]
692+
693+
# In span-first, the `middleware.starlette.send` ops appear first,
694+
# so the list needs to be reversed for the assertions below
695+
middleware_spans.reverse()
699696

700697
assert len(middleware_spans) == len(expected_middleware_spans)
701698

699+
assert segment["is_segment"] is True
700+
assert segment["attributes"]["sentry.op"] == "http.server"
701+
702+
idx = 0
702703
for idx, span in enumerate(middleware_spans):
703704
assert (
704705
span["attributes"]["middleware.name"] == expected_middleware_spans[idx]
@@ -725,6 +726,7 @@ def test_middleware_spans_disabled(
725726
sentry_init(
726727
traces_sample_rate=1.0,
727728
integrations=[StarletteIntegration(middleware_spans=False)],
729+
auto_enabling_integrations=False, # disable because httpx will enable otherwise, leading to the segment span being an `http.client` sentry.op (the TestClient initiating the request), rather than the more realistic `http.server`.
728730
_experiments={
729731
"trace_lifecycle": "stream" if span_streaming else "static",
730732
},
@@ -747,14 +749,13 @@ def test_middleware_spans_disabled(
747749
if span_streaming:
748750
sentry_sdk.flush()
749751

750-
middleware_spans = [
751-
item.payload
752-
for item in items
753-
if item.payload.get("attributes", {})
754-
.get("sentry.op", "")
755-
.startswith("middleware.starlette")
756-
]
752+
segment = items.pop().payload
753+
middleware_spans = [item.payload for item in items]
754+
757755
assert len(middleware_spans) == 0
756+
757+
assert segment["is_segment"] is True
758+
assert segment["attributes"]["sentry.op"] == "http.server"
758759
else:
759760
(_, transaction_event) = events
760761
assert len(transaction_event["spans"]) == 0
@@ -767,6 +768,7 @@ def test_middleware_callback_spans(
767768
sentry_init(
768769
traces_sample_rate=1.0,
769770
integrations=[StarletteIntegration(middleware_spans=True)],
771+
auto_enabling_integrations=False, # disable because httpx will enable otherwise, leading to the segment span being an `http.client` sentry.op (the TestClient initiating the request), rather than the more realistic `http.server`.
770772
_experiments={
771773
"trace_lifecycle": "stream" if span_streaming else "static",
772774
},
@@ -835,18 +837,18 @@ def test_middleware_callback_spans(
835837
if span_streaming:
836838
sentry_sdk.flush()
837839

838-
middleware_spans = sorted(
839-
[
840-
item.payload
841-
for item in items
842-
if item.payload.get("attributes", {})
843-
.get("sentry.op", "")
844-
.startswith("middleware.starlette")
845-
],
846-
key=lambda s: s["start_timestamp"],
847-
)
840+
segment = items.pop().payload
841+
middleware_spans = [item.payload for item in items]
842+
843+
# In span-first, the `middleware.starlette.send` ops appear first,
844+
# so the list needs to be reversed for the assertions below
845+
middleware_spans.reverse()
848846

849847
assert len(middleware_spans) == len(expected)
848+
849+
assert segment["is_segment"] is True
850+
assert segment["attributes"]["sentry.op"] == "http.server"
851+
850852
for span, exp in zip(middleware_spans, expected):
851853
assert span["attributes"]["sentry.op"] == exp["op"]
852854
assert span["name"] == exp["description"]

0 commit comments

Comments
 (0)