Skip to content

Commit 4505486

Browse files
authored
Merge branch 'ep/py-2362-2mw' into py-2322-port-event-processor-data-to-span-first-rme79
2 parents 4b5df10 + 29de949 commit 4505486

1 file changed

Lines changed: 30 additions & 28 deletions

File tree

tests/integrations/starlette/test_starlette.py

Lines changed: 30 additions & 28 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"]
@@ -1066,7 +1068,7 @@ async def _handler(request):
10661068

10671069

10681070
@pytest.mark.parametrize("middleware_spans", [False, True])
1069-
def test_request_body_data_scrubs_pii_span_streaming(
1071+
def test_request_body_data_does_not_scrub_pii_span_streaming(
10701072
sentry_init, capture_items, middleware_spans
10711073
):
10721074
sentry_init(

0 commit comments

Comments
 (0)