mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2026-03-13 08:10:39 +08:00
flask: use test_base to fetch metrics for assertions (#4128)
This commit is contained in:
committed by
GitHub
parent
0e7244b31f
commit
b960b38535
@@ -497,32 +497,26 @@ class TestProgrammatic(InstrumentationTest, WsgiTestBase):
|
||||
self.client.get("/hello/321")
|
||||
self.client.get("/hello/756")
|
||||
duration = max(round((default_timer() - start) * 1000), 0)
|
||||
metrics_list = self.memory_metrics_reader.get_metrics_data()
|
||||
metrics = self.get_sorted_metrics()
|
||||
number_data_point_seen = False
|
||||
histogram_data_point_seen = False
|
||||
self.assertTrue(len(metrics_list.resource_metrics) != 0)
|
||||
for resource_metric in metrics_list.resource_metrics:
|
||||
self.assertTrue(len(resource_metric.scope_metrics) != 0)
|
||||
for scope_metric in resource_metric.scope_metrics:
|
||||
self.assertTrue(len(scope_metric.metrics) != 0)
|
||||
for metric in scope_metric.metrics:
|
||||
self.assertIn(metric.name, _expected_metric_names_old)
|
||||
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)
|
||||
self.assertAlmostEqual(
|
||||
duration, point.sum, delta=10
|
||||
)
|
||||
histogram_data_point_seen = True
|
||||
if isinstance(point, NumberDataPoint):
|
||||
number_data_point_seen = True
|
||||
for attr in point.attributes:
|
||||
self.assertIn(
|
||||
attr,
|
||||
_recommended_metrics_attrs_old[metric.name],
|
||||
)
|
||||
self.assertTrue(len(metrics) != 0)
|
||||
for metric in metrics:
|
||||
self.assertIn(metric.name, _expected_metric_names_old)
|
||||
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)
|
||||
self.assertAlmostEqual(duration, point.sum, delta=10)
|
||||
histogram_data_point_seen = True
|
||||
if isinstance(point, NumberDataPoint):
|
||||
number_data_point_seen = True
|
||||
for attr in point.attributes:
|
||||
self.assertIn(
|
||||
attr,
|
||||
_recommended_metrics_attrs_old[metric.name],
|
||||
)
|
||||
self.assertTrue(number_data_point_seen and histogram_data_point_seen)
|
||||
|
||||
def test_flask_metrics_new_semconv(self):
|
||||
@@ -531,36 +525,30 @@ class TestProgrammatic(InstrumentationTest, WsgiTestBase):
|
||||
self.client.get("/hello/321")
|
||||
self.client.get("/hello/756")
|
||||
duration_s = max(default_timer() - start, 0)
|
||||
metrics_list = self.memory_metrics_reader.get_metrics_data()
|
||||
metrics = self.get_sorted_metrics()
|
||||
number_data_point_seen = False
|
||||
histogram_data_point_seen = False
|
||||
self.assertTrue(len(metrics_list.resource_metrics) != 0)
|
||||
for resource_metric in metrics_list.resource_metrics:
|
||||
self.assertTrue(len(resource_metric.scope_metrics) != 0)
|
||||
for scope_metric in resource_metric.scope_metrics:
|
||||
self.assertTrue(len(scope_metric.metrics) != 0)
|
||||
for metric in scope_metric.metrics:
|
||||
self.assertIn(metric.name, _expected_metric_names_new)
|
||||
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)
|
||||
self.assertAlmostEqual(
|
||||
duration_s, point.sum, places=1
|
||||
)
|
||||
self.assertEqual(
|
||||
point.explicit_bounds,
|
||||
HTTP_DURATION_HISTOGRAM_BUCKETS_NEW,
|
||||
)
|
||||
histogram_data_point_seen = True
|
||||
if isinstance(point, NumberDataPoint):
|
||||
number_data_point_seen = True
|
||||
for attr in point.attributes:
|
||||
self.assertIn(
|
||||
attr,
|
||||
_recommended_metrics_attrs_new[metric.name],
|
||||
)
|
||||
self.assertTrue(len(metrics) != 0)
|
||||
for metric in metrics:
|
||||
self.assertIn(metric.name, _expected_metric_names_new)
|
||||
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)
|
||||
self.assertAlmostEqual(duration_s, point.sum, places=1)
|
||||
self.assertEqual(
|
||||
point.explicit_bounds,
|
||||
HTTP_DURATION_HISTOGRAM_BUCKETS_NEW,
|
||||
)
|
||||
histogram_data_point_seen = True
|
||||
if isinstance(point, NumberDataPoint):
|
||||
number_data_point_seen = True
|
||||
for attr in point.attributes:
|
||||
self.assertIn(
|
||||
attr,
|
||||
_recommended_metrics_attrs_new[metric.name],
|
||||
)
|
||||
self.assertTrue(number_data_point_seen and histogram_data_point_seen)
|
||||
|
||||
def test_flask_metric_values(self):
|
||||
@@ -569,18 +557,14 @@ class TestProgrammatic(InstrumentationTest, WsgiTestBase):
|
||||
self.client.post("/hello/756")
|
||||
self.client.post("/hello/756")
|
||||
duration = max(round((default_timer() - start) * 1000), 0)
|
||||
metrics_list = self.memory_metrics_reader.get_metrics_data()
|
||||
for resource_metric in metrics_list.resource_metrics:
|
||||
for scope_metric in resource_metric.scope_metrics:
|
||||
for metric in scope_metric.metrics:
|
||||
for point in list(metric.data.data_points):
|
||||
if isinstance(point, HistogramDataPoint):
|
||||
self.assertEqual(point.count, 3)
|
||||
self.assertAlmostEqual(
|
||||
duration, point.sum, delta=10
|
||||
)
|
||||
if isinstance(point, NumberDataPoint):
|
||||
self.assertEqual(point.value, 0)
|
||||
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, 3)
|
||||
self.assertAlmostEqual(duration, point.sum, delta=10)
|
||||
if isinstance(point, NumberDataPoint):
|
||||
self.assertEqual(point.value, 0)
|
||||
|
||||
def _assert_basic_metric(
|
||||
self,
|
||||
@@ -589,28 +573,26 @@ class TestProgrammatic(InstrumentationTest, WsgiTestBase):
|
||||
expected_histogram_explicit_bounds=None,
|
||||
):
|
||||
# pylint: disable=too-many-nested-blocks
|
||||
metrics_list = self.memory_metrics_reader.get_metrics_data()
|
||||
for resource_metric in metrics_list.resource_metrics:
|
||||
for scope_metrics in resource_metric.scope_metrics:
|
||||
for metric in scope_metrics.metrics:
|
||||
for point in list(metric.data.data_points):
|
||||
if isinstance(point, HistogramDataPoint):
|
||||
self.assertDictEqual(
|
||||
expected_duration_attributes,
|
||||
dict(point.attributes),
|
||||
)
|
||||
if expected_histogram_explicit_bounds is not None:
|
||||
self.assertEqual(
|
||||
expected_histogram_explicit_bounds,
|
||||
point.explicit_bounds,
|
||||
)
|
||||
self.assertEqual(point.count, 1)
|
||||
elif isinstance(point, NumberDataPoint):
|
||||
self.assertDictEqual(
|
||||
expected_requests_count_attributes,
|
||||
dict(point.attributes),
|
||||
)
|
||||
self.assertEqual(point.value, 0)
|
||||
metrics = self.get_sorted_metrics()
|
||||
for metric in metrics:
|
||||
for point in list(metric.data.data_points):
|
||||
if isinstance(point, HistogramDataPoint):
|
||||
self.assertDictEqual(
|
||||
expected_duration_attributes,
|
||||
dict(point.attributes),
|
||||
)
|
||||
if expected_histogram_explicit_bounds is not None:
|
||||
self.assertEqual(
|
||||
expected_histogram_explicit_bounds,
|
||||
point.explicit_bounds,
|
||||
)
|
||||
self.assertEqual(point.count, 1)
|
||||
elif isinstance(point, NumberDataPoint):
|
||||
self.assertDictEqual(
|
||||
expected_requests_count_attributes,
|
||||
dict(point.attributes),
|
||||
)
|
||||
self.assertEqual(point.value, 0)
|
||||
|
||||
def test_basic_metric_success(self):
|
||||
self.client.get("/hello/756")
|
||||
|
||||
Reference in New Issue
Block a user