Skip to content

Commit 11d0a4d

Browse files
committed
Add histogram buckets test
1 parent ca3659f commit 11d0a4d

File tree

2 files changed

+62
-2
lines changed

2 files changed

+62
-2
lines changed

instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/conftest.py

Lines changed: 58 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,17 @@
1717
InMemoryLogExporter,
1818
SimpleLogRecordProcessor,
1919
)
20-
from opentelemetry.sdk.metrics import MeterProvider
20+
from opentelemetry.sdk.metrics import (
21+
Histogram,
22+
MeterProvider,
23+
)
2124
from opentelemetry.sdk.metrics.export import (
2225
InMemoryMetricReader,
2326
)
27+
from opentelemetry.sdk.metrics.view import (
28+
ExplicitBucketHistogramAggregation,
29+
View,
30+
)
2431
from opentelemetry.sdk.trace import TracerProvider
2532
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
2633
from opentelemetry.sdk.trace.export.in_memory_span_exporter import (
@@ -64,7 +71,56 @@ def fixture_event_logger_provider(log_exporter):
6471

6572
@pytest.fixture(scope="function", name="meter_provider")
6673
def fixture_meter_provider(metric_reader):
67-
meter_provider = MeterProvider(metric_readers=[metric_reader])
74+
TokenUsageHistogramView = View(
75+
instrument_type=Histogram,
76+
instrument_name="gen_ai.client.token.usage",
77+
aggregation=ExplicitBucketHistogramAggregation(
78+
boundaries=[
79+
1,
80+
4,
81+
16,
82+
64,
83+
256,
84+
1024,
85+
4096,
86+
16384,
87+
65536,
88+
262144,
89+
1048576,
90+
4194304,
91+
16777216,
92+
67108864,
93+
]
94+
),
95+
)
96+
97+
DurationHistogramView = View(
98+
instrument_type=Histogram,
99+
instrument_name="gen_ai.client.operation.duration",
100+
aggregation=ExplicitBucketHistogramAggregation(
101+
boundaries=[
102+
0.01,
103+
0.02,
104+
0.04,
105+
0.08,
106+
0.16,
107+
0.32,
108+
0.64,
109+
1.28,
110+
2.56,
111+
5.12,
112+
10.24,
113+
20.48,
114+
40.96,
115+
81.92,
116+
]
117+
),
118+
)
119+
120+
meter_provider = MeterProvider(
121+
metric_readers=[metric_reader],
122+
views=[TokenUsageHistogramView, DurationHistogramView],
123+
)
68124

69125
return meter_provider
70126

instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/test_chat_completions.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -927,6 +927,8 @@ def test_chat_completion_metrics(
927927
)
928928
assert input_token_usage is not None
929929
assert input_token_usage.sum == 12
930+
# assert against buckets [1, 4, 16, 64, 256, 1024, 4096, 16384, 65536, 262144, 1048576, 4194304, 16777216, 67108864]
931+
assert input_token_usage.bucket_counts[2] == 1
930932
assert_all_metric_attributes(input_token_usage)
931933

932934
output_token_usage = next(
@@ -940,4 +942,6 @@ def test_chat_completion_metrics(
940942
)
941943
assert output_token_usage is not None
942944
assert output_token_usage.sum == 5
945+
# assert against buckets [1, 4, 16, 64, 256, 1024, 4096, 16384, 65536, 262144, 1048576, 4194304, 16777216, 67108864]
946+
assert output_token_usage.bucket_counts[2] == 1
943947
assert_all_metric_attributes(output_token_usage)

0 commit comments

Comments
 (0)