Skip to content

Commit 004226e

Browse files
committed
Add integration tests
1 parent fe93c75 commit 004226e

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# Copyright The OpenTelemetry Authors
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
from unittest import TestCase
16+
17+
from opentelemetry.sdk.metrics import MeterProvider
18+
from opentelemetry.sdk.metrics.export import InMemoryMetricReader
19+
from opentelemetry.sdk.metrics.view import (
20+
ExplicitBucketHistogramAggregation,
21+
View,
22+
)
23+
24+
25+
class TestHistogramAdvisory(TestCase):
26+
def test_default(self):
27+
reader = InMemoryMetricReader()
28+
meter_provider = MeterProvider(
29+
metric_readers=[reader],
30+
)
31+
meter = meter_provider.get_meter("testmeter")
32+
histogram = meter.create_histogram(
33+
"testhistogram", advisory={"explicit_bucket_boundaries": [1, 2, 3]}
34+
)
35+
histogram.record(1, {"label": "value"})
36+
histogram.record(2, {"label": "value"})
37+
histogram.record(3, {"label": "value"})
38+
39+
metrics = reader.get_metrics_data()
40+
self.assertEqual(len(metrics.resource_metrics), 1)
41+
self.assertEqual(len(metrics.resource_metrics[0].scope_metrics), 1)
42+
self.assertEqual(
43+
len(metrics.resource_metrics[0].scope_metrics[0].metrics), 1
44+
)
45+
metric = metrics.resource_metrics[0].scope_metrics[0].metrics[0]
46+
self.assertEqual(metric.name, "testhistogram")
47+
self.assertEqual(metric.data.data_points[0].explicit_bounds, (1, 2, 3))
48+
49+
def test_view_default_aggregation(self):
50+
reader = InMemoryMetricReader()
51+
view = View(instrument_name="testhistogram")
52+
meter_provider = MeterProvider(
53+
metric_readers=[reader],
54+
views=[view],
55+
)
56+
meter = meter_provider.get_meter("testmeter")
57+
histogram = meter.create_histogram(
58+
"testhistogram", advisory={"explicit_bucket_boundaries": [1, 2, 3]}
59+
)
60+
histogram.record(1, {"label": "value"})
61+
histogram.record(2, {"label": "value"})
62+
histogram.record(3, {"label": "value"})
63+
64+
metrics = reader.get_metrics_data()
65+
self.assertEqual(len(metrics.resource_metrics), 1)
66+
self.assertEqual(len(metrics.resource_metrics[0].scope_metrics), 1)
67+
self.assertEqual(
68+
len(metrics.resource_metrics[0].scope_metrics[0].metrics), 1
69+
)
70+
metric = metrics.resource_metrics[0].scope_metrics[0].metrics[0]
71+
self.assertEqual(metric.name, "testhistogram")
72+
self.assertEqual(metric.data.data_points[0].explicit_bounds, (1, 2, 3))
73+
74+
def test_view_overrides_buckets(self):
75+
reader = InMemoryMetricReader()
76+
view = View(
77+
instrument_name="testhistogram",
78+
aggregation=ExplicitBucketHistogramAggregation(
79+
boundaries=[10, 100, 1000]
80+
),
81+
)
82+
meter_provider = MeterProvider(
83+
metric_readers=[reader],
84+
views=[view],
85+
)
86+
meter = meter_provider.get_meter("testmeter")
87+
histogram = meter.create_histogram(
88+
"testhistogram", advisory={"explicit_bucket_boundaries": [1, 2, 3]}
89+
)
90+
histogram.record(1, {"label": "value"})
91+
histogram.record(2, {"label": "value"})
92+
histogram.record(3, {"label": "value"})
93+
94+
metrics = reader.get_metrics_data()
95+
self.assertEqual(len(metrics.resource_metrics), 1)
96+
self.assertEqual(len(metrics.resource_metrics[0].scope_metrics), 1)
97+
self.assertEqual(
98+
len(metrics.resource_metrics[0].scope_metrics[0].metrics), 1
99+
)
100+
metric = metrics.resource_metrics[0].scope_metrics[0].metrics[0]
101+
self.assertEqual(metric.name, "testhistogram")
102+
self.assertEqual(
103+
metric.data.data_points[0].explicit_bounds, (10, 100, 1000)
104+
)

0 commit comments

Comments
 (0)