Refactor: replace use of SpanAttributes (#3502)

Co-authored-by: Riccardo Magliocchetti <riccardo.magliocchetti@gmail.com>
This commit is contained in:
Caterina Andreu 2025-05-15 10:58:37 -07:00 committed by GitHub
parent 99049a9652
commit 3efd161cb6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 40 additions and 44 deletions

View File

@ -36,6 +36,11 @@ from opentelemetry.instrumentation.aiohttp_client import (
AioHttpClientInstrumentor, AioHttpClientInstrumentor,
) )
from opentelemetry.instrumentation.utils import suppress_instrumentation from opentelemetry.instrumentation.utils import suppress_instrumentation
from opentelemetry.semconv._incubating.attributes.http_attributes import (
HTTP_METHOD,
HTTP_STATUS_CODE,
HTTP_URL,
)
from opentelemetry.semconv.attributes.error_attributes import ERROR_TYPE from opentelemetry.semconv.attributes.error_attributes import ERROR_TYPE
from opentelemetry.semconv.attributes.http_attributes import ( from opentelemetry.semconv.attributes.http_attributes import (
HTTP_REQUEST_METHOD, HTTP_REQUEST_METHOD,
@ -43,7 +48,6 @@ from opentelemetry.semconv.attributes.http_attributes import (
HTTP_RESPONSE_STATUS_CODE, HTTP_RESPONSE_STATUS_CODE,
) )
from opentelemetry.semconv.attributes.url_attributes import URL_FULL from opentelemetry.semconv.attributes.url_attributes import URL_FULL
from opentelemetry.semconv.trace import SpanAttributes
from opentelemetry.test.test_base import TestBase from opentelemetry.test.test_base import TestBase
from opentelemetry.trace import Span, StatusCode from opentelemetry.trace import Span, StatusCode
from opentelemetry.util._importlib_metadata import entry_points from opentelemetry.util._importlib_metadata import entry_points
@ -136,9 +140,9 @@ class TestAioHttpIntegration(TestBase):
) )
url = f"http://{host}:{port}/{path}" url = f"http://{host}:{port}/{path}"
attributes = { attributes = {
SpanAttributes.HTTP_METHOD: "GET", HTTP_METHOD: "GET",
SpanAttributes.HTTP_URL: url, HTTP_URL: url,
SpanAttributes.HTTP_STATUS_CODE: status_code, HTTP_STATUS_CODE: status_code,
} }
spans = [("GET", (span_status, None), attributes)] spans = [("GET", (span_status, None), attributes)]
self.assert_spans(spans) self.assert_spans(spans)
@ -181,11 +185,11 @@ class TestAioHttpIntegration(TestBase):
url = f"http://{host}:{port}/{path}" url = f"http://{host}:{port}/{path}"
attributes = { attributes = {
HTTP_REQUEST_METHOD: "GET", HTTP_REQUEST_METHOD: "GET",
SpanAttributes.HTTP_METHOD: "GET", HTTP_METHOD: "GET",
URL_FULL: url, URL_FULL: url,
SpanAttributes.HTTP_URL: url, HTTP_URL: url,
HTTP_RESPONSE_STATUS_CODE: status_code, HTTP_RESPONSE_STATUS_CODE: status_code,
SpanAttributes.HTTP_STATUS_CODE: status_code, HTTP_STATUS_CODE: status_code,
} }
if status_code >= 400: if status_code >= 400:
attributes[ERROR_TYPE] = str(status_code.value) attributes[ERROR_TYPE] = str(status_code.value)
@ -292,16 +296,12 @@ class TestAioHttpIntegration(TestBase):
(span.status.status_code, span.status.description), (span.status.status_code, span.status.description),
(StatusCode.UNSET, None), (StatusCode.UNSET, None),
) )
self.assertEqual(span.attributes[HTTP_METHOD], method)
self.assertEqual( self.assertEqual(
span.attributes[SpanAttributes.HTTP_METHOD], method span.attributes[HTTP_URL],
)
self.assertEqual(
span.attributes[SpanAttributes.HTTP_URL],
f"http://{host}:{port}{path}", f"http://{host}:{port}{path}",
) )
self.assertEqual( self.assertEqual(span.attributes[HTTP_STATUS_CODE], HTTPStatus.OK)
span.attributes[SpanAttributes.HTTP_STATUS_CODE], HTTPStatus.OK
)
self.assertIn("response_hook_attr", span.attributes) self.assertIn("response_hook_attr", span.attributes)
self.assertEqual(span.attributes["response_hook_attr"], "value") self.assertEqual(span.attributes["response_hook_attr"], "value")
self.memory_exporter.clear() self.memory_exporter.clear()
@ -325,9 +325,9 @@ class TestAioHttpIntegration(TestBase):
"GET", "GET",
(StatusCode.UNSET, None), (StatusCode.UNSET, None),
{ {
SpanAttributes.HTTP_METHOD: "GET", HTTP_METHOD: "GET",
SpanAttributes.HTTP_URL: f"http://{host}:{port}/some/path", HTTP_URL: f"http://{host}:{port}/some/path",
SpanAttributes.HTTP_STATUS_CODE: int(HTTPStatus.OK), HTTP_STATUS_CODE: int(HTTPStatus.OK),
}, },
) )
] ]
@ -359,8 +359,8 @@ class TestAioHttpIntegration(TestBase):
"GET", "GET",
(expected_status, "ClientConnectorError"), (expected_status, "ClientConnectorError"),
{ {
SpanAttributes.HTTP_METHOD: "GET", HTTP_METHOD: "GET",
SpanAttributes.HTTP_URL: url, HTTP_URL: url,
}, },
) )
] ]
@ -385,8 +385,8 @@ class TestAioHttpIntegration(TestBase):
"GET", "GET",
(StatusCode.ERROR, "ServerDisconnectedError"), (StatusCode.ERROR, "ServerDisconnectedError"),
{ {
SpanAttributes.HTTP_METHOD: "GET", HTTP_METHOD: "GET",
SpanAttributes.HTTP_URL: f"http://{host}:{port}/test", HTTP_URL: f"http://{host}:{port}/test",
}, },
) )
] ]
@ -443,8 +443,8 @@ class TestAioHttpIntegration(TestBase):
HTTP_REQUEST_METHOD: "GET", HTTP_REQUEST_METHOD: "GET",
URL_FULL: f"http://{host}:{port}/test", URL_FULL: f"http://{host}:{port}/test",
ERROR_TYPE: "ServerDisconnectedError", ERROR_TYPE: "ServerDisconnectedError",
SpanAttributes.HTTP_METHOD: "GET", HTTP_METHOD: "GET",
SpanAttributes.HTTP_URL: f"http://{host}:{port}/test", HTTP_URL: f"http://{host}:{port}/test",
}, },
) )
] ]
@ -469,8 +469,8 @@ class TestAioHttpIntegration(TestBase):
"GET", "GET",
(StatusCode.ERROR, "SocketTimeoutError"), (StatusCode.ERROR, "SocketTimeoutError"),
{ {
SpanAttributes.HTTP_METHOD: "GET", HTTP_METHOD: "GET",
SpanAttributes.HTTP_URL: f"http://{host}:{port}/test_timeout", HTTP_URL: f"http://{host}:{port}/test_timeout",
}, },
) )
] ]
@ -496,8 +496,8 @@ class TestAioHttpIntegration(TestBase):
"GET", "GET",
(StatusCode.ERROR, "TooManyRedirects"), (StatusCode.ERROR, "TooManyRedirects"),
{ {
SpanAttributes.HTTP_METHOD: "GET", HTTP_METHOD: "GET",
SpanAttributes.HTTP_URL: f"http://{host}:{port}/test_too_many_redirects", HTTP_URL: f"http://{host}:{port}/test_too_many_redirects",
}, },
) )
] ]
@ -532,11 +532,9 @@ class TestAioHttpIntegration(TestBase):
"HTTP", "HTTP",
(StatusCode.ERROR, None), (StatusCode.ERROR, None),
{ {
SpanAttributes.HTTP_METHOD: "_OTHER", HTTP_METHOD: "_OTHER",
SpanAttributes.HTTP_URL: url, HTTP_URL: url,
SpanAttributes.HTTP_STATUS_CODE: int( HTTP_STATUS_CODE: int(HTTPStatus.METHOD_NOT_ALLOWED),
HTTPStatus.METHOD_NOT_ALLOWED
),
}, },
) )
] ]
@ -619,11 +617,9 @@ class TestAioHttpIntegration(TestBase):
"GET", "GET",
(StatusCode.UNSET, None), (StatusCode.UNSET, None),
{ {
SpanAttributes.HTTP_METHOD: "GET", HTTP_METHOD: "GET",
SpanAttributes.HTTP_URL: ( HTTP_URL: ("http://localhost:5000/status/200"),
"http://localhost:5000/status/200" HTTP_STATUS_CODE: int(HTTPStatus.OK),
),
SpanAttributes.HTTP_STATUS_CODE: int(HTTPStatus.OK),
}, },
) )
] ]
@ -671,12 +667,12 @@ class TestAioHttpClientInstrumentor(TestBase):
) )
span = self.assert_spans(1) span = self.assert_spans(1)
self.assertEqual("GET", span.name) self.assertEqual("GET", span.name)
self.assertEqual("GET", span.attributes[SpanAttributes.HTTP_METHOD]) self.assertEqual("GET", span.attributes[HTTP_METHOD])
self.assertEqual( self.assertEqual(
f"http://{host}:{port}/test-path", f"http://{host}:{port}/test-path",
span.attributes[SpanAttributes.HTTP_URL], span.attributes[HTTP_URL],
) )
self.assertEqual(200, span.attributes[SpanAttributes.HTTP_STATUS_CODE]) self.assertEqual(200, span.attributes[HTTP_STATUS_CODE])
def test_instrument_new_semconv(self): def test_instrument_new_semconv(self):
AioHttpClientInstrumentor().uninstrument() AioHttpClientInstrumentor().uninstrument()
@ -708,11 +704,11 @@ class TestAioHttpClientInstrumentor(TestBase):
url = f"http://{host}:{port}/test-path" url = f"http://{host}:{port}/test-path"
attributes = { attributes = {
HTTP_REQUEST_METHOD: "GET", HTTP_REQUEST_METHOD: "GET",
SpanAttributes.HTTP_METHOD: "GET", HTTP_METHOD: "GET",
URL_FULL: url, URL_FULL: url,
SpanAttributes.HTTP_URL: url, HTTP_URL: url,
HTTP_RESPONSE_STATUS_CODE: 200, HTTP_RESPONSE_STATUS_CODE: 200,
SpanAttributes.HTTP_STATUS_CODE: 200, HTTP_STATUS_CODE: 200,
} }
span = self.assert_spans(1) span = self.assert_spans(1)
self.assertEqual("GET", span.name) self.assertEqual("GET", span.name)
@ -852,7 +848,7 @@ class TestAioHttpClientInstrumentor(TestBase):
span = self.assert_spans(1) span = self.assert_spans(1)
self.assertEqual( self.assertEqual(
f"http://{host}:{port}/test-path", f"http://{host}:{port}/test-path",
span.attributes[SpanAttributes.HTTP_URL], span.attributes[HTTP_URL],
) )
def test_hooks(self): def test_hooks(self):