@@ -303,35 +303,78 @@ async def test_capture_transaction_with_error(
303303
304304
305305@pytest .mark .asyncio
306+ @pytest .mark .parametrize (
307+ "span_streaming" ,
308+ [True , False ],
309+ )
306310async def test_has_trace_if_performance_enabled (
307311 sentry_init ,
308312 asgi3_app_with_error_and_msg ,
309313 capture_events ,
314+ capture_items ,
315+ span_streaming ,
310316):
311- sentry_init (traces_sample_rate = 1.0 )
317+ sentry_init (
318+ traces_sample_rate = 1.0 ,
319+ _experiments = {
320+ "trace_lifecycle" : "stream" if span_streaming else "static" ,
321+ },
322+ )
312323 app = SentryAsgiMiddleware (asgi3_app_with_error_and_msg )
313324
314325 with pytest .raises (ZeroDivisionError ):
315326 async with TestClient (app ) as client :
316- events = capture_events ()
327+ if span_streaming :
328+ items = capture_items ("event" , "span" )
329+ else :
330+ events = capture_events ()
317331 await client .get ("/" )
318332
319- msg_event , error_event , transaction_event = events
333+ sentry_sdk . flush ()
320334
321- assert msg_event ["contexts" ]["trace" ]
322- assert "trace_id" in msg_event ["contexts" ]["trace" ]
335+ if span_streaming :
336+ for item in items :
337+ print (item )
338+ print ()
339+ msg_event , error_event , span = items
323340
324- assert error_event ["contexts" ]["trace" ]
325- assert "trace_id" in error_event ["contexts" ]["trace" ]
341+ assert msg_event .type == "event"
342+ msg_event = msg_event .payload
343+ assert msg_event ["contexts" ]["trace" ]
344+ assert "trace_id" in msg_event ["contexts" ]["trace" ]
326345
327- assert transaction_event ["contexts" ]["trace" ]
328- assert "trace_id" in transaction_event ["contexts" ]["trace" ]
346+ assert error_event .type == "event"
347+ error_event = error_event .payload
348+ assert error_event ["contexts" ]["trace" ]
349+ assert "trace_id" in error_event ["contexts" ]["trace" ]
329350
330- assert (
331- error_event ["contexts" ]["trace" ]["trace_id" ]
332- == transaction_event ["contexts" ]["trace" ]["trace_id" ]
333- == msg_event ["contexts" ]["trace" ]["trace_id" ]
334- )
351+ assert span .type == "span"
352+ span = span .payload
353+ assert span ["trace_id" ] is not None
354+
355+ assert (
356+ error_event ["contexts" ]["trace" ]["trace_id" ]
357+ == msg_event ["contexts" ]["trace" ]["trace_id" ]
358+ == span ["trace_id" ]
359+ )
360+
361+ else :
362+ msg_event , error_event , transaction_event = events
363+
364+ assert msg_event ["contexts" ]["trace" ]
365+ assert "trace_id" in msg_event ["contexts" ]["trace" ]
366+
367+ assert error_event ["contexts" ]["trace" ]
368+ assert "trace_id" in error_event ["contexts" ]["trace" ]
369+
370+ assert transaction_event ["contexts" ]["trace" ]
371+ assert "trace_id" in transaction_event ["contexts" ]["trace" ]
372+
373+ assert (
374+ error_event ["contexts" ]["trace" ]["trace_id" ]
375+ == transaction_event ["contexts" ]["trace" ]["trace_id" ]
376+ == msg_event ["contexts" ]["trace" ]["trace_id" ]
377+ )
335378
336379
337380@pytest .mark .asyncio
0 commit comments