Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
235 changes: 104 additions & 131 deletions instrumentation/opentelemetry-instrumentation-falcon/tests/test_falcon.py
Original file line number Diff line number Diff line change
Expand Up @@ -487,26 +487,21 @@ def test_traced_not_recording(self):
self.assertFalse(mock_span.set_attribute.called)
self.assertFalse(mock_span.set_status.called)

metrics_list = self.memory_metrics_reader.get_metrics_data()
self.assertTrue(len(metrics_list.resource_metrics) != 0)

for resource_metric in metrics_list.resource_metrics:
for scope_metric in resource_metric.scope_metrics:
for metric in scope_metric.metrics:
data_points = list(metric.data.data_points)
self.assertEqual(len(data_points), 1)
for point in list(metric.data.data_points):
if isinstance(point, HistogramDataPoint):
self.assertEqual(point.count, 1)
if isinstance(point, NumberDataPoint):
self.assertEqual(point.value, 0)
for attr in point.attributes:
self.assertIn(
attr,
_recommended_metrics_attrs_old[
metric.name
],
)
metrics = self.get_sorted_metrics()
self.assertTrue(len(metrics) != 0)
for metric in metrics:
data_points = list(metric.data.data_points)
self.assertEqual(len(data_points), 1)
for point in list(metric.data.data_points):
if isinstance(point, HistogramDataPoint):
self.assertEqual(point.count, 1)
if isinstance(point, NumberDataPoint):
self.assertEqual(point.value, 0)
for attr in point.attributes:
self.assertIn(
attr,
_recommended_metrics_attrs_old[metric.name],
)

def test_uninstrument_after_instrument(self):
self.client().simulate_get(path="/hello")
Expand All @@ -524,28 +519,22 @@ def test_falcon_metrics(self):
self.client().simulate_get("/hello/756")
self.client().simulate_get("/hello/756")
self.client().simulate_get("/hello/756")
metrics_list = self.memory_metrics_reader.get_metrics_data()
metrics = self.get_sorted_metrics()
number_data_point_seen = False
histogram_data_point_seen = False
self.assertTrue(len(metrics_list.resource_metrics) != 0)
for resource_metric in metrics_list.resource_metrics:
self.assertTrue(len(resource_metric.scope_metrics) != 0)
for scope_metric in resource_metric.scope_metrics:
self.assertTrue(len(scope_metric.metrics) != 0)
for metric in scope_metric.metrics:
self.assertIn(metric.name, _expected_metric_names)
data_points = list(metric.data.data_points)
self.assertEqual(len(data_points), 1)
for point in data_points:
if isinstance(point, HistogramDataPoint):
self.assertEqual(point.count, 3)
histogram_data_point_seen = True
if isinstance(point, NumberDataPoint):
number_data_point_seen = True
for attr in point.attributes:
self.assertIn(
attr, _recommended_attrs[metric.name]
)
self.assertTrue(len(metrics) != 0)
for metric in metrics:
self.assertIn(metric.name, _expected_metric_names)
data_points = list(metric.data.data_points)
self.assertEqual(len(data_points), 1)
for point in data_points:
if isinstance(point, HistogramDataPoint):
self.assertEqual(point.count, 3)
histogram_data_point_seen = True
if isinstance(point, NumberDataPoint):
number_data_point_seen = True
for attr in point.attributes:
self.assertIn(attr, _recommended_attrs[metric.name])
self.assertTrue(number_data_point_seen and histogram_data_point_seen)

def test_falcon_metric_values_new_semconv(self):
Expand All @@ -556,31 +545,27 @@ def test_falcon_metric_values_new_semconv(self):
self.client().simulate_get("/hello/756")
duration = max(default_timer() - start, 0)

metrics_list = self.memory_metrics_reader.get_metrics_data()
for resource_metric in metrics_list.resource_metrics:
for scope_metric in resource_metric.scope_metrics:
for metric in scope_metric.metrics:
data_points = list(metric.data.data_points)
self.assertEqual(len(data_points), 1)
for point in data_points:
if isinstance(point, HistogramDataPoint):
self.assertEqual(point.count, 1)
histogram_data_point_seen = True
self.assertAlmostEqual(
duration, point.sum, delta=10
)
self.assertEqual(
point.explicit_bounds,
HTTP_DURATION_HISTOGRAM_BUCKETS_NEW,
)
if isinstance(point, NumberDataPoint):
self.assertEqual(point.value, 0)
number_data_point_seen = True
for attr in point.attributes:
self.assertIn(
attr,
_recommended_metrics_attrs_new[metric.name],
)
metrics = self.get_sorted_metrics()
for metric in metrics:
data_points = list(metric.data.data_points)
self.assertEqual(len(data_points), 1)
for point in data_points:
if isinstance(point, HistogramDataPoint):
self.assertEqual(point.count, 1)
histogram_data_point_seen = True
self.assertAlmostEqual(duration, point.sum, delta=10)
self.assertEqual(
point.explicit_bounds,
HTTP_DURATION_HISTOGRAM_BUCKETS_NEW,
)
if isinstance(point, NumberDataPoint):
self.assertEqual(point.value, 0)
number_data_point_seen = True
for attr in point.attributes:
self.assertIn(
attr,
_recommended_metrics_attrs_new[metric.name],
)

