Skip to content

Commit 6d5bfd5

Browse files
chore: Replace framework-specific middleware ops
1 parent 906879f commit 6d5bfd5

10 files changed

Lines changed: 75 additions & 76 deletions

File tree

‎sentry_sdk/consts.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1360,6 +1360,7 @@ class OP:
13601360
HTTP_CLIENT = "http.client"
13611361
HTTP_CLIENT_STREAM = "http.client.stream"
13621362
HTTP_SERVER = "http.server"
1363+
MIDDLEWARE = "middleware"
13631364
MIDDLEWARE_DJANGO = "middleware.django"
13641365
MIDDLEWARE_LITESTAR = "middleware.litestar"
13651366
MIDDLEWARE_LITESTAR_RECEIVE = "middleware.litestar.receive"

‎sentry_sdk/integrations/django/middleware.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def _check_middleware_span(
8282
middleware_span = sentry_sdk.start_span(
8383
name=description,
8484
attributes={
85-
"sentry.op": OP.MIDDLEWARE_DJANGO,
85+
"sentry.op": OP.MIDDLEWARE,
8686
"sentry.origin": DjangoIntegration.origin,
8787
SPANDATA.MIDDLEWARE_NAME: middleware_name,
8888
},

‎sentry_sdk/integrations/litestar.py‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ async def _create_span_call(
170170
with sentry_sdk.start_span(
171171
name=middleware_name,
172172
attributes={
173-
"sentry.op": OP.MIDDLEWARE_LITESTAR,
173+
"sentry.op": OP.MIDDLEWARE,
174174
"sentry.origin": LitestarIntegration.origin,
175175
},
176176
) as middleware_span:
@@ -187,7 +187,7 @@ async def _sentry_receive(
187187
with sentry_sdk.start_span(
188188
name=getattr(receive, "__qualname__", str(receive)),
189189
attributes={
190-
"sentry.op": OP.MIDDLEWARE_LITESTAR_RECEIVE,
190+
"sentry.op": OP.MIDDLEWARE,
191191
"sentry.origin": LitestarIntegration.origin,
192192
},
193193
) as span:
@@ -207,7 +207,7 @@ async def _sentry_send(message: "Message") -> None:
207207
with sentry_sdk.start_span(
208208
name=getattr(send, "__qualname__", str(send)),
209209
attributes={
210-
"sentry.op": OP.MIDDLEWARE_LITESTAR_SEND,
210+
"sentry.op": OP.MIDDLEWARE,
211211
"sentry.origin": LitestarIntegration.origin,
212212
},
213213
) as span:

‎sentry_sdk/integrations/starlette.py‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,11 +173,11 @@ def _start_middleware_span(op: str, name: str) -> "Any":
173173
},
174174
)
175175

176-
with _start_middleware_span(op=OP.MIDDLEWARE_STARLETTE, name=middleware_name):
176+
with _start_middleware_span(op=OP.MIDDLEWARE, name=middleware_name):
177177
# Creating spans for the "receive" callback
178178
async def _sentry_receive(*args: "Any", **kwargs: "Any") -> "Any":
179179
with _start_middleware_span(
180-
op=OP.MIDDLEWARE_STARLETTE_RECEIVE,
180+
op=OP.MIDDLEWARE,
181181
name=getattr(receive, "__qualname__", str(receive)),
182182
):
183183
return await receive(*args, **kwargs)
@@ -189,7 +189,7 @@ async def _sentry_receive(*args: "Any", **kwargs: "Any") -> "Any":
189189
# Creating spans for the "send" callback
190190
async def _sentry_send(*args: "Any", **kwargs: "Any") -> "Any":
191191
with _start_middleware_span(
192-
op=OP.MIDDLEWARE_STARLETTE_SEND,
192+
op=OP.MIDDLEWARE,
193193
name=getattr(send, "__qualname__", str(send)),
194194
):
195195
return await send(*args, **kwargs)

‎sentry_sdk/integrations/starlite.py‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,15 +163,15 @@ def _start_middleware_span(op: str, name: str) -> "Any":
163163
},
164164
)
165165

