@@ -127,6 +127,92 @@ def test_404(self):
127
127
assert (asgi_span .data ['http' ]['error' ] is None )
128
128
assert (asgi_span .data ['http' ]['params' ] is None )
129
129
130
+ def test_sanic_exception (self ):
131
+ result = None
132
+ with tracer .start_active_span ('test' ):
133
+ result = requests .get (testenv ["sanic_server" ] + '/wrong' )
134
+
135
+ self .assertEqual (result .status_code , 400 )
136
+
137
+ spans = tracer .recorder .queued_spans ()
138
+ self .assertEqual (len (spans ), 3 )
139
+
140
+ span_filter = lambda span : span .n == "sdk" and span .data ['sdk' ]['name' ] == 'test'
141
+ test_span = get_first_span_by_filter (spans , span_filter )
142
+ self .assertIsNotNone (test_span )
143
+
144
+ span_filter = lambda span : span .n == "urllib3"
145
+ urllib3_span = get_first_span_by_filter (spans , span_filter )
146
+ self .assertIsNotNone (urllib3_span )
147
+
148
+ span_filter = lambda span : span .n == 'asgi'
149
+ asgi_span = get_first_span_by_filter (spans , span_filter )
150
+ self .assertIsNotNone (asgi_span )
151
+
152
+ self .assertTraceContextPropagated (test_span , urllib3_span )
153
+ self .assertTraceContextPropagated (urllib3_span , asgi_span )
154
+
155
+ self .assertIn ("X-INSTANA-T" , result .headers )
156
+ self .assertEqual (result .headers ["X-INSTANA-T" ], asgi_span .t )
157
+ self .assertIn ("X-INSTANA-S" , result .headers )
158
+ self .assertEqual (result .headers ["X-INSTANA-S" ], asgi_span .s )
159
+ self .assertIn ("X-INSTANA-L" , result .headers )
160
+ self .assertEqual (result .headers ["X-INSTANA-L" ], '1' )
161
+ self .assertIn ("Server-Timing" , result .headers )
162
+ self .assertEqual (result .headers ["Server-Timing" ], ("intid;desc=%s" % asgi_span .t ))
163
+
164
+ self .assertIsNone (asgi_span .ec )
165
+ assert (asgi_span .data ['http' ]['host' ] == '127.0.0.1:1337' )
166
+ assert (asgi_span .data ['http' ]['path' ] == '/wrong' )
167
+ assert (asgi_span .data ['http' ]['path_tpl' ] == '/wrong' )
168
+ assert (asgi_span .data ['http' ]['method' ] == 'GET' )
169
+ assert (asgi_span .data ['http' ]['status' ] == 400 )
170
+ assert (asgi_span .data ['http' ]['error' ] is None )
171
+ assert (asgi_span .data ['http' ]['params' ] is None )
172
+
173
+ def test_500_instana_exception (self ):
174
+ result = None
175
+ with tracer .start_active_span ('test' ):
176
+ result = requests .get (testenv ["sanic_server" ] + '/instana_exception' )
177
+
178
+ self .assertEqual (result .status_code , 500 )
179
+
180
+ spans = tracer .recorder .queued_spans ()
181
+ self .assertEqual (len (spans ), 4 )
182
+
183
+ span_filter = lambda span : span .n == "sdk" and span .data ['sdk' ]['name' ] == 'test'
184
+ test_span = get_first_span_by_filter (spans , span_filter )
185
+ self .assertIsNotNone (test_span )
186
+
187
+ span_filter = lambda span : span .n == "urllib3"
188
+ urllib3_span = get_first_span_by_filter (spans , span_filter )
189
+ self .assertIsNotNone (urllib3_span )
190
+
191
+ span_filter = lambda span : span .n == 'asgi'
192
+ asgi_span = get_first_span_by_filter (spans , span_filter )
193
+ self .assertIsNotNone (asgi_span )
194
+
195
+ self .assertTraceContextPropagated (test_span , urllib3_span )
196
+ self .assertTraceContextPropagated (urllib3_span , asgi_span )
197
+
198
+ self .assertIn ("X-INSTANA-T" , result .headers )
199
+ self .assertEqual (result .headers ["X-INSTANA-T" ], asgi_span .t )
200
+ self .assertIn ("X-INSTANA-S" , result .headers )
201
+ self .assertEqual (result .headers ["X-INSTANA-S" ], asgi_span .s )
202
+ self .assertIn ("X-INSTANA-L" , result .headers )
203
+ self .assertEqual (result .headers ["X-INSTANA-L" ], '1' )
204
+ self .assertIn ("Server-Timing" , result .headers )
205
+ self .assertEqual (result .headers ["Server-Timing" ], ("intid;desc=%s" % asgi_span .t ))
206
+
207
+ self .assertEqual (asgi_span .ec , 1 )
208
+ assert (asgi_span .data ['http' ]['host' ] == '127.0.0.1:1337' )
209
+ assert (asgi_span .data ['http' ]['path' ] == '/instana_exception' )
210
+ assert (asgi_span .data ['http' ]['path_tpl' ] == '/instana_exception' )
211
+ assert (asgi_span .data ['http' ]['method' ] == 'GET' )
212
+ assert (asgi_span .data ['http' ]['status' ] == 500 )
213
+ assert (asgi_span .data ['http' ]['error' ] is None )
214
+ assert (asgi_span .data ['http' ]['params' ] is None )
215
+
130
216
def test_500 (self ):
131
217
result = None
132
218
with tracer .start_active_span ('test' ):
@@ -213,7 +299,6 @@ def test_path_templates(self):
213
299
assert (asgi_span .data ['http' ]['error' ] is None )
214
300
assert (asgi_span .data ['http' ]['params' ] is None )
215
301
216
-
217
302
def test_secret_scrubbing (self ):
218
303
result = None
219
304
with tracer .start_active_span ('test' ):
0 commit comments