Skip to content

Commit c9448c0

Browse files
committed
try now
1 parent 04b02db commit c9448c0

File tree

1 file changed

+30
-27
lines changed

1 file changed

+30
-27
lines changed

instrumentation/opentelemetry-instrumentation-fastapi/tests/test_fastapi_instrumentation.py

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import unittest
1818
from contextlib import ExitStack
1919
from timeit import default_timer
20+
from typing import Any, cast
2021
from unittest.mock import Mock, call, patch
2122

2223
import fastapi
@@ -46,6 +47,7 @@
4647
NumberDataPoint,
4748
)
4849
from opentelemetry.sdk.resources import Resource
50+
from opentelemetry.sdk.trace import ReadableSpan
4951
from opentelemetry.semconv._incubating.attributes.http_attributes import (
5052
HTTP_FLAVOR,
5153
HTTP_HOST,
@@ -1019,43 +1021,44 @@ async def _():
10191021

10201022

10211023
class TestFastAPIManualInstrumentationHooks(TestBaseManualFastAPI):
1022-
_server_request_hook = None
1023-
_client_request_hook = None
1024-
_client_response_hook = None
1025-
1026-
def server_request_hook(self, span, scope):
1027-
if self._server_request_hook is not None:
1028-
self._server_request_hook(span, scope)
1029-
1030-
def client_request_hook(self, receive_span, scope, message):
1031-
if self._client_request_hook is not None:
1032-
self._client_request_hook(receive_span, scope, message)
1033-
1034-
def client_response_hook(self, send_span, scope, message):
1035-
if self._client_response_hook is not None:
1036-
self._client_response_hook(send_span, scope, message)
1037-
1038-
def test_hooks(self):
1039-
def server_request_hook(span, scope):
1024+
def _create_app(self):
1025+
def server_request_hook(span: trace.Span, scope: dict[str, Any]):
10401026
span.update_name("name from server hook")
10411027

1042-
def client_request_hook(receive_span, scope, message):
1028+
def client_request_hook(
1029+
receive_span: trace.Span,
1030+
scope: dict[str, Any],
1031+
message: dict[str, Any],
1032+
):
10431033
receive_span.update_name("name from client hook")
10441034
receive_span.set_attribute("attr-from-request-hook", "set")
10451035

1046-
def client_response_hook(send_span, scope, message):
1036+
def client_response_hook(
1037+
send_span: trace.Span,
1038+
scope: dict[str, Any],
1039+
message: dict[str, Any],
1040+
):
10471041
send_span.update_name("name from response hook")
10481042
send_span.set_attribute("attr-from-response-hook", "value")
10491043

1050-
self._server_request_hook = server_request_hook
1051-
self._client_request_hook = client_request_hook
1052-
self._client_response_hook = client_response_hook
1044+
self._instrumentor.instrument(
1045+
server_request_hook=server_request_hook,
1046+
client_request_hook=client_request_hook,
1047+
client_response_hook=client_response_hook,
1048+
)
10531049

1050+
app = self._create_fastapi_app()
1051+
1052+
return app
1053+
1054+
def test_hooks(self):
10541055
self._client.get("/foobar")
1055-
spans = self.sorted_spans(self.memory_exporter.get_finished_spans())
1056-
self.assertEqual(
1057-
len(spans), 3
1058-
) # 1 server span and 2 response spans (response start and body)
1056+
1057+
spans = cast(
1058+
list[ReadableSpan],
1059+
self.sorted_spans(self.memory_exporter.get_finished_spans()),
1060+
)
1061+
self.assertEqual(len(spans), 3)
10591062

10601063
server_span = spans[2]
10611064
self.assertEqual(server_span.name, "name from server hook")

0 commit comments

Comments
 (0)