Skip to content

Commit 269d946

Browse files
authored
wsgi: use test_base to fetch metrics for assertions (#4133)
1 parent 98782d2 commit 269d946

File tree

1 file changed

+64
-80
lines changed

1 file changed

+64
-80
lines changed

instrumentation/opentelemetry-instrumentation-wsgi/tests/test_wsgi_middleware.py

Lines changed: 64 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -427,30 +427,26 @@ def test_wsgi_metrics(self):
427427
self.assertRaises(ValueError, app, self.environ, self.start_response)
428428
self.assertRaises(ValueError, app, self.environ, self.start_response)
429429
self.assertRaises(ValueError, app, self.environ, self.start_response)
430-
metrics_list = self.memory_metrics_reader.get_metrics_data()
431430
number_data_point_seen = False
432431
histogram_data_point_seen = False
433432

434-
self.assertTrue(len(metrics_list.resource_metrics) != 0)
435-
for resource_metric in metrics_list.resource_metrics:
436-
self.assertTrue(len(resource_metric.scope_metrics) != 0)
437-
for scope_metric in resource_metric.scope_metrics:
438-
self.assertTrue(len(scope_metric.metrics) != 0)
439-
for metric in scope_metric.metrics:
440-
self.assertIn(metric.name, _expected_metric_names_old)
441-
data_points = list(metric.data.data_points)
442-
self.assertEqual(len(data_points), 1)
443-
for point in data_points:
444-
if isinstance(point, HistogramDataPoint):
445-
self.assertEqual(point.count, 3)
446-
histogram_data_point_seen = True
447-
if isinstance(point, NumberDataPoint):
448-
number_data_point_seen = True
449-
for attr in point.attributes:
450-
self.assertIn(
451-
attr,
452-
_recommended_metrics_attrs_old[metric.name],
453-
)
433+
metrics = self.get_sorted_metrics()
434+
self.assertTrue(len(metrics) > 0)
435+
for metric in metrics:
436+
self.assertIn(metric.name, _expected_metric_names_old)
437+
data_points = list(metric.data.data_points)
438+
self.assertEqual(len(data_points), 1)
439+
for point in data_points:
440+
if isinstance(point, HistogramDataPoint):
441+
self.assertEqual(point.count, 3)
442+
histogram_data_point_seen = True
443+
if isinstance(point, NumberDataPoint):
444+
number_data_point_seen = True
445+
for attr in point.attributes:
446+
self.assertIn(
447+
attr,
448+
_recommended_metrics_attrs_old[metric.name],
449+
)
454450
self.assertTrue(number_data_point_seen and histogram_data_point_seen)
455451

456452
def test_wsgi_metrics_exemplars_expected_old_semconv(self): # type: ignore[func-returns-value]
@@ -495,79 +491,67 @@ def test_wsgi_metrics_new_semconv(self):
495491
self.assertRaises(ValueError, app, self.environ, self.start_response)
496492
self.assertRaises(ValueError, app, self.environ, self.start_response)
497493
self.assertRaises(ValueError, app, self.environ, self.start_response)
498-
metrics_list = self.memory_metrics_reader.get_metrics_data()
499494
number_data_point_seen = False
500495
histogram_data_point_seen = False
501496

502-
self.assertTrue(len(metrics_list.resource_metrics) != 0)
503-
for resource_metric in metrics_list.resource_metrics:
504-
self.assertTrue(len(resource_metric.scope_metrics) != 0)
505-
for scope_metric in resource_metric.scope_metrics:
506-
self.assertTrue(len(scope_metric.metrics) != 0)
507-
for metric in scope_metric.metrics:
508-
self.assertIn(metric.name, _expected_metric_names_new)
509-
data_points = list(metric.data.data_points)
510-
self.assertEqual(len(data_points), 1)
511-
for point in data_points:
512-
if isinstance(point, HistogramDataPoint):
513-
self.assertEqual(point.count, 3)
514-
if metric.name == "http.server.request.duration":
515-
self.assertEqual(
516-
point.explicit_bounds,
517-
HTTP_DURATION_HISTOGRAM_BUCKETS_NEW,
518-
)
519-
histogram_data_point_seen = True
520-
if isinstance(point, NumberDataPoint):
521-
number_data_point_seen = True
522-
for attr in point.attributes:
523-
self.assertIn(
524-
attr,
525-
_recommended_metrics_attrs_new[metric.name],
526-
)
497+
metrics = self.get_sorted_metrics()
498+
self.assertTrue(len(metrics) != 0)
499+
for metric in metrics:
500+
self.assertIn(metric.name, _expected_metric_names_new)
501+
data_points = list(metric.data.data_points)
502+
self.assertEqual(len(data_points), 1)
503+
for point in data_points:
504+
if isinstance(point, HistogramDataPoint):
505+
self.assertEqual(point.count, 3)
506+
if metric.name == "http.server.request.duration":
507+
self.assertEqual(
508+
point.explicit_bounds,
509+
HTTP_DURATION_HISTOGRAM_BUCKETS_NEW,
510+
)
511+
histogram_data_point_seen = True
512+
if isinstance(point, NumberDataPoint):
513+
number_data_point_seen = True
514+
for attr in point.attributes:
515+
self.assertIn(
516+
attr,
517+
_recommended_metrics_attrs_new[metric.name],
518+
)
527519
self.assertTrue(number_data_point_seen and histogram_data_point_seen)
528520

529521
def test_wsgi_metrics_both_semconv(self):
530522
# pylint: disable=too-many-nested-blocks
531523
app = otel_wsgi.OpenTelemetryMiddleware(error_wsgi_unhandled)
532524
self.assertRaises(ValueError, app, self.environ, self.start_response)
533-
metrics_list = self.memory_metrics_reader.get_metrics_data()
534525
number_data_point_seen = False
535526
histogram_data_point_seen = False
536527

537-
self.assertTrue(len(metrics_list.resource_metrics) != 0)
538-
for resource_metric in metrics_list.resource_metrics:
539-
self.assertTrue(len(resource_metric.scope_metrics) != 0)
540-
for scope_metric in resource_metric.scope_metrics:
541-
self.assertTrue(len(scope_metric.metrics) != 0)
542-
for metric in scope_metric.metrics:
543-
if metric.unit == "ms":
544-
self.assertEqual(metric.name, "http.server.duration")
545-
elif metric.unit == "s":
546-
self.assertEqual(
547-
metric.name, "http.server.request.duration"
548-
)
549-
else:
528+
metrics = self.get_sorted_metrics()
529+
self.assertTrue(len(metrics) != 0)
530+
for metric in metrics:
531+
if metric.unit == "ms":
532+
self.assertEqual(metric.name, "http.server.duration")
533+
elif metric.unit == "s":
534+
self.assertEqual(metric.name, "http.server.request.duration")
535+
else:
536+
self.assertEqual(metric.name, "http.server.active_requests")
537+
data_points = list(metric.data.data_points)
538+
self.assertEqual(len(data_points), 1)
539+
for point in data_points:
540+
if isinstance(point, HistogramDataPoint):
541+
self.assertEqual(point.count, 1)
542+
if metric.name == "http.server.request.duration":
550543
self.assertEqual(
551-
metric.name, "http.server.active_requests"
544+
point.explicit_bounds,
545+
HTTP_DURATION_HISTOGRAM_BUCKETS_NEW,
552546
)
553-
data_points = list(metric.data.data_points)
554-
self.assertEqual(len(data_points), 1)
555-
for point in data_points:
556-
if isinstance(point, HistogramDataPoint):
557-
self.assertEqual(point.count, 1)
558-
if metric.name == "http.server.request.duration":
559-
self.assertEqual(
560-
point.explicit_bounds,
561-
HTTP_DURATION_HISTOGRAM_BUCKETS_NEW,
562-
)
563-
histogram_data_point_seen = True
564-
if isinstance(point, NumberDataPoint):
565-
number_data_point_seen = True
566-
for attr in point.attributes:
567-
self.assertIn(
568-
attr,
569-
_recommended_metrics_attrs_both[metric.name],
570-
)
547+
histogram_data_point_seen = True
548+
if isinstance(point, NumberDataPoint):
549+
number_data_point_seen = True
550+
for attr in point.attributes:
551+
self.assertIn(
552+
attr,
553+
_recommended_metrics_attrs_both[metric.name],
554+
)
571555
self.assertTrue(number_data_point_seen and histogram_data_point_seen)
572556

573557
def test_nonstandard_http_method(self):

0 commit comments

Comments
 (0)