Skip to content

Commit c492776

Browse files
committed
Add test with multiple responses.
1 parent 5129b6f commit c492776

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

instrumentation-genai/opentelemetry-instrumentation-google-genai/tests/common/otel_mocker.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,16 @@ def get_event_named(self, event_name):
179179
return event
180180
return None
181181

182+
def get_events_named(self, event_name):
183+
result = []
184+
for event in self.get_finished_logs():
185+
event_name_attr = event.attributes.get("event.name")
186+
if event_name_attr is None:
187+
continue
188+
if event_name_attr == event_name:
189+
result.append(event)
190+
return result
191+
182192
def assert_has_event_named(self, name):
183193
event = self.get_event_named(name)
184194
finished_logs = self.get_finished_logs()

instrumentation-genai/opentelemetry-instrumentation-google-genai/tests/common/requests_mocker.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,11 +141,11 @@ def combined_generator(args):
141141
if response.status_code != 200:
142142
continue
143143
response_json = response.json()
144-
response_json_str = json.dumps(response_json_str)
144+
response_json_str = json.dumps(response_json)
145145
contents.append(f'data: {response_json_str}')
146146
contents_str = '\r\n'.join(contents)
147147
full_contents = f'{contents_str}\r\n\r\n'
148-
result.raw = io.StringIO(full_contents)
148+
result.raw = io.BytesIO(full_contents.encode())
149149
return result
150150
return combined_generator
151151

instrumentation-genai/opentelemetry-instrumentation-google-genai/tests/generate_content/streaming_base.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,15 @@ def test_instrumentation_does_not_break_core_functionality(self):
5151
self.assertEqual(len(responses), 1)
5252
response = responses[0]
5353
self.assertEqual(response.text, "Yep, it works!")
54+
55+
def test_handles_multiple_ressponses(self):
56+
self.configure_valid_response(response_text="First response")
57+
self.configure_valid_response(response_text="Second response")
58+
responses = self.generate_content(
59+
model="gemini-2.0-flash", contents="Does this work?"
60+
)
61+
self.assertEqual(len(responses), 2)
62+
self.assertEqual(responses[0].text, "First response")
63+
self.assertEqual(responses[1].text, "Second response")
64+
choice_events = self.otel.get_events_named("gen_ai.choice")
65+
self.assertEqual(len(choice_events), 2)

0 commit comments

Comments
 (0)