@@ -311,15 +311,15 @@ def test_synthetic_request(server):
311311 assert (test_span .sy is None )
312312
313313
314- def test_custom_header_capture (server ):
315- from instana .singletons import agent
314+ def test_request_header_capture (server ):
316315
317316 # The background FastAPI server is pre-configured with custom headers to capture
318317
319318 request_headers = {
320319 'X-Capture-This' : 'this' ,
321320 'X-Capture-That' : 'that'
322321 }
322+
323323 with tracer .start_active_span ('test' ):
324324 result = requests .get (testenv ["fastapi_server" ] + '/' , headers = request_headers )
325325
@@ -366,3 +366,53 @@ def test_custom_header_capture(server):
366366 assert ("this" == asgi_span .data ["http" ]["header" ]["X-Capture-This" ])
367367 assert ("X-Capture-That" in asgi_span .data ["http" ]["header" ])
368368 assert ("that" == asgi_span .data ["http" ]["header" ]["X-Capture-That" ])
369+
370+
371+ def test_response_header_capture (server ):
372+
373+ # The background FastAPI server is pre-configured with custom headers to capture
374+
375+ with tracer .start_active_span ('test' ):
376+ result = requests .get (testenv ["fastapi_server" ] + '/response_headers' )
377+
378+ assert result .status_code == 200
379+
380+ spans = tracer .recorder .queued_spans ()
381+ assert len (spans ) == 3
382+
383+ span_filter = lambda span : span .n == "sdk" and span .data ['sdk' ]['name' ] == 'test'
384+ test_span = get_first_span_by_filter (spans , span_filter )
385+ assert (test_span )
386+
387+ span_filter = lambda span : span .n == "urllib3"
388+ urllib3_span = get_first_span_by_filter (spans , span_filter )
389+ assert (urllib3_span )
390+
391+ span_filter = lambda span : span .n == 'asgi'
392+ asgi_span = get_first_span_by_filter (spans , span_filter )
393+ assert (asgi_span )
394+
395+ assert (test_span .t == urllib3_span .t == asgi_span .t )
396+ assert (asgi_span .p == urllib3_span .s )
397+ assert (urllib3_span .p == test_span .s )
398+
399+ assert "X-INSTANA-T" in result .headers
400+ assert result .headers ["X-INSTANA-T" ] == asgi_span .t
401+ assert "X-INSTANA-S" in result .headers
402+ assert result .headers ["X-INSTANA-S" ] == asgi_span .s
403+ assert "X-INSTANA-L" in result .headers
404+ assert result .headers ["X-INSTANA-L" ] == '1'
405+ assert "Server-Timing" in result .headers
406+ assert result .headers ["Server-Timing" ] == ("intid;desc=%s" % asgi_span .t )
407+
408+ assert (asgi_span .ec == None )
409+ assert (asgi_span .data ['http' ]['host' ] == '127.0.0.1' )
410+ assert (asgi_span .data ['http' ]['path' ] == '/response_headers' )
411+ assert (asgi_span .data ['http' ]['path_tpl' ] == '/response_headers' )
412+ assert (asgi_span .data ['http' ]['method' ] == 'GET' )
413+ assert (asgi_span .data ['http' ]['status' ] == 200 )
414+ assert (asgi_span .data ['http' ]['error' ] is None )
415+ assert (asgi_span .data ['http' ]['params' ] is None )
416+
417+ assert ("X-Capture-This-Too" in asgi_span .data ["http" ]["header" ])
418+ assert ("this too" == asgi_span .data ["http" ]["header" ]["X-Capture-This-Too" ])
0 commit comments