Skip to content

Commit 0540847

Browse files
authored
opentelemetry-sdk: make SynchronousMeasurementConsumer collect deadline test more robust (open-telemetry#5081)
Instead of sleeping mock time_ns so that we can exercise the path more deterministically. Hopefully it'll help on platforms were time is not so precise like PyPy / windows. Assisted-by: Copilot
1 parent 9c270da commit 0540847

1 file changed

Lines changed: 14 additions & 7 deletions

File tree

opentelemetry-sdk/tests/metrics/test_measurement_consumer.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,9 @@ def sleep_1(*args, **kwargs):
156156
"opentelemetry.sdk.metrics._internal."
157157
"measurement_consumer.CallbackOptions"
158158
)
159+
@patch("opentelemetry.sdk.metrics._internal.measurement_consumer.time_ns")
159160
def test_collect_deadline(
160-
self, mock_callback_options, MockMetricReaderStorage
161+
self, mock_time_ns, mock_callback_options, MockMetricReaderStorage
161162
):
162163
reader_mock = Mock()
163164
reader_storage_mock = Mock()
@@ -171,17 +172,23 @@ def test_collect_deadline(
171172
)
172173
)
173174

174-
def sleep_1(*args, **kwargs):
175-
sleep(1)
176-
return []
177-
178175
consumer.register_asynchronous_instrument(
179-
Mock(**{"callback.side_effect": sleep_1})
176+
Mock(**{"callback.return_value": []})
180177
)
181178
consumer.register_asynchronous_instrument(
182-
Mock(**{"callback.side_effect": sleep_1})
179+
Mock(**{"callback.return_value": []})
183180
)
184181

182+
# collect start, first remaining_time, post-first callback,
183+
# second remaining_time, post-second callback
184+
mock_time_ns.side_effect = [
185+
0,
186+
0,
187+
int(1e9),
188+
int(1e9),
189+
int(2e9),
190+
]
191+
185192
consumer.collect(reader_mock)
186193

187194
callback_options_time_call = mock_callback_options.mock_calls[

0 commit comments

Comments
 (0)