Skip to content

Commit ac64750

Browse files
authored
django: use test_base to fetch metrics for assertions (#4126)
1 parent c07ceae commit ac64750

File tree

1 file changed

+92
-114
lines changed

1 file changed

+92
-114
lines changed

instrumentation/opentelemetry-instrumentation-django/tests/test_middleware.py

Lines changed: 92 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -737,37 +737,31 @@ def test_wsgi_metrics(self):
737737
response = Client().get("/span_name/1234/")
738738
self.assertEqual(response.status_code, 200)
739739
duration = max(round((default_timer() - start) * 1000), 0)
740-
metrics_list = self.memory_metrics_reader.get_metrics_data()
740+
metrics = self.get_sorted_metrics()
741741
number_data_point_seen = False
742742
histrogram_data_point_seen = False
743743

744-
self.assertTrue(len(metrics_list.resource_metrics) != 0)
745-
for resource_metric in metrics_list.resource_metrics:
746-
self.assertTrue(len(resource_metric.scope_metrics) != 0)
747-
for scope_metric in resource_metric.scope_metrics:
748-
self.assertTrue(len(scope_metric.metrics) != 0)
749-
for metric in scope_metric.metrics:
750-
self.assertIn(metric.name, _expected_metric_names)
751-
data_points = list(metric.data.data_points)
752-
self.assertEqual(len(data_points), 1)
753-
for point in data_points:
754-
if isinstance(point, HistogramDataPoint):
755-
self.assertEqual(point.count, 3)
756-
histrogram_data_point_seen = True
757-
self.assertAlmostEqual(
758-
duration, point.sum, delta=100
759-
)
760-
self.assertDictEqual(
761-
expected_duration_attributes,
762-
dict(point.attributes),
763-
)
764-
if isinstance(point, NumberDataPoint):
765-
number_data_point_seen = True
766-
self.assertEqual(point.value, 0)
767-
self.assertDictEqual(
768-
expected_requests_count_attributes,
769-
dict(point.attributes),
770-
)
744+
self.assertTrue(len(metrics) != 0)
745+
for metric in metrics:
746+
self.assertIn(metric.name, _expected_metric_names)
747+
data_points = list(metric.data.data_points)
748+
self.assertEqual(len(data_points), 1)
749+
for point in data_points:
750+
if isinstance(point, HistogramDataPoint):
751+
self.assertEqual(point.count, 3)
752+
histrogram_data_point_seen = True
753+
self.assertAlmostEqual(duration, point.sum, delta=100)
754+
self.assertDictEqual(
755+
expected_duration_attributes,
756+
dict(point.attributes),
757+
)
758+
if isinstance(point, NumberDataPoint):
759+
number_data_point_seen = True
760+
self.assertEqual(point.value, 0)
761+
self.assertDictEqual(
762+
expected_requests_count_attributes,
763+
dict(point.attributes),
764+
)
771765
self.assertTrue(histrogram_data_point_seen and number_data_point_seen)
772766

773767
# pylint: disable=too-many-locals
@@ -792,41 +786,35 @@ def test_wsgi_metrics_new_semconv(self):
792786
response = Client().get("/span_name/1234/")
793787
self.assertEqual(response.status_code, 200)
794788
duration_s = default_timer() - start
795-
metrics_list = self.memory_metrics_reader.get_metrics_data()
789+
metrics = self.get_sorted_metrics()
796790
number_data_point_seen = False
797791
histrogram_data_point_seen = False
798792

799-
self.assertTrue(len(metrics_list.resource_metrics) != 0)
800-
for resource_metric in metrics_list.resource_metrics:
801-
self.assertTrue(len(resource_metric.scope_metrics) != 0)
802-
for scope_metric in resource_metric.scope_metrics:
803-
self.assertTrue(len(scope_metric.metrics) != 0)
804-
for metric in scope_metric.metrics:
805-
self.assertIn(metric.name, _expected_metric_names)
806-
data_points = list(metric.data.data_points)
807-
self.assertEqual(len(data_points), 1)
808-
for point in data_points:
809-
if isinstance(point, HistogramDataPoint):
810-
self.assertEqual(point.count, 3)
811-
histrogram_data_point_seen = True
812-
self.assertAlmostEqual(
813-
duration_s, point.sum, places=1
814-
)
815-
self.assertDictEqual(
816-
expected_duration_attributes,
817-
dict(point.attributes),
818-
)
819-
self.assertEqual(
820-
point.explicit_bounds,
821-
HTTP_DURATION_HISTOGRAM_BUCKETS_NEW,
822-
)
823-
if isinstance(point, NumberDataPoint):
824-
number_data_point_seen = True
825-
self.assertEqual(point.value, 0)
826-
self.assertDictEqual(
827-
expected_requests_count_attributes,
828-
dict(point.attributes),
829-
)
793+
self.assertTrue(len(metrics) != 0)
794+
for metric in metrics:
795+
self.assertIn(metric.name, _expected_metric_names)
796+
data_points = list(metric.data.data_points)
797+
self.assertEqual(len(data_points), 1)
798+
for point in data_points:
799+
if isinstance(point, HistogramDataPoint):
800+
self.assertEqual(point.count, 3)
801+
histrogram_data_point_seen = True
802+
self.assertAlmostEqual(duration_s, point.sum, places=1)
803+
self.assertDictEqual(
804+
expected_duration_attributes,
805+
dict(point.attributes),
806+
)
807+
self.assertEqual(
808+
point.explicit_bounds,
809+
HTTP_DURATION_HISTOGRAM_BUCKETS_NEW,
810+
)
811+
if isinstance(point, NumberDataPoint):
812+
number_data_point_seen = True
813+
self.assertEqual(point.value, 0)
814+
self.assertDictEqual(
815+
expected_requests_count_attributes,
816+
dict(point.attributes),
817+
)
830818
self.assertTrue(histrogram_data_point_seen and number_data_point_seen)
831819

832820
# pylint: disable=too-many-locals
@@ -867,69 +855,59 @@ def test_wsgi_metrics_both_semconv(self):
867855
self.assertEqual(response.status_code, 200)
868856
duration_s = max(default_timer() - start, 0)
869857
duration = max(round(duration_s * 1000), 0)
870-
metrics_list = self.memory_metrics_reader.get_metrics_data()
858+
metrics = self.get_sorted_metrics()
871859
number_data_point_seen = False
872860
histrogram_data_point_seen = False
873861

874-
self.assertTrue(len(metrics_list.resource_metrics) != 0)
875-
for resource_metric in metrics_list.resource_metrics:
876-
self.assertTrue(len(resource_metric.scope_metrics) != 0)
877-
for scope_metric in resource_metric.scope_metrics:
878-
self.assertTrue(len(scope_metric.metrics) != 0)
879-
for metric in scope_metric.metrics:
880-
self.assertIn(metric.name, _expected_metric_names)
881-
data_points = list(metric.data.data_points)
882-
self.assertEqual(len(data_points), 1)
883-
for point in data_points:
884-
if isinstance(point, HistogramDataPoint):
885-
self.assertEqual(point.count, 3)
886-
histrogram_data_point_seen = True
887-
if metric.name == "http.server.request.duration":
888-
self.assertAlmostEqual(
889-
duration_s, point.sum, places=1
890-
)
891-
self.assertDictEqual(
892-
expected_duration_attributes_new,
893-
dict(point.attributes),
894-
)
895-
self.assertEqual(
896-
point.explicit_bounds,
897-
HTTP_DURATION_HISTOGRAM_BUCKETS_NEW,
898-
)
899-
elif metric.name == "http.server.duration":
900-
self.assertAlmostEqual(
901-
duration, point.sum, delta=100
902-
)
903-
self.assertDictEqual(
904-
expected_duration_attributes_old,
905-
dict(point.attributes),
906-
)
907-
self.assertEqual(
908-
point.explicit_bounds,
909-
HTTP_DURATION_HISTOGRAM_BUCKETS_OLD,
910-
)
911-
if isinstance(point, NumberDataPoint):
912-
number_data_point_seen = True
913-
self.assertEqual(point.value, 0)
914-
self.assertDictEqual(
915-
expected_requests_count_attributes,
916-
dict(point.attributes),
917-
)
862+
self.assertTrue(len(metrics) != 0)
863+
for metric in metrics:
864+
self.assertIn(metric.name, _expected_metric_names)
865+
data_points = list(metric.data.data_points)
866+
self.assertEqual(len(data_points), 1)
867+
for point in data_points:
868+
if isinstance(point, HistogramDataPoint):
869+
self.assertEqual(point.count, 3)
870+
histrogram_data_point_seen = True
871+
if metric.name == "http.server.request.duration":
872+
self.assertAlmostEqual(duration_s, point.sum, places=1)
873+
self.assertDictEqual(
874+
expected_duration_attributes_new,
875+
dict(point.attributes),
876+
)
877+
self.assertEqual(
878+
point.explicit_bounds,
879+
HTTP_DURATION_HISTOGRAM_BUCKETS_NEW,
880+
)
881+
elif metric.name == "http.server.duration":
882+
self.assertAlmostEqual(duration, point.sum, delta=100)
883+
self.assertDictEqual(
884+
expected_duration_attributes_old,
885+
dict(point.attributes),
886+
)
887+
self.assertEqual(
888+
point.explicit_bounds,
889+
HTTP_DURATION_HISTOGRAM_BUCKETS_OLD,
890+
)
891+
if isinstance(point, NumberDataPoint):
892+
number_data_point_seen = True
893+
self.assertEqual(point.value, 0)
894+
self.assertDictEqual(
895+
expected_requests_count_attributes,
896+
dict(point.attributes),
897+
)
918898
self.assertTrue(histrogram_data_point_seen and number_data_point_seen)
919899

920900
def test_wsgi_metrics_unistrument(self):
921901
Client().get("/span_name/1234/")
922902
_django_instrumentor.uninstrument()
923903
Client().get("/span_name/1234/")
924-
metrics_list = self.memory_metrics_reader.get_metrics_data()
925-
for resource_metric in metrics_list.resource_metrics:
926-
for scope_metric in resource_metric.scope_metrics:
927-
for metric in scope_metric.metrics:
928-
for point in list(metric.data.data_points):
929-
if isinstance(point, HistogramDataPoint):
930-
self.assertEqual(1, point.count)
931-
if isinstance(point, NumberDataPoint):
932-
self.assertEqual(0, point.value)
904+
metrics = self.get_sorted_metrics()
905+
for metric in metrics:
906+
for point in list(metric.data.data_points):
907+
if isinstance(point, HistogramDataPoint):
908+
self.assertEqual(1, point.count)
909+
if isinstance(point, NumberDataPoint):
910+
self.assertEqual(0, point.value)
933911

934912

935913
class TestMiddlewareWithTracerProvider(WsgiTestBase):

0 commit comments

Comments
 (0)