self.assertTrue(number_data_point_seen and histogram_data_point_seen)

Expand All @@ -592,51 +577,45 @@ def test_falcon_metric_values_both_semconv(self):
self.client().simulate_get("/hello/756")
duration_s = default_timer() - start

metrics_list = self.memory_metrics_reader.get_metrics_data()
metrics = self.get_sorted_metrics()

# pylint: disable=too-many-nested-blocks
for resource_metric in metrics_list.resource_metrics:
for scope_metric in resource_metric.scope_metrics:
for metric in scope_metric.metrics:
for metric in metrics:
if metric.unit == "ms":
self.assertEqual(metric.name, "http.server.duration")
elif metric.unit == "s":
self.assertEqual(metric.name, "http.server.request.duration")
else:
self.assertEqual(metric.name, "http.server.active_requests")
data_points = list(metric.data.data_points)
self.assertEqual(len(data_points), 1)
for point in data_points:
if isinstance(point, HistogramDataPoint):
self.assertEqual(point.count, 1)
if metric.unit == "ms":
self.assertEqual(metric.name, "http.server.duration")
self.assertAlmostEqual(
max(round(duration_s * 1000), 0),
point.sum,
delta=10,
)
elif metric.unit == "s":
self.assertEqual(
metric.name, "http.server.request.duration"
self.assertAlmostEqual(
max(duration_s, 0), point.sum, delta=10
)
else:
self.assertEqual(
metric.name, "http.server.active_requests"
point.explicit_bounds,
HTTP_DURATION_HISTOGRAM_BUCKETS_NEW,
)
data_points = list(metric.data.data_points)
self.assertEqual(len(data_points), 1)
for point in data_points:
if isinstance(point, HistogramDataPoint):
self.assertEqual(point.count, 1)
if metric.unit == "ms":
self.assertAlmostEqual(
max(round(duration_s * 1000), 0),
point.sum,
delta=10,
)
elif metric.unit == "s":
self.assertAlmostEqual(
max(duration_s, 0), point.sum, delta=10
)
self.assertEqual(
point.explicit_bounds,
HTTP_DURATION_HISTOGRAM_BUCKETS_NEW,
)

histogram_data_point_seen = True
if isinstance(point, NumberDataPoint):
self.assertEqual(point.value, 0)
number_data_point_seen = True
for attr in point.attributes:
self.assertIn(
attr,
_recommended_metrics_attrs_both[metric.name],
)

histogram_data_point_seen = True
if isinstance(point, NumberDataPoint):
self.assertEqual(point.value, 0)
number_data_point_seen = True
for attr in point.attributes:
self.assertIn(
attr,
_recommended_metrics_attrs_both[metric.name],
)
self.assertTrue(number_data_point_seen and histogram_data_point_seen)

def test_falcon_metric_values(self):
Expand All @@ -647,41 +626,35 @@ def test_falcon_metric_values(self):
self.client().simulate_get("/hello/756")
duration = max(round((default_timer() - start) * 1000), 0)

metrics_list = self.memory_metrics_reader.get_metrics_data()
for resource_metric in metrics_list.resource_metrics:
for scope_metric in resource_metric.scope_metrics:
for metric in scope_metric.metrics:
data_points = list(metric.data.data_points)
self.assertEqual(len(data_points), 1)
for point in list(metric.data.data_points):
if isinstance(point, HistogramDataPoint):
self.assertEqual(point.count, 1)
histogram_data_point_seen = True
self.assertAlmostEqual(
duration, point.sum, delta=10
)
if isinstance(point, NumberDataPoint):
self.assertEqual(point.value, 0)
number_data_point_seen = True
for attr in point.attributes:
self.assertIn(
attr,
_recommended_metrics_attrs_old[metric.name],
)
metrics = self.get_sorted_metrics()
for metric in metrics:
data_points = list(metric.data.data_points)
self.assertEqual(len(data_points), 1)
for point in list(metric.data.data_points):
if isinstance(point, HistogramDataPoint):
self.assertEqual(point.count, 1)
histogram_data_point_seen = True
self.assertAlmostEqual(duration, point.sum, delta=10)
if isinstance(point, NumberDataPoint):
self.assertEqual(point.value, 0)
number_data_point_seen = True
for attr in point.attributes:
self.assertIn(
attr,
_recommended_metrics_attrs_old[metric.name],
)

self.assertTrue(number_data_point_seen and histogram_data_point_seen)

def test_metric_uninstrument(self):
self.client().simulate_request(method="POST", path="/hello/756")
FalconInstrumentor().uninstrument()
self.client().simulate_request(method="POST", path="/hello/756")
metrics_list = self.memory_metrics_reader.get_metrics_data()
for resource_metric in metrics_list.resource_metrics:
for scope_metric in resource_metric.scope_metrics:
for metric in scope_metric.metrics:
for point in list(metric.data.data_points):
if isinstance(point, HistogramDataPoint):
self.assertEqual(point.count, 1)
metrics = self.get_sorted_metrics()
for metric in metrics:
for point in list(metric.data.data_points):
if isinstance(point, HistogramDataPoint):
self.assertEqual(point.count, 1)


class TestFalconInstrumentationWithTracerProvider(TestBase):
Expand Down