|
5 | 5 | import requests |
6 | 6 | import urllib3 |
7 | 7 |
|
8 | | -from instana.singletons import tracer |
| 8 | +from instana.singletons import agent, tracer |
9 | 9 | from .helpers import testenv |
10 | 10 |
|
11 | 11 |
|
@@ -692,3 +692,61 @@ def test_requestspkg_put(self): |
692 | 692 | self.assertIsNotNone(urllib3_span.stack) |
693 | 693 | self.assertTrue(type(urllib3_span.stack) is list) |
694 | 694 | self.assertTrue(len(urllib3_span.stack) > 1) |
| 695 | + |
| 696 | + def test_response_header_capture(self): |
| 697 | + original_extra_headers = agent.extra_headers |
| 698 | + agent.extra_headers = ['X-Capture-This'] |
| 699 | + |
| 700 | + with tracer.start_active_span('test'): |
| 701 | + r = self.http.request('GET', testenv["wsgi_server"] + '/response_headers') |
| 702 | + |
| 703 | + spans = self.recorder.queued_spans() |
| 704 | + self.assertEqual(3, len(spans)) |
| 705 | + |
| 706 | + wsgi_span = spans[0] |
| 707 | + urllib3_span = spans[1] |
| 708 | + test_span = spans[2] |
| 709 | + |
| 710 | + assert(r) |
| 711 | + self.assertEqual(200, r.status) |
| 712 | + self.assertIsNone(tracer.active_span) |
| 713 | + |
| 714 | + # Same traceId |
| 715 | + self.assertEqual(test_span.t, urllib3_span.t) |
| 716 | + self.assertEqual(urllib3_span.t, wsgi_span.t) |
| 717 | + |
| 718 | + # Parent relationships |
| 719 | + self.assertEqual(urllib3_span.p, test_span.s) |
| 720 | + self.assertEqual(wsgi_span.p, urllib3_span.s) |
| 721 | + |
| 722 | + # Error logging |
| 723 | + self.assertFalse(test_span.error) |
| 724 | + self.assertIsNone(test_span.ec) |
| 725 | + self.assertFalse(urllib3_span.error) |
| 726 | + self.assertIsNone(urllib3_span.ec) |
| 727 | + self.assertFalse(wsgi_span.error) |
| 728 | + self.assertIsNone(wsgi_span.ec) |
| 729 | + |
| 730 | + # wsgi |
| 731 | + self.assertEqual("wsgi", wsgi_span.n) |
| 732 | + self.assertEqual('127.0.0.1:' + str(testenv["wsgi_port"]), wsgi_span.data.http.host) |
| 733 | + self.assertEqual('/response_headers', wsgi_span.data.http.url) |
| 734 | + self.assertEqual('GET', wsgi_span.data.http.method) |
| 735 | + self.assertEqual(200, wsgi_span.data.http.status) |
| 736 | + self.assertIsNone(wsgi_span.data.http.error) |
| 737 | + self.assertIsNotNone(wsgi_span.stack) |
| 738 | + self.assertEqual(2, len(wsgi_span.stack)) |
| 739 | + |
| 740 | + # urllib3 |
| 741 | + self.assertEqual("test", test_span.data.sdk.name) |
| 742 | + self.assertEqual("urllib3", urllib3_span.n) |
| 743 | + self.assertEqual(200, urllib3_span.data.http.status) |
| 744 | + self.assertEqual(testenv["wsgi_server"] + "/response_headers", urllib3_span.data.http.url) |
| 745 | + self.assertEqual("GET", urllib3_span.data.http.method) |
| 746 | + self.assertIsNotNone(urllib3_span.stack) |
| 747 | + self.assertTrue(type(urllib3_span.stack) is list) |
| 748 | + self.assertTrue(len(urllib3_span.stack) > 1) |
| 749 | + self.assertTrue('http.X-Capture-This' in urllib3_span.data.custom.tags) |
| 750 | + |
| 751 | + agent.extra_headers = original_extra_headers |
| 752 | + |
0 commit comments