166-
with _start_middleware_span(op=OP.MIDDLEWARE_STARLITE, name=middleware_name):
166+
with _start_middleware_span(op=OP.MIDDLEWARE, name=middleware_name):
167167
# Creating spans for the "receive" callback
168168
async def _sentry_receive(
169169
*args: "Any", **kwargs: "Any"
170170
) -> "Union[HTTPReceiveMessage, WebSocketReceiveMessage]":
171171
if sentry_sdk.get_client().get_integration(StarliteIntegration) is None:
172172
return await receive(*args, **kwargs)
173173
with _start_middleware_span(
174-
op=OP.MIDDLEWARE_STARLITE_RECEIVE,
174+
op=OP.MIDDLEWARE,
175175
name=getattr(receive, "__qualname__", str(receive)),
176176
):
177177
return await receive(*args, **kwargs)
@@ -185,7 +185,7 @@ async def _sentry_send(message: "Message") -> None:
185185
if sentry_sdk.get_client().get_integration(StarliteIntegration) is None:
186186
return await send(message)
187187
with _start_middleware_span(
188-
op=OP.MIDDLEWARE_STARLITE_SEND,
188+
op=OP.MIDDLEWARE,
189189
name=getattr(send, "__qualname__", str(send)),
190190
):
191191
return await send(message)

‎tests/integrations/django/asgi/test_asgi.py‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -277,11 +277,11 @@ async def test_async_middleware_spans(
277277
render_span_tree(spans)
278278
== """\
279279
- sentry.op="http.server": name="/simple_async_view"
280-
- sentry.op="middleware.django": name="django.contrib.sessions.middleware.SessionMiddleware.__acall__"
281-
- sentry.op="middleware.django": name="django.contrib.auth.middleware.AuthenticationMiddleware.__acall__"
282-
- sentry.op="middleware.django": name="django.middleware.csrf.CsrfViewMiddleware.__acall__"
283-
- sentry.op="middleware.django": name="tests.integrations.django.myapp.settings.TestMiddleware.__acall__"
284-
- sentry.op="middleware.django": name="django.middleware.csrf.CsrfViewMiddleware.process_view"
280+
- sentry.op="middleware": name="django.contrib.sessions.middleware.SessionMiddleware.__acall__"
281+
- sentry.op="middleware": name="django.contrib.auth.middleware.AuthenticationMiddleware.__acall__"
282+
- sentry.op="middleware": name="django.middleware.csrf.CsrfViewMiddleware.__acall__"
283+
- sentry.op="middleware": name="tests.integrations.django.myapp.settings.TestMiddleware.__acall__"
284+
- sentry.op="middleware": name="django.middleware.csrf.CsrfViewMiddleware.process_view"
285285
- sentry.op="view.render": name="simple_async_view\""""
286286
)
287287

