Skip to content

Commit 92c4ef6

Browse files
committed
test: Merge test cases
1 parent e9caecc commit 92c4ef6

File tree

1 file changed

+30
-33
lines changed

1 file changed

+30
-33
lines changed

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

Lines changed: 30 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121

2222
class TestWrappedApplication(TestBase):
23+
2324
def setUp(self):
2425
super().setUp()
2526

@@ -29,7 +30,12 @@ def setUp(self):
2930
async def _():
3031
return {"message": "hello world"}
3132

32-
otel_fastapi.FastAPIInstrumentor().instrument_app(self.app)
33+
@self.app.get("/user/{username}")
34+
async def _(username: str):
35+
return {"username": username}
36+
37+
otel_fastapi.FastAPIInstrumentor().instrument_app(
38+
self.app, render_path_parameters=True)
3339
self.client = TestClient(self.app)
3440
self.tracer = self.tracer_provider.get_tracer(__name__)
3541

@@ -40,8 +46,7 @@ def tearDown(self) -> None:
4046

4147
def test_mark_span_internal_in_presence_of_span_from_other_framework(self):
4248
with self.tracer.start_as_current_span(
43-
"test", kind=trace.SpanKind.SERVER
44-
) as parent_span:
49+
"test", kind=trace.SpanKind.SERVER) as parent_span:
4550
resp = self.client.get("/foobar")
4651
self.assertEqual(200, resp.status_code)
4752

@@ -54,36 +59,30 @@ def test_mark_span_internal_in_presence_of_span_from_other_framework(self):
5459
self.assertEqual(trace.SpanKind.INTERNAL, span_list[1].kind)
5560
# main INTERNAL span - child of test
5661
self.assertEqual(trace.SpanKind.INTERNAL, span_list[2].kind)
57-
self.assertEqual(
58-
parent_span.context.span_id, span_list[2].parent.span_id
59-
)
62+
self.assertEqual(parent_span.context.span_id,
63+
span_list[2].parent.span_id)
6064
# SERVER "test"
6165
self.assertEqual(trace.SpanKind.SERVER, span_list[3].kind)
62-
self.assertEqual(
63-
parent_span.context.span_id, span_list[3].context.span_id
64-
)
65-
66-
67-
class TestFastAPIRenderPathParameters(TestWrappedApplication):
68-
69-
def setUp(self):
70-
super().setUp()
71-
# Create a FastAPI app with a path parameter
72-
@self.app.get("/user/{username}")
73-
async def read_user(username: str):
74-
return {"username": username}
75-
76-
# Instrument the app
77-
otel_fastapi.FastAPIInstrumentor().instrument_app(
78-
self.app, render_path_parameters=True)
66+
self.assertEqual(parent_span.context.span_id,
67+
span_list[3].context.span_id)
7968

8069
def test_render_path_parameters(self):
8170
"""Test that path parameters are rendered correctly in spans."""
8271

72+
# Make sure non-path parameters are not affected
73+
resp = self.client.get("/foobar")
74+
self.assertEqual(resp.status_code, 200)
75+
spans = self.memory_exporter.get_finished_spans()
76+
expected_span_name = "GET /foobar"
77+
self.assertEqual(
78+
spans[0].name, 'GET /foobar',
79+
f"Expected span name to be '{expected_span_name}', but got '{spans[0].name}'"
80+
)
81+
8382
# Make a request to the endpoint with a path parameter
84-
response = self.client.get("/user/johndoe")
85-
self.assertEqual(response.status_code, 200)
86-
self.assertEqual(response.json(), {"username": "johndoe"})
83+
resp = self.client.get("/user/johndoe")
84+
self.assertEqual(resp.status_code, 200)
85+
self.assertEqual(resp.json(), {"username": "johndoe"})
8786

8887
# Retrieve the spans generated
8988
spans = self.memory_exporter.get_finished_spans()
@@ -103,7 +102,7 @@ def test_render_path_parameters(self):
103102
self.assertIn("http.path_parameters.username", server_span.attributes)
104103
self.assertEqual(
105104
server_span.attributes["http.path_parameters.username"], "johndoe")
106-
105+
107106
# Retrieve the spans generated
108107
spans = self.memory_exporter.get_finished_spans()
109108

@@ -112,9 +111,7 @@ def test_render_path_parameters(self):
112111

113112
# Assert that the span name is as expected
114113
expected_span_name = "GET /user/johndoe" # Adjust this based on your implementation
115-
self.assertEqual(spans[0].name, expected_span_name, f"Expected span name to be '{expected_span_name}', but got '{spans[0].name}'")
116-
117-
def tearDown(self):
118-
super().tearDown()
119-
with self.disable_logging():
120-
otel_fastapi.FastAPIInstrumentor().uninstrument_app(self.app)
114+
self.assertEqual(
115+
spans[0].name, expected_span_name,
116+
f"Expected span name to be '{expected_span_name}', but got '{spans[0].name}'"
117+
)

0 commit comments

Comments
 (0)