|
15 | 15 | from unittest import TestCase
|
16 | 16 |
|
17 | 17 | from opentelemetry.sdk.metrics import MeterProvider
|
| 18 | +from opentelemetry.sdk.metrics._internal.instrument import Histogram |
18 | 19 | from opentelemetry.sdk.metrics.export import InMemoryMetricReader
|
19 | 20 | from opentelemetry.sdk.metrics.view import (
|
20 | 21 | ExplicitBucketHistogramAggregation,
|
@@ -133,3 +134,33 @@ def test_view_overrides_buckets(self):
|
133 | 134 | self.assertEqual(
|
134 | 135 | metric.data.data_points[0].explicit_bounds, (10.0, 100.0, 1000.0)
|
135 | 136 | )
|
| 137 | + |
| 138 | + def test_explicit_aggregation(self): |
| 139 | + reader = InMemoryMetricReader( |
| 140 | + preferred_aggregation={ |
| 141 | + Histogram: ExplicitBucketHistogramAggregation() |
| 142 | + } |
| 143 | + ) |
| 144 | + meter_provider = MeterProvider( |
| 145 | + metric_readers=[reader], |
| 146 | + ) |
| 147 | + meter = meter_provider.get_meter("testmeter") |
| 148 | + histogram = meter.create_histogram( |
| 149 | + "testhistogram", |
| 150 | + explicit_bucket_boundaries_advisory=[1.0, 2.0, 3.0], |
| 151 | + ) |
| 152 | + histogram.record(1, {"label": "value"}) |
| 153 | + histogram.record(2, {"label": "value"}) |
| 154 | + histogram.record(3, {"label": "value"}) |
| 155 | + |
| 156 | + metrics = reader.get_metrics_data() |
| 157 | + self.assertEqual(len(metrics.resource_metrics), 1) |
| 158 | + self.assertEqual(len(metrics.resource_metrics[0].scope_metrics), 1) |
| 159 | + self.assertEqual( |
| 160 | + len(metrics.resource_metrics[0].scope_metrics[0].metrics), 1 |
| 161 | + ) |
| 162 | + metric = metrics.resource_metrics[0].scope_metrics[0].metrics[0] |
| 163 | + self.assertEqual(metric.name, "testhistogram") |
| 164 | + self.assertEqual( |
| 165 | + metric.data.data_points[0].explicit_bounds, (1.0, 2.0, 3.0) |
| 166 | + ) |
0 commit comments