36
36
AioHttpClientInstrumentor ,
37
37
)
38
38
from opentelemetry .instrumentation .utils import suppress_instrumentation
39
+ from opentelemetry .semconv ._incubating .attributes .http_attributes import (
40
+ HTTP_METHOD ,
41
+ HTTP_STATUS_CODE ,
42
+ HTTP_URL ,
43
+ )
39
44
from opentelemetry .semconv .attributes .error_attributes import ERROR_TYPE
40
45
from opentelemetry .semconv .attributes .http_attributes import (
41
46
HTTP_REQUEST_METHOD ,
42
47
HTTP_REQUEST_METHOD_ORIGINAL ,
43
48
HTTP_RESPONSE_STATUS_CODE ,
44
49
)
45
50
from opentelemetry .semconv .attributes .url_attributes import URL_FULL
46
- from opentelemetry .semconv .trace import SpanAttributes
47
51
from opentelemetry .test .test_base import TestBase
48
52
from opentelemetry .trace import Span , StatusCode
49
53
from opentelemetry .util ._importlib_metadata import entry_points
@@ -136,9 +140,9 @@ def test_status_codes(self):
136
140
)
137
141
url = f"http://{ host } :{ port } /{ path } "
138
142
attributes = {
139
- SpanAttributes . HTTP_METHOD : "GET" ,
140
- SpanAttributes . HTTP_URL : url ,
141
- SpanAttributes . HTTP_STATUS_CODE : status_code ,
143
+ HTTP_METHOD : "GET" ,
144
+ HTTP_URL : url ,
145
+ HTTP_STATUS_CODE : status_code ,
142
146
}
143
147
spans = [("GET" , (span_status , None ), attributes )]
144
148
self .assert_spans (spans )
@@ -181,11 +185,11 @@ def test_status_codes_both_semconv(self):
181
185
url = f"http://{ host } :{ port } /{ path } "
182
186
attributes = {
183
187
HTTP_REQUEST_METHOD : "GET" ,
184
- SpanAttributes . HTTP_METHOD : "GET" ,
188
+ HTTP_METHOD : "GET" ,
185
189
URL_FULL : url ,
186
- SpanAttributes . HTTP_URL : url ,
190
+ HTTP_URL : url ,
187
191
HTTP_RESPONSE_STATUS_CODE : status_code ,
188
- SpanAttributes . HTTP_STATUS_CODE : status_code ,
192
+ HTTP_STATUS_CODE : status_code ,
189
193
}
190
194
if status_code >= 400 :
191
195
attributes [ERROR_TYPE ] = str (status_code .value )
@@ -292,16 +296,12 @@ def response_hook(
292
296
(span .status .status_code , span .status .description ),
293
297
(StatusCode .UNSET , None ),
294
298
)
299
+ self .assertEqual (span .attributes [HTTP_METHOD ], method )
295
300
self .assertEqual (
296
- span .attributes [SpanAttributes .HTTP_METHOD ], method
297
- )
298
- self .assertEqual (
299
- span .attributes [SpanAttributes .HTTP_URL ],
301
+ span .attributes [HTTP_URL ],
300
302
f"http://{ host } :{ port } { path } " ,
301
303
)
302
- self .assertEqual (
303
- span .attributes [SpanAttributes .HTTP_STATUS_CODE ], HTTPStatus .OK
304
- )
304
+ self .assertEqual (span .attributes [HTTP_STATUS_CODE ], HTTPStatus .OK )
305
305
self .assertIn ("response_hook_attr" , span .attributes )
306
306
self .assertEqual (span .attributes ["response_hook_attr" ], "value" )
307
307
self .memory_exporter .clear ()
@@ -325,9 +325,9 @@ def strip_query_params(url: yarl.URL) -> str:
325
325
"GET" ,
326
326
(StatusCode .UNSET , None ),
327
327
{
328
- SpanAttributes . HTTP_METHOD : "GET" ,
329
- SpanAttributes . HTTP_URL : f"http://{ host } :{ port } /some/path" ,
330
- SpanAttributes . HTTP_STATUS_CODE : int (HTTPStatus .OK ),
328
+ HTTP_METHOD : "GET" ,
329
+ HTTP_URL : f"http://{ host } :{ port } /some/path" ,
330
+ HTTP_STATUS_CODE : int (HTTPStatus .OK ),
331
331
},
332
332
)
333
333
]
@@ -359,8 +359,8 @@ async def do_request(url):
359
359
"GET" ,
360
360
(expected_status , "ClientConnectorError" ),
361
361
{
362
- SpanAttributes . HTTP_METHOD : "GET" ,
363
- SpanAttributes . HTTP_URL : url ,
362
+ HTTP_METHOD : "GET" ,
363
+ HTTP_URL : url ,
364
364
},
365
365
)
366
366
]
@@ -385,8 +385,8 @@ async def request_handler(request):
385
385
"GET" ,
386
386
(StatusCode .ERROR , "ServerDisconnectedError" ),
387
387
{
388
- SpanAttributes . HTTP_METHOD : "GET" ,
389
- SpanAttributes . HTTP_URL : f"http://{ host } :{ port } /test" ,
388
+ HTTP_METHOD : "GET" ,
389
+ HTTP_URL : f"http://{ host } :{ port } /test" ,
390
390
},
391
391
)
392
392
]
@@ -443,8 +443,8 @@ async def request_handler(request):
443
443
HTTP_REQUEST_METHOD : "GET" ,
444
444
URL_FULL : f"http://{ host } :{ port } /test" ,
445
445
ERROR_TYPE : "ServerDisconnectedError" ,
446
- SpanAttributes . HTTP_METHOD : "GET" ,
447
- SpanAttributes . HTTP_URL : f"http://{ host } :{ port } /test" ,
446
+ HTTP_METHOD : "GET" ,
447
+ HTTP_URL : f"http://{ host } :{ port } /test" ,
448
448
},
449
449
)
450
450
]
@@ -469,8 +469,8 @@ async def request_handler(request):
469
469
"GET" ,
470
470
(StatusCode .ERROR , "SocketTimeoutError" ),
471
471
{
472
- SpanAttributes . HTTP_METHOD : "GET" ,
473
- SpanAttributes . HTTP_URL : f"http://{ host } :{ port } /test_timeout" ,
472
+ HTTP_METHOD : "GET" ,
473
+ HTTP_URL : f"http://{ host } :{ port } /test_timeout" ,
474
474
},
475
475
)
476
476
]
@@ -496,8 +496,8 @@ async def request_handler(request):
496
496
"GET" ,
497
497
(StatusCode .ERROR , "TooManyRedirects" ),
498
498
{
499
- SpanAttributes . HTTP_METHOD : "GET" ,
500
- SpanAttributes . HTTP_URL : f"http://{ host } :{ port } /test_too_many_redirects" ,
499
+ HTTP_METHOD : "GET" ,
500
+ HTTP_URL : f"http://{ host } :{ port } /test_too_many_redirects" ,
501
501
},
502
502
)
503
503
]
@@ -532,11 +532,9 @@ async def do_request(url):
532
532
"HTTP" ,
533
533
(StatusCode .ERROR , None ),
534
534
{
535
- SpanAttributes .HTTP_METHOD : "_OTHER" ,
536
- SpanAttributes .HTTP_URL : url ,
537
- SpanAttributes .HTTP_STATUS_CODE : int (
538
- HTTPStatus .METHOD_NOT_ALLOWED
539
- ),
535
+ HTTP_METHOD : "_OTHER" ,
536
+ HTTP_URL : url ,
537
+ HTTP_STATUS_CODE : int (HTTPStatus .METHOD_NOT_ALLOWED ),
540
538
},
541
539
)
542
540
]
@@ -619,11 +617,9 @@ async def do_request(url):
619
617
"GET" ,
620
618
(StatusCode .UNSET , None ),
621
619
{
622
- SpanAttributes .HTTP_METHOD : "GET" ,
623
- SpanAttributes .HTTP_URL : (
624
- "http://localhost:5000/status/200"
625
- ),
626
- SpanAttributes .HTTP_STATUS_CODE : int (HTTPStatus .OK ),
620
+ HTTP_METHOD : "GET" ,
621
+ HTTP_URL : ("http://localhost:5000/status/200" ),
622
+ HTTP_STATUS_CODE : int (HTTPStatus .OK ),
627
623
},
628
624
)
629
625
]
@@ -671,12 +667,12 @@ def test_instrument(self):
671
667
)
672
668
span = self .assert_spans (1 )
673
669
self .assertEqual ("GET" , span .name )
674
- self .assertEqual ("GET" , span .attributes [SpanAttributes . HTTP_METHOD ])
670
+ self .assertEqual ("GET" , span .attributes [HTTP_METHOD ])
675
671
self .assertEqual (
676
672
f"http://{ host } :{ port } /test-path" ,
677
- span .attributes [SpanAttributes . HTTP_URL ],
673
+ span .attributes [HTTP_URL ],
678
674
)
679
- self .assertEqual (200 , span .attributes [SpanAttributes . HTTP_STATUS_CODE ])
675
+ self .assertEqual (200 , span .attributes [HTTP_STATUS_CODE ])
680
676
681
677
def test_instrument_new_semconv (self ):
682
678
AioHttpClientInstrumentor ().uninstrument ()
@@ -708,11 +704,11 @@ def test_instrument_both_semconv(self):
708
704
url = f"http://{ host } :{ port } /test-path"
709
705
attributes = {
710
706
HTTP_REQUEST_METHOD : "GET" ,
711
- SpanAttributes . HTTP_METHOD : "GET" ,
707
+ HTTP_METHOD : "GET" ,
712
708
URL_FULL : url ,
713
- SpanAttributes . HTTP_URL : url ,
709
+ HTTP_URL : url ,
714
710
HTTP_RESPONSE_STATUS_CODE : 200 ,
715
- SpanAttributes . HTTP_STATUS_CODE : 200 ,
711
+ HTTP_STATUS_CODE : 200 ,
716
712
}
717
713
span = self .assert_spans (1 )
718
714
self .assertEqual ("GET" , span .name )
@@ -852,7 +848,7 @@ def strip_query_params(url: yarl.URL) -> str:
852
848
span = self .assert_spans (1 )
853
849
self .assertEqual (
854
850
f"http://{ host } :{ port } /test-path" ,
855
- span .attributes [SpanAttributes . HTTP_URL ],
851
+ span .attributes [HTTP_URL ],
856
852
)
857
853
858
854
def test_hooks (self ):
0 commit comments