| 
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