mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-08-05 22:09:56 +08:00
Add http.server.request.size for ASGI metric implementation (#1867)
* Update changelog file. * Update changelog file. * Add new request.size metric for ASGI middleware. * Clean-up. * Refactor try except section. --------- Co-authored-by: Shalev Roda <65566801+shalevr@users.noreply.github.com>
This commit is contained in:
@ -45,6 +45,7 @@ _expected_metric_names = [
|
||||
"http.server.active_requests",
|
||||
"http.server.duration",
|
||||
"http.server.response.size",
|
||||
"http.server.request.size",
|
||||
]
|
||||
_recommended_attrs = {
|
||||
"http.server.active_requests": _active_requests_count_attrs,
|
||||
@ -53,6 +54,10 @@ _recommended_attrs = {
|
||||
*_duration_attrs,
|
||||
SpanAttributes.HTTP_TARGET,
|
||||
},
|
||||
"http.server.request.size": {
|
||||
*_duration_attrs,
|
||||
SpanAttributes.HTTP_TARGET,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@ -251,8 +256,13 @@ class TestFastAPIManualInstrumentation(TestBase):
|
||||
|
||||
def test_basic_post_request_metric_success(self):
|
||||
start = default_timer()
|
||||
self._client.post("/foobar")
|
||||
response = self._client.post(
|
||||
"/foobar",
|
||||
json={"foo": "bar"},
|
||||
)
|
||||
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
|
||||
@ -260,7 +270,12 @@ class TestFastAPIManualInstrumentation(TestBase):
|
||||
for point in list(metric.data.data_points):
|
||||
if isinstance(point, HistogramDataPoint):
|
||||
self.assertEqual(point.count, 1)
|
||||
self.assertAlmostEqual(duration, point.sum, delta=30)
|
||||
if metric.name == "http.server.duration":
|
||||
self.assertAlmostEqual(duration, point.sum, delta=30)
|
||||
elif metric.name == "http.server.response.size":
|
||||
self.assertEqual(response_size, point.sum)
|
||||
elif metric.name == "http.server.request.size":
|
||||
self.assertEqual(request_size, point.sum)
|
||||
if isinstance(point, NumberDataPoint):
|
||||
self.assertEqual(point.value, 0)
|
||||
|
||||
|
Reference in New Issue
Block a user