‎tests/integrations/django/test_basic.py‎

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1499,25 +1499,25 @@ def test_middleware_spans(
14991499
if DJANGO_VERSION >= (1, 10):
15001500
EXPECTED_MIDDLEWARE_SPANS = """\
15011501
- sentry.op="http.server": name="/message"
1502-
- sentry.op="middleware.django": name="django.contrib.sessions.middleware.SessionMiddleware.__call__"
1503-
- sentry.op="middleware.django": name="django.contrib.auth.middleware.AuthenticationMiddleware.__call__"
1504-
- sentry.op="middleware.django": name="django.middleware.csrf.CsrfViewMiddleware.__call__"
1505-
- sentry.op="middleware.django": name="tests.integrations.django.myapp.settings.TestMiddleware.__call__"
1506-
- sentry.op="middleware.django": name="tests.integrations.django.myapp.settings.TestFunctionMiddleware.__call__"
1507-
- sentry.op="middleware.django": name="django.middleware.csrf.CsrfViewMiddleware.process_view"
1502+
- sentry.op="middleware": name="django.contrib.sessions.middleware.SessionMiddleware.__call__"
1503+
- sentry.op="middleware": name="django.contrib.auth.middleware.AuthenticationMiddleware.__call__"
1504+
- sentry.op="middleware": name="django.middleware.csrf.CsrfViewMiddleware.__call__"
1505+
- sentry.op="middleware": name="tests.integrations.django.myapp.settings.TestMiddleware.__call__"
1506+
- sentry.op="middleware": name="tests.integrations.django.myapp.settings.TestFunctionMiddleware.__call__"
1507+
- sentry.op="middleware": name="django.middleware.csrf.CsrfViewMiddleware.process_view"
15081508
- sentry.op="view.render": name="message"\
15091509
"""
15101510
else:
15111511
EXPECTED_MIDDLEWARE_SPANS = """\
15121512
- sentry.op="http.server": name="/message"
1513-
- sentry.op="middleware.django": name="django.contrib.sessions.middleware.SessionMiddleware.process_request"
1514-
- sentry.op="middleware.django": name="django.contrib.auth.middleware.AuthenticationMiddleware.process_request"
1515-
- sentry.op="middleware.django": name="tests.integrations.django.myapp.settings.TestMiddleware.process_request"
1516-
- sentry.op="middleware.django": name="django.middleware.csrf.CsrfViewMiddleware.process_view"
1513+
- sentry.op="middleware": name="django.contrib.sessions.middleware.SessionMiddleware.process_request"
1514+
- sentry.op="middleware": name="django.contrib.auth.middleware.AuthenticationMiddleware.process_request"
1515+
- sentry.op="middleware": name="tests.integrations.django.myapp.settings.TestMiddleware.process_request"
1516+
- sentry.op="middleware": name="django.middleware.csrf.CsrfViewMiddleware.process_view"
15171517
- sentry.op="view.render": name="message"
1518-
- sentry.op="middleware.django": name="tests.integrations.django.myapp.settings.TestMiddleware.process_response"
1519-
- sentry.op="middleware.django": name="django.middleware.csrf.CsrfViewMiddleware.process_response"
1520-
- sentry.op="middleware.django": name="django.contrib.sessions.middleware.SessionMiddleware.process_response"\
1518+
- sentry.op="middleware": name="tests.integrations.django.myapp.settings.TestMiddleware.process_response"
1519+
- sentry.op="middleware": name="django.middleware.csrf.CsrfViewMiddleware.process_response"
1520+
- sentry.op="middleware": name="django.contrib.sessions.middleware.SessionMiddleware.process_response"\
15211521
"""
15221522
assert render_span_tree(spans) == EXPECTED_MIDDLEWARE_SPANS
15231523

‎tests/integrations/litestar/test_litestar.py‎

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,8 @@ def test_middleware_spans(
208208
litestar_spans = (
209209
span
210210
for span in spans
211-
if span["attributes"]["sentry.op"] == "middleware.litestar"
211+
if span["attributes"]["sentry.op"] == "middleware"
212+
and span["name"] == span["attributes"].get("middleware.name")
212213
)
213214

214215
for span in litestar_spans:
@@ -251,7 +252,7 @@ async def do_stuff(message):
251252
"attributes": ApproxDict(
252253
{
253254
"middleware.name": "SampleMiddleware",
254-
"sentry.op": "middleware.litestar",
255+
"sentry.op": "middleware",
255256
},
256257
),
257258
},
@@ -260,7 +261,7 @@ async def do_stuff(message):
260261
"attributes": ApproxDict(
261262
{
262263
"middleware.name": "SampleMiddleware",
263-
"sentry.op": "middleware.litestar.send",
264+
"sentry.op": "middleware",
264265
}
265266
),
266267
},
@@ -269,7 +270,7 @@ async def do_stuff(message):
269270
"attributes": ApproxDict(
270271
{
271272
"middleware.name": "SampleMiddleware",
272-
"sentry.op": "middleware.litestar.send",
273+
"sentry.op": "middleware",
273274
}
274275
),
275276
},
@@ -284,9 +285,7 @@ def is_matching_span(expected_span, actual_span):
284285
sentry_sdk.flush()
285286
spans = [item.payload for item in items]
286287
actual_litestar_spans = list(
287-
span
288-
for span in spans
289-
if "middleware.litestar" in span["attributes"].get("sentry.op")
288+
span for span in spans if span["attributes"].get("sentry.op") == "middleware"
290289
)
291290

