Skip to content

Commit f391a9d

Browse files
committed
update tests
1 parent 8138988 commit f391a9d

File tree

1 file changed

+59
-45
lines changed

1 file changed

+59
-45
lines changed

instrumentation/opentelemetry-instrumentation-asgi/tests/test_asgi_middleware.py

Lines changed: 59 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
from timeit import default_timer
2222
from unittest import mock
2323

24+
import pytest
25+
2426
import opentelemetry.instrumentation.asgi as otel_asgi
2527
from opentelemetry import trace as trace_api
2628
from opentelemetry.instrumentation.propagators import (
@@ -752,52 +754,64 @@ def test_asgi_metrics(self):
752754
)
753755
self.assertTrue(number_data_point_seen and histogram_data_point_seen)
754756

755-
def test_basic_metric_success(self):
756-
app = otel_asgi.OpenTelemetryMiddleware(simple_asgi)
757-
self.seed_app(app)
758-
start = default_timer()
759-
self.send_default_request()
760-
duration = max(round((default_timer() - start) * 1000), 0)
761-
expected_duration_attributes = {
762-
"http.method": "GET",
763-
"http.host": "127.0.0.1",
764-
"http.scheme": "http",
765-
"http.flavor": "1.0",
766-
"net.host.port": 80,
767-
"http.status_code": 200,
768-
}
769-
expected_requests_count_attributes = {
770-
"http.method": "GET",
771-
"http.host": "127.0.0.1",
772-
"http.scheme": "http",
773-
"http.flavor": "1.0",
774-
}
775-
metrics_list = self.memory_metrics_reader.get_metrics_data()
776-
# pylint: disable=too-many-nested-blocks
777-
for resource_metric in metrics_list.resource_metrics:
778-
for scope_metrics in resource_metric.scope_metrics:
779-
for metric in scope_metrics.metrics:
780-
for point in list(metric.data.data_points):
781-
if isinstance(point, HistogramDataPoint):
782-
self.assertDictEqual(
783-
expected_duration_attributes,
784-
dict(point.attributes),
785-
)
786-
self.assertEqual(point.count, 1)
787-
if metric.name == "http.server.duration":
788-
self.assertAlmostEqual(
789-
duration, point.sum, delta=5
757+
@pytest.mark.parametrize(
758+
"span_recording",
759+
[True, False],
760+
)
761+
def test_basic_metric_success(self, span_recording):
762+
mock_tracer = mock.Mock()
763+
mock_span = mock.Mock()
764+
mock_span.is_recording.return_value = span_recording
765+
mock_tracer.start_as_current_span.return_value = mock_span
766+
mock_tracer.start_as_current_span.return_value.__enter__ = mock_span
767+
mock_tracer.start_as_current_span.return_value.__exit__ = mock_span
768+
with mock.patch("opentelemetry.trace.get_tracer") as tracer:
769+
tracer.return_value = mock_tracer
770+
app = otel_asgi.OpenTelemetryMiddleware(simple_asgi)
771+
self.seed_app(app)
772+
start = default_timer()
773+
self.send_default_request()
774+
duration = max(round((default_timer() - start) * 1000), 0)
775+
expected_duration_attributes = {
776+
"http.method": "GET",
777+
"http.host": "127.0.0.1",
778+
"http.scheme": "http",
779+
"http.flavor": "1.0",
780+
"net.host.port": 80,
781+
"http.status_code": 200,
782+
}
783+
expected_requests_count_attributes = {
784+
"http.method": "GET",
785+
"http.host": "127.0.0.1",
786+
"http.scheme": "http",
787+
"http.flavor": "1.0",
788+
}
789+
metrics_list = self.memory_metrics_reader.get_metrics_data()
790+
# pylint: disable=too-many-nested-blocks
791+
for resource_metric in metrics_list.resource_metrics:
792+
for scope_metrics in resource_metric.scope_metrics:
793+
for metric in scope_metrics.metrics:
794+
for point in list(metric.data.data_points):
795+
if isinstance(point, HistogramDataPoint):
796+
self.assertDictEqual(
797+
expected_duration_attributes,
798+
dict(point.attributes),
790799
)
791-
elif metric.name == "http.server.response.size":
792-
self.assertEqual(1024, point.sum)
793-
elif metric.name == "http.server.request.size":
794-
self.assertEqual(128, point.sum)
795-
elif isinstance(point, NumberDataPoint):
796-
self.assertDictEqual(
797-
expected_requests_count_attributes,
798-
dict(point.attributes),
799-
)
800-
self.assertEqual(point.value, 0)
800+
self.assertEqual(point.count, 1)
801+
if metric.name == "http.server.duration":
802+
self.assertAlmostEqual(
803+
duration, point.sum, delta=5
804+
)
805+
elif metric.name == "http.server.response.size":
806+
self.assertEqual(1024, point.sum)
807+
elif metric.name == "http.server.request.size":
808+
self.assertEqual(128, point.sum)
809+
elif isinstance(point, NumberDataPoint):
810+
self.assertDictEqual(
811+
expected_requests_count_attributes,
812+
dict(point.attributes),
813+
)
814+
self.assertEqual(point.value, 0)
801815

802816
def test_metric_target_attribute(self):
803817
expected_target = "/api/user/{id}"

0 commit comments

Comments
 (0)