From d7cdbea92b91fa17d3463cc1c0692af2703e11c4 Mon Sep 17 00:00:00 2001 From: Anuraag Agrawal Date: Fri, 23 Jan 2026 15:27:43 +0900 Subject: [PATCH 1/3] starlette: use test_base to fetch metrics for assertions or filter locally --- .../tests/test_starlette_instrumentation.py | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/instrumentation/opentelemetry-instrumentation-starlette/tests/test_starlette_instrumentation.py b/instrumentation/opentelemetry-instrumentation-starlette/tests/test_starlette_instrumentation.py index 8c326e83ba..11f991cccd 100644 --- a/instrumentation/opentelemetry-instrumentation-starlette/tests/test_starlette_instrumentation.py +++ b/instrumentation/opentelemetry-instrumentation-starlette/tests/test_starlette_instrumentation.py @@ -185,12 +185,13 @@ def test_starlette_metrics(self): histogram_data_point_seen = False self.assertTrue(len(metrics_list.resource_metrics) == 1) for resource_metric in metrics_list.resource_metrics: - self.assertTrue(len(resource_metric.scope_metrics) == 1) - for scope_metric in resource_metric.scope_metrics: - self.assertEqual( - scope_metric.scope.name, - "opentelemetry.instrumentation.starlette", - ) + scope_metrics = [ + sm + for sm in resource_metric.scope_metrics + if sm.scope.name == "opentelemetry.instrumentation.starlette" + ] + self.assertTrue(len(scope_metrics) == 1) + for scope_metric in scope_metrics: self.assertTrue(len(scope_metric.metrics) == 3) for metric in scope_metric.metrics: self.assertIn(metric.name, _expected_metric_names) @@ -233,10 +234,8 @@ def test_basic_post_request_metric_success(self): duration = max(round((default_timer() - start) * 1000), 0) response_size = int(response.headers.get("content-length")) request_size = int(response.request.headers.get("content-length")) - metrics_list = self.memory_metrics_reader.get_metrics_data() - for metric in ( - metrics_list.resource_metrics[0].scope_metrics[0].metrics - ): + metrics = self.get_sorted_metrics() + for metric in metrics: for point in list(metric.data.data_points): if isinstance(point, HistogramDataPoint): self.assertEqual(point.count, 1) @@ -262,10 +261,8 @@ def test_metric_for_uninstrment_app_method(self): self._instrumentor.uninstrument_app(self._app) self._client.get("/foobar") self._client.get("/foobar") - metrics_list = self.memory_metrics_reader.get_metrics_data() - for metric in ( - metrics_list.resource_metrics[0].scope_metrics[0].metrics - ): + metrics = self.get_sorted_metrics() + for metric in metrics: for point in list(metric.data.data_points): if isinstance(point, HistogramDataPoint): self.assertEqual(point.count, 1) @@ -283,10 +280,8 @@ def test_metric_uninstrument_inherited_by_base(self): client.get("/foobar") client.get("/foobar") client.get("/foobar") - metrics_list = self.memory_metrics_reader.get_metrics_data() - for metric in ( - metrics_list.resource_metrics[0].scope_metrics[0].metrics - ): + metrics = self.get_sorted_metrics() + for metric in metrics: for point in list(metric.data.data_points): if isinstance(point, HistogramDataPoint): self.assertEqual(point.count, 1) From 3d566362c28c1a5764cddc4008a97f1ceff22c1a Mon Sep 17 00:00:00 2001 From: Riccardo Magliocchetti Date: Fri, 23 Jan 2026 16:20:01 +0100 Subject: [PATCH 2/3] Update test_starlette_instrumentation.py --- .../tests/test_starlette_instrumentation.py | 47 ++++++++----------- 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/instrumentation/opentelemetry-instrumentation-starlette/tests/test_starlette_instrumentation.py b/instrumentation/opentelemetry-instrumentation-starlette/tests/test_starlette_instrumentation.py index 11f991cccd..204e2df014 100644 --- a/instrumentation/opentelemetry-instrumentation-starlette/tests/test_starlette_instrumentation.py +++ b/instrumentation/opentelemetry-instrumentation-starlette/tests/test_starlette_instrumentation.py @@ -180,33 +180,24 @@ def test_starlette_metrics(self): self._client.get("/foobar") self._client.get("/foobar") self._client.get("/foobar") - metrics_list = self.memory_metrics_reader.get_metrics_data() number_data_point_seen = False histogram_data_point_seen = False - self.assertTrue(len(metrics_list.resource_metrics) == 1) - for resource_metric in metrics_list.resource_metrics: - scope_metrics = [ - sm - for sm in resource_metric.scope_metrics - if sm.scope.name == "opentelemetry.instrumentation.starlette" - ] - self.assertTrue(len(scope_metrics) == 1) - for scope_metric in scope_metrics: - self.assertTrue(len(scope_metric.metrics) == 3) - for metric in scope_metric.metrics: - self.assertIn(metric.name, _expected_metric_names) - data_points = list(metric.data.data_points) - self.assertEqual(len(data_points), 1) - for point in data_points: - if isinstance(point, HistogramDataPoint): - self.assertEqual(point.count, 3) - histogram_data_point_seen = True - if isinstance(point, NumberDataPoint): - number_data_point_seen = True - for attr in point.attributes: - self.assertIn( - attr, _recommended_attrs[metric.name] - ) + metrics = self.get_sorted_metrics(scope="opentelemetry.instrumentation.starlette") + self.assertTrue(len(metrics) == 3) + for metric in metrics: + self.assertIn(metric.name, _expected_metric_names) + data_points = list(metric.data.data_points) + self.assertEqual(len(data_points), 1) + for point in data_points: + if isinstance(point, HistogramDataPoint): + self.assertEqual(point.count, 3) + histogram_data_point_seen = True + if isinstance(point, NumberDataPoint): + number_data_point_seen = True + for attr in point.attributes: + self.assertIn( + attr, _recommended_attrs[metric.name] + ) self.assertTrue(number_data_point_seen and histogram_data_point_seen) def test_basic_post_request_metric_success(self): @@ -234,7 +225,7 @@ def test_basic_post_request_metric_success(self): duration = max(round((default_timer() - start) * 1000), 0) response_size = int(response.headers.get("content-length")) request_size = int(response.request.headers.get("content-length")) - metrics = self.get_sorted_metrics() + metrics = self.get_sorted_metrics(scope="opentelemetry.instrumentation.starlette") for metric in metrics: for point in list(metric.data.data_points): if isinstance(point, HistogramDataPoint): @@ -261,7 +252,7 @@ def test_metric_for_uninstrment_app_method(self): self._instrumentor.uninstrument_app(self._app) self._client.get("/foobar") self._client.get("/foobar") - metrics = self.get_sorted_metrics() + metrics = self.get_sorted_metrics(scope="opentelemetry.instrumentation.starlette") for metric in metrics: for point in list(metric.data.data_points): if isinstance(point, HistogramDataPoint): @@ -280,7 +271,7 @@ def test_metric_uninstrument_inherited_by_base(self): client.get("/foobar") client.get("/foobar") client.get("/foobar") - metrics = self.get_sorted_metrics() + metrics = self.get_sorted_metrics(scope="opentelemetry.instrumentation.starlette") for metric in metrics: for point in list(metric.data.data_points): if isinstance(point, HistogramDataPoint): From adc2b2edfaca3238f47a5da632e0397d440cff39 Mon Sep 17 00:00:00 2001 From: Riccardo Magliocchetti Date: Fri, 23 Jan 2026 16:33:25 +0100 Subject: [PATCH 3/3] Update test_starlette_instrumentation.py --- .../tests/test_starlette_instrumentation.py | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/instrumentation/opentelemetry-instrumentation-starlette/tests/test_starlette_instrumentation.py b/instrumentation/opentelemetry-instrumentation-starlette/tests/test_starlette_instrumentation.py index 204e2df014..9a6af615d4 100644 --- a/instrumentation/opentelemetry-instrumentation-starlette/tests/test_starlette_instrumentation.py +++ b/instrumentation/opentelemetry-instrumentation-starlette/tests/test_starlette_instrumentation.py @@ -182,7 +182,9 @@ def test_starlette_metrics(self): self._client.get("/foobar") number_data_point_seen = False histogram_data_point_seen = False - metrics = self.get_sorted_metrics(scope="opentelemetry.instrumentation.starlette") + metrics = self.get_sorted_metrics( + scope="opentelemetry.instrumentation.starlette" + ) self.assertTrue(len(metrics) == 3) for metric in metrics: self.assertIn(metric.name, _expected_metric_names) @@ -195,9 +197,7 @@ def test_starlette_metrics(self): if isinstance(point, NumberDataPoint): number_data_point_seen = True for attr in point.attributes: - self.assertIn( - attr, _recommended_attrs[metric.name] - ) + self.assertIn(attr, _recommended_attrs[metric.name]) self.assertTrue(number_data_point_seen and histogram_data_point_seen) def test_basic_post_request_metric_success(self): @@ -225,7 +225,9 @@ def test_basic_post_request_metric_success(self): duration = max(round((default_timer() - start) * 1000), 0) response_size = int(response.headers.get("content-length")) request_size = int(response.request.headers.get("content-length")) - metrics = self.get_sorted_metrics(scope="opentelemetry.instrumentation.starlette") + metrics = self.get_sorted_metrics( + scope="opentelemetry.instrumentation.starlette" + ) for metric in metrics: for point in list(metric.data.data_points): if isinstance(point, HistogramDataPoint): @@ -252,7 +254,9 @@ def test_metric_for_uninstrment_app_method(self): self._instrumentor.uninstrument_app(self._app) self._client.get("/foobar") self._client.get("/foobar") - metrics = self.get_sorted_metrics(scope="opentelemetry.instrumentation.starlette") + metrics = self.get_sorted_metrics( + scope="opentelemetry.instrumentation.starlette" + ) for metric in metrics: for point in list(metric.data.data_points): if isinstance(point, HistogramDataPoint): @@ -271,7 +275,9 @@ def test_metric_uninstrument_inherited_by_base(self): client.get("/foobar") client.get("/foobar") client.get("/foobar") - metrics = self.get_sorted_metrics(scope="opentelemetry.instrumentation.starlette") + metrics = self.get_sorted_metrics( + scope="opentelemetry.instrumentation.starlette" + ) for metric in metrics: for point in list(metric.data.data_points): if isinstance(point, HistogramDataPoint):