292291
assert len(actual_litestar_spans) == 3
@@ -368,7 +367,7 @@ async def my_send(*args, **kwargs):
368367
"attributes": ApproxDict(
369368
{
370369
"middleware.name": "SamplePartialReceiveSendMiddleware",
371-
"sentry.op": "middleware.litestar",
370+
"sentry.op": "middleware",
372371
}
373372
),
374373
},
@@ -377,7 +376,7 @@ async def my_send(*args, **kwargs):
377376
"attributes": ApproxDict(
378377
{
379378
"middleware.name": "SamplePartialReceiveSendMiddleware",
380-
"sentry.op": "middleware.litestar.receive",
379+
"sentry.op": "middleware",
381380
}
382381
),
383382
},
@@ -386,7 +385,7 @@ async def my_send(*args, **kwargs):
386385
"attributes": ApproxDict(
387386
{
388387
"middleware.name": "SamplePartialReceiveSendMiddleware",
389-
"sentry.op": "middleware.litestar.send",
388+
"sentry.op": "middleware",
390389
}
391390
),
392391
},
@@ -399,9 +398,7 @@ def is_matching_span(expected_span, actual_span):
399398
)
400399

401400
actual_litestar_spans = list(
402-
span
403-
for span in spans
404-
if "middleware.litestar" in span["attributes"].get("sentry.op")
401+
span for span in spans if span["attributes"].get("sentry.op") == "middleware"
405402
)
406403
assert len(actual_litestar_spans) == 3
407404

‎tests/integrations/starlette/test_starlette.py‎

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1033,18 +1033,18 @@ def test_middleware_spans(sentry_init, capture_items):
10331033
"ServerErrorMiddleware",
10341034
"AuthenticationMiddleware",
10351035
"ExceptionMiddleware",
1036-
"AuthenticationMiddleware", # 'op': 'middleware.starlette.send'
1037-
"ServerErrorMiddleware", # 'op': 'middleware.starlette.send'
1038-
"AuthenticationMiddleware", # 'op': 'middleware.starlette.send'
1039-
"ServerErrorMiddleware", # 'op': 'middleware.starlette.send'
1036+
"AuthenticationMiddleware", # 'op': 'middleware'
1037+
"ServerErrorMiddleware", # 'op': 'middleware'
1038+
"AuthenticationMiddleware", # 'op': 'middleware'
1039+
"ServerErrorMiddleware", # 'op': 'middleware'
10401040
]
10411041

10421042
sentry_sdk.flush()
10431043

10441044
segment = items.pop().payload
10451045
middleware_spans = [item.payload for item in items]
10461046

1047-
# In span-first, the `middleware.starlette.send` ops appear first,
1047+
# In span-first, the middleware send ops appear first,
10481048
# so the list needs to be reversed for the assertions below
10491049
middleware_spans.reverse()
10501050

@@ -1105,47 +1105,47 @@ def test_middleware_callback_spans(sentry_init, capture_items):
11051105

