39
39
from opentelemetry .instrumentation .utils import suppress_http_instrumentation
40
40
from opentelemetry .propagate import get_global_textmap , set_global_textmap
41
41
from opentelemetry .sdk import resources
42
+ from opentelemetry .semconv ._incubating .attributes .http_attributes import (
43
+ HTTP_FLAVOR ,
44
+ HTTP_HOST ,
45
+ HTTP_METHOD ,
46
+ HTTP_SCHEME ,
47
+ HTTP_STATUS_CODE ,
48
+ HTTP_URL ,
49
+ )
50
+ from opentelemetry .semconv ._incubating .attributes .net_attributes import (
51
+ NET_PEER_NAME ,
52
+ NET_PEER_PORT ,
53
+ )
42
54
from opentelemetry .semconv .attributes .error_attributes import ERROR_TYPE
43
55
from opentelemetry .semconv .attributes .http_attributes import (
44
56
HTTP_REQUEST_METHOD ,
55
67
SERVER_PORT ,
56
68
)
57
69
from opentelemetry .semconv .attributes .url_attributes import URL_FULL
58
- from opentelemetry .semconv .trace import SpanAttributes
59
70
from opentelemetry .test .mock_textmap import MockTextMapPropagator
60
71
from opentelemetry .test .test_base import TestBase
61
72
from opentelemetry .trace import StatusCode
76
87
77
88
78
89
HTTP_RESPONSE_BODY = "http.response.body"
90
+ SCHEMA_URL = "https://opentelemetry.io/schemas/1.21.0"
79
91
80
92
81
93
def _is_url_tuple (request : "RequestInfo" ):
@@ -216,9 +228,9 @@ def test_basic(self):
216
228
self .assertEqual (
217
229
dict (span .attributes ),
218
230
{
219
- SpanAttributes . HTTP_METHOD : "GET" ,
220
- SpanAttributes . HTTP_URL : self .URL ,
221
- SpanAttributes . HTTP_STATUS_CODE : 200 ,
231
+ HTTP_METHOD : "GET" ,
232
+ HTTP_URL : self .URL ,
233
+ HTTP_STATUS_CODE : 200 ,
222
234
},
223
235
)
224
236
@@ -237,9 +249,9 @@ def test_basic_metrics(self):
237
249
self .assertEqual (
238
250
dict (duration_data_point .attributes ),
239
251
{
240
- SpanAttributes . HTTP_STATUS_CODE : 200 ,
241
- SpanAttributes . HTTP_METHOD : "GET" ,
242
- SpanAttributes . HTTP_SCHEME : "http" ,
252
+ HTTP_STATUS_CODE : 200 ,
253
+ HTTP_METHOD : "GET" ,
254
+ HTTP_SCHEME : "http" ,
243
255
},
244
256
)
245
257
self .assertEqual (duration_data_point .count , 1 )
@@ -263,9 +275,9 @@ def test_nonstandard_http_method(self):
263
275
self .assertEqual (
264
276
dict (span .attributes ),
265
277
{
266
- SpanAttributes . HTTP_METHOD : "_OTHER" ,
267
- SpanAttributes . HTTP_URL : self .URL ,
268
- SpanAttributes . HTTP_STATUS_CODE : 405 ,
278
+ HTTP_METHOD : "_OTHER" ,
279
+ HTTP_URL : self .URL ,
280
+ HTTP_STATUS_CODE : 405 ,
269
281
},
270
282
)
271
283
@@ -282,9 +294,9 @@ def test_nonstandard_http_method(self):
282
294
self .assertEqual (
283
295
dict (duration_data_point .attributes ),
284
296
{
285
- SpanAttributes . HTTP_STATUS_CODE : 405 ,
286
- SpanAttributes . HTTP_METHOD : "_OTHER" ,
287
- SpanAttributes . HTTP_SCHEME : "http" ,
297
+ HTTP_STATUS_CODE : 405 ,
298
+ HTTP_METHOD : "_OTHER" ,
299
+ HTTP_SCHEME : "http" ,
288
300
},
289
301
)
290
302
@@ -354,7 +366,7 @@ def test_basic_new_semconv(self):
354
366
355
367
self .assertEqual (
356
368
span .instrumentation_scope .schema_url ,
357
- SpanAttributes . SCHEMA_URL ,
369
+ SCHEMA_URL ,
358
370
)
359
371
self .assertEqual (
360
372
dict (span .attributes ),
@@ -404,23 +416,23 @@ def test_basic_both_semconv(self):
404
416
405
417
self .assertEqual (
406
418
span .instrumentation_scope .schema_url ,
407
- SpanAttributes . SCHEMA_URL ,
419
+ SCHEMA_URL ,
408
420
)
409
421
410
422
self .assertEqual (
411
423
dict (span .attributes ),
412
424
{
413
- SpanAttributes . HTTP_METHOD : "GET" ,
425
+ HTTP_METHOD : "GET" ,
414
426
HTTP_REQUEST_METHOD : "GET" ,
415
- SpanAttributes . HTTP_URL : url ,
427
+ HTTP_URL : url ,
416
428
URL_FULL : url ,
417
- SpanAttributes . HTTP_HOST : "mock" ,
429
+ HTTP_HOST : "mock" ,
418
430
SERVER_ADDRESS : "mock" ,
419
431
NETWORK_PEER_ADDRESS : "mock" ,
420
- SpanAttributes . NET_PEER_PORT : 8080 ,
421
- SpanAttributes . HTTP_STATUS_CODE : 200 ,
432
+ NET_PEER_PORT : 8080 ,
433
+ HTTP_STATUS_CODE : 200 ,
422
434
HTTP_RESPONSE_STATUS_CODE : 200 ,
423
- SpanAttributes . HTTP_FLAVOR : "1.1" ,
435
+ HTTP_FLAVOR : "1.1" ,
424
436
NETWORK_PROTOCOL_VERSION : "1.1" ,
425
437
SERVER_PORT : 8080 ,
426
438
NETWORK_PEER_PORT : 8080 ,
@@ -440,13 +452,13 @@ def test_basic_both_semconv(self):
440
452
self .assertEqual (
441
453
dict (metrics [0 ].data .data_points [0 ].attributes ),
442
454
{
443
- SpanAttributes . HTTP_FLAVOR : "1.1" ,
444
- SpanAttributes . HTTP_HOST : "mock" ,
445
- SpanAttributes . HTTP_METHOD : "GET" ,
446
- SpanAttributes . HTTP_SCHEME : "http" ,
447
- SpanAttributes . NET_PEER_NAME : "mock" ,
448
- SpanAttributes . NET_PEER_PORT : 8080 ,
449
- SpanAttributes . HTTP_STATUS_CODE : 200 ,
455
+ HTTP_FLAVOR : "1.1" ,
456
+ HTTP_HOST : "mock" ,
457
+ HTTP_METHOD : "GET" ,
458
+ HTTP_SCHEME : "http" ,
459
+ NET_PEER_NAME : "mock" ,
460
+ NET_PEER_PORT : 8080 ,
461
+ HTTP_STATUS_CODE : 200 ,
450
462
},
451
463
)
452
464
self .assertEqual (metrics [0 ].name , "http.client.duration" )
@@ -477,9 +489,7 @@ def test_not_foundbasic(self):
477
489
478
490
self .assertEqual (result .status_code , 404 )
479
491
span = self .assert_span ()
480
- self .assertEqual (
481
- span .attributes .get (SpanAttributes .HTTP_STATUS_CODE ), 404
482
- )
492
+ self .assertEqual (span .attributes .get (HTTP_STATUS_CODE ), 404 )
483
493
self .assertIs (
484
494
span .status .status_code ,
485
495
trace .StatusCode .ERROR ,
@@ -489,9 +499,7 @@ def test_not_foundbasic(self):
489
499
self .assertEqual (len (metrics ), 1 )
490
500
duration_data_point = metrics [0 ].data .data_points [0 ]
491
501
self .assertEqual (
492
- duration_data_point .attributes .get (
493
- SpanAttributes .HTTP_STATUS_CODE
494
- ),
502
+ duration_data_point .attributes .get (HTTP_STATUS_CODE ),
495
503
404 ,
496
504
)
497
505
@@ -535,9 +543,7 @@ def test_not_foundbasic_both_semconv(self):
535
543
536
544
self .assertEqual (result .status_code , 404 )
537
545
span = self .assert_span ()
538
- self .assertEqual (
539
- span .attributes .get (SpanAttributes .HTTP_STATUS_CODE ), 404
540
- )
546
+ self .assertEqual (span .attributes .get (HTTP_STATUS_CODE ), 404 )
541
547
self .assertEqual (
542
548
span .attributes .get (HTTP_RESPONSE_STATUS_CODE ), 404
543
549
)
@@ -554,7 +560,7 @@ def test_not_foundbasic_both_semconv(self):
554
560
self .assertEqual (
555
561
metrics [0 ]
556
562
.data .data_points [0 ]
557
- .attributes .get (SpanAttributes . HTTP_STATUS_CODE ),
563
+ .attributes .get (HTTP_STATUS_CODE ),
558
564
404 ,
559
565
)
560
566
self .assertEqual (
@@ -612,9 +618,9 @@ def test_requests_500_error(self):
612
618
self .assertEqual (
613
619
dict (span .attributes ),
614
620
{
615
- SpanAttributes . HTTP_METHOD : "GET" ,
616
- SpanAttributes . HTTP_URL : self .URL ,
617
- SpanAttributes . HTTP_STATUS_CODE : 500 ,
621
+ HTTP_METHOD : "GET" ,
622
+ HTTP_URL : self .URL ,
623
+ HTTP_STATUS_CODE : 500 ,
618
624
},
619
625
)
620
626
self .assertEqual (span .status .status_code , StatusCode .ERROR )
@@ -689,14 +695,14 @@ def test_requests_timeout_exception_both_semconv(self):
689
695
self .assertEqual (
690
696
dict (span .attributes ),
691
697
{
692
- SpanAttributes . HTTP_METHOD : "GET" ,
698
+ HTTP_METHOD : "GET" ,
693
699
HTTP_REQUEST_METHOD : "GET" ,
694
- SpanAttributes . HTTP_URL : url ,
700
+ HTTP_URL : url ,
695
701
URL_FULL : url ,
696
- SpanAttributes . HTTP_HOST : "mock" ,
702
+ HTTP_HOST : "mock" ,
697
703
SERVER_ADDRESS : "mock" ,
698
704
NETWORK_PEER_ADDRESS : "mock" ,
699
- SpanAttributes . NET_PEER_PORT : 8080 ,
705
+ NET_PEER_PORT : 8080 ,
700
706
SERVER_PORT : 8080 ,
701
707
NETWORK_PEER_PORT : 8080 ,
702
708
ERROR_TYPE : "TimeoutException" ,
@@ -722,10 +728,8 @@ def test_invalid_url(self):
722
728
span = self .assert_span ()
723
729
724
730
self .assertEqual (span .name , "POST" )
725
- self .assertEqual (
726
- span .attributes [SpanAttributes .HTTP_METHOD ], "POST"
727
- )
728
- self .assertEqual (span .attributes [SpanAttributes .HTTP_URL ], url )
731
+ self .assertEqual (span .attributes [HTTP_METHOD ], "POST" )
732
+ self .assertEqual (span .attributes [HTTP_URL ], url )
729
733
self .assertEqual (span .status .status_code , StatusCode .ERROR )
730
734
731
735
def test_if_headers_equals_none (self ):
@@ -823,9 +827,9 @@ def test_metrics_have_response_attributes_with_disabled_tracing(
823
827
self ._run_disabled_tracing_metrics_attributes_test (
824
828
url = self .URL ,
825
829
expected_attributes = {
826
- SpanAttributes . HTTP_STATUS_CODE : 200 ,
827
- SpanAttributes . HTTP_METHOD : "GET" ,
828
- SpanAttributes . HTTP_SCHEME : "http" ,
830
+ HTTP_STATUS_CODE : 200 ,
831
+ HTTP_METHOD : "GET" ,
832
+ HTTP_SCHEME : "http" ,
829
833
},
830
834
)
831
835
@@ -857,9 +861,9 @@ def test_response_hook(self):
857
861
self .assertEqual (
858
862
dict (span .attributes ),
859
863
{
860
- SpanAttributes . HTTP_METHOD : "GET" ,
861
- SpanAttributes . HTTP_URL : self .URL ,
862
- SpanAttributes . HTTP_STATUS_CODE : 200 ,
864
+ HTTP_METHOD : "GET" ,
865
+ HTTP_URL : self .URL ,
866
+ HTTP_STATUS_CODE : 200 ,
863
867
HTTP_RESPONSE_BODY : "Hello!" ,
864
868
},
865
869
)
@@ -939,12 +943,8 @@ def test_client_mounts_with_instrumented_transport(self):
939
943
self .perform_request (self .URL , client = client1 )
940
944
self .perform_request (https_url , client = client2 )
941
945
spans = self .assert_span (num_spans = 2 )
942
- self .assertEqual (
943
- spans [0 ].attributes [SpanAttributes .HTTP_URL ], self .URL
944
- )
945
- self .assertEqual (
946
- spans [1 ].attributes [SpanAttributes .HTTP_URL ], https_url
947
- )
946
+ self .assertEqual (spans [0 ].attributes [HTTP_URL ], self .URL )
947
+ self .assertEqual (spans [1 ].attributes [HTTP_URL ], https_url )
948
948
949
949
@mock .patch .dict ("os.environ" , {"NO_PROXY" : "" }, clear = True )
950
950
class BaseInstrumentorTest (BaseTest , metaclass = abc .ABCMeta ):
@@ -1036,9 +1036,9 @@ def test_response_hook(self):
1036
1036
self .assertEqual (
1037
1037
dict (span .attributes ),
1038
1038
{
1039
- SpanAttributes . HTTP_METHOD : "GET" ,
1040
- SpanAttributes . HTTP_URL : self .URL ,
1041
- SpanAttributes . HTTP_STATUS_CODE : 200 ,
1039
+ HTTP_METHOD : "GET" ,
1040
+ HTTP_URL : self .URL ,
1041
+ HTTP_STATUS_CODE : 200 ,
1042
1042
HTTP_RESPONSE_BODY : "Hello!" ,
1043
1043
},
1044
1044
)
@@ -1057,9 +1057,9 @@ def test_response_hook_sync_async_kwargs(self):
1057
1057
self .assertEqual (
1058
1058
dict (span .attributes ),
1059
1059
{
1060
- SpanAttributes . HTTP_METHOD : "GET" ,
1061
- SpanAttributes . HTTP_URL : self .URL ,
1062
- SpanAttributes . HTTP_STATUS_CODE : 200 ,
1060
+ HTTP_METHOD : "GET" ,
1061
+ HTTP_URL : self .URL ,
1062
+ HTTP_STATUS_CODE : 200 ,
1063
1063
HTTP_RESPONSE_BODY : "Hello!" ,
1064
1064
},
1065
1065
)
@@ -1162,7 +1162,7 @@ def test_instrumentation_without_client(self):
1162
1162
with self .subTest (idx = idx , res = res ):
1163
1163
self .assertEqual (res .text , "Hello!" )
1164
1164
self .assertEqual (
1165
- spans [idx ].attributes [SpanAttributes . HTTP_URL ],
1165
+ spans [idx ].attributes [HTTP_URL ],
1166
1166
self .URL ,
1167
1167
)
1168
1168
@@ -1360,12 +1360,12 @@ def test_remove_sensitive_params(self):
1360
1360
self .perform_request (new_url )
1361
1361
span = self .assert_span ()
1362
1362
1363
- actual_url = span .attributes [SpanAttributes . HTTP_URL ]
1363
+ actual_url = span .attributes [HTTP_URL ]
1364
1364
1365
1365
if "@" in actual_url :
1366
1366
# If credentials are present, they must be redacted
1367
1367
self .assertEqual (
1368
- span .attributes [SpanAttributes . HTTP_URL ],
1368
+ span .attributes [HTTP_URL ],
1369
1369
"http://REDACTED:REDACTED@mock/status/200?sig=REDACTED" ,
1370
1370
)
1371
1371
else :
@@ -1446,11 +1446,11 @@ def test_remove_sensitive_params(self):
1446
1446
self .perform_request (new_url )
1447
1447
span = self .assert_span ()
1448
1448
1449
- actual_url = span .attributes [SpanAttributes . HTTP_URL ]
1449
+ actual_url = span .attributes [HTTP_URL ]
1450
1450
1451
1451
if "@" in actual_url :
1452
1452
self .assertEqual (
1453
- span .attributes [SpanAttributes . HTTP_URL ],
1453
+ span .attributes [HTTP_URL ],
1454
1454
"http://REDACTED:REDACTED@mock/status/200?Signature=REDACTED" ,
1455
1455
)
1456
1456
else :
@@ -1563,9 +1563,9 @@ def test_async_response_hook_does_nothing_if_not_coroutine(self):
1563
1563
self .assertEqual (
1564
1564
dict (span .attributes ),
1565
1565
{
1566
- SpanAttributes . HTTP_METHOD : "GET" ,
1567
- SpanAttributes . HTTP_URL : self .URL ,
1568
- SpanAttributes . HTTP_STATUS_CODE : 200 ,
1566
+ HTTP_METHOD : "GET" ,
1567
+ HTTP_URL : self .URL ,
1568
+ HTTP_STATUS_CODE : 200 ,
1569
1569
},
1570
1570
)
1571
1571
0 commit comments