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:
Iman Shafiei
2023-06-21 13:56:38 -07:00
committed by GitHub
parent 32ae65ed55
commit 256d8ce12d
5 changed files with 55 additions and 5 deletions

View File

@ -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)