11061106
expected = [
11071107
{
1108-
"op": "middleware.starlette",
1108+
"op": "middleware",
11091109
"description": "ServerErrorMiddleware",
11101110
"middleware_name": "ServerErrorMiddleware",
11111111
},
11121112
{
1113-
"op": "middleware.starlette",
1113+
"op": "middleware",
11141114
"description": "SampleMiddleware",
11151115
"middleware_name": "SampleMiddleware",
11161116
},
11171117
{
1118-
"op": "middleware.starlette",
1118+
"op": "middleware",
11191119
"description": "ExceptionMiddleware",
11201120
"middleware_name": "ExceptionMiddleware",
11211121
},
11221122
{
1123-
"op": "middleware.starlette.send",
1123+
"op": "middleware",
11241124
"description": "SampleMiddleware.__call__.<locals>.do_stuff",
11251125
"middleware_name": "ExceptionMiddleware",
11261126
},
11271127
{
1128-
"op": "middleware.starlette.send",
1128+
"op": "middleware",
11291129
"description": "ServerErrorMiddleware.__call__.<locals>._send",
11301130
"middleware_name": "SampleMiddleware",
11311131
},
11321132
{
1133-
"op": "middleware.starlette.send",
1133+
"op": "middleware",
11341134
"description": "SentryAsgiMiddleware._run_app.<locals>._sentry_wrapped_send",
11351135
"middleware_name": "ServerErrorMiddleware",
11361136
},
11371137
{
1138-
"op": "middleware.starlette.send",
1138+
"op": "middleware",
11391139
"description": "SampleMiddleware.__call__.<locals>.do_stuff",
11401140
"middleware_name": "ExceptionMiddleware",
11411141
},
11421142
{
1143-
"op": "middleware.starlette.send",
1143+
"op": "middleware",
11441144
"description": "ServerErrorMiddleware.__call__.<locals>._send",
11451145
"middleware_name": "SampleMiddleware",
11461146
},
11471147
{
1148-
"op": "middleware.starlette.send",
1148+
"op": "middleware",
11491149
"description": "SentryAsgiMiddleware._run_app.<locals>._sentry_wrapped_send",
11501150
"middleware_name": "ServerErrorMiddleware",
11511151
},
@@ -1156,7 +1156,7 @@ def test_middleware_callback_spans(sentry_init, capture_items):
11561156
segment = items.pop().payload
11571157
middleware_spans = [item.payload for item in items]
11581158

1159-
# In span-first, the `middleware.starlette.send` ops appear first,
1159+
# In span-first, the middleware send ops appear first,
11601160
# so the list needs to be reversed for the assertions below
11611161
middleware_spans.reverse()
11621162

@@ -1212,39 +1212,39 @@ def test_middleware_partial_receive_send(sentry_init, capture_items):
12121212

12131213
expected = [
12141214
{
1215-
"op": "middleware.starlette.send",
1215+
"op": "middleware",
12161216
"description": "functools.partial(<function SamplePartialReceiveSendMiddleware.__call__.<locals>.my_send at ",
12171217
},
12181218
{
1219-
"op": "middleware.starlette.send",
1219+
"op": "middleware",
12201220
"description": "functools.partial(<function SamplePartialReceiveSendMiddleware.__call__.<locals>.my_send at ",
12211221
},
12221222
{
1223-
"op": "middleware.starlette",
1223+
"op": "middleware",
12241224
"description": "ExceptionMiddleware",
12251225
},
12261226
{
1227-
"op": "middleware.starlette.send",
1227+
"op": "middleware",
12281228
"description": "SentryAsgiMiddleware._run_app.<locals>._sentry_wrapped_send",
12291229
},
12301230
{
1231-
"op": "middleware.starlette.send",
1231+
"op": "middleware",
12321232
"description": "ServerErrorMiddleware.__call__.<locals>._send",
12331233
},
12341234
{
1235-
"op": "middleware.starlette.receive",
1235+
"op": "middleware",
12361236
"description": (
12371237
"_ASGIAdapter.send.<locals>.receive"
12381238
if STARLETTE_VERSION < (0, 21)
12391239
else "_TestClientTransport.handle_request.<locals>.receive"
12401240
),
12411241
},
12421242
{
1243-
"op": "middleware.starlette",
1243+
"op": "middleware",
12441244
"description": "SamplePartialReceiveSendMiddleware",
12451245
},
12461246
{
1247-
"op": "middleware.starlette",
1247+
"op": "middleware",
12481248
"description": "ServerErrorMiddleware",
12491249
},
12501250
]

0 commit comments

Comments
 (0)