@@ -10,7 +10,7 @@ import (
10
10
11
11
func TestHistogramValues (t * testing.T ) {
12
12
t .Run ("default_1ms_to_10m" , func (t * testing.T ) {
13
- checkHistogram (t , Default1ms10m ,
13
+ checkHistogram (t , Default1ms10m , 81 ,
14
14
`
15
15
[0s]
16
16
[1ms 1.189207ms 1.414213ms 1.681792ms]
@@ -36,7 +36,7 @@ func TestHistogramValues(t *testing.T) {
36
36
` )
37
37
})
38
38
t .Run ("high_1ms_to_24h" , func (t * testing.T ) {
39
- checkHistogram (t , High1ms24h ,
39
+ checkHistogram (t , High1ms24h , 113 ,
40
40
`
41
41
[0s]
42
42
[1ms 1.189207ms 1.414213ms 1.681792ms]
@@ -70,7 +70,7 @@ func TestHistogramValues(t *testing.T) {
70
70
` )
71
71
})
72
72
t .Run ("mid_1ms_24h" , func (t * testing.T ) {
73
- checkHistogram (t , Mid1ms24h , `
73
+ checkHistogram (t , Mid1ms24h , 57 , `
74
74
[0s]
75
75
[1ms 1.414213ms]
76
76
[2ms 2.828427ms]
@@ -112,7 +112,7 @@ func TestHistogramValues(t *testing.T) {
112
112
// if this turns out to be expensive in Prometheus / etc, it's easy
113
113
// enough to start the histogram at 8, and dual-emit a non-exponential
114
114
// histogram for lower values.
115
- checkHistogram (t , Mid1To32k , `
115
+ checkHistogram (t , Mid1To32k , 65 , `
116
116
[0]
117
117
[1 1 1 1]
118
118
[2 2 2 3]
@@ -133,7 +133,7 @@ func TestHistogramValues(t *testing.T) {
133
133
` )
134
134
})
135
135
t .Run ("low_cardinality_1ms_10s" , func (t * testing.T ) {
136
- checkHistogram (t , Low1ms10s , `
136
+ checkHistogram (t , Low1ms10s , 33 , `
137
137
[0s]
138
138
[1ms 1.414213ms]
139
139
[2ms 2.828427ms]
@@ -156,7 +156,7 @@ func TestHistogramValues(t *testing.T) {
156
156
}
157
157
158
158
// most histograms should pass this check, but fuzzy comparison is fine if needed for extreme cases.
159
- func checkHistogram [T any ](t * testing.T , h histogrammy [T ], expected string ) {
159
+ func checkHistogram [T any ](t * testing.T , h histogrammy [T ], length int , expected string ) {
160
160
var buf strings.Builder
161
161
h .print (func (s string , a ... any ) {
162
162
str := fmt .Sprintf (s , a ... )
@@ -167,6 +167,8 @@ func checkHistogram[T any](t *testing.T, h histogrammy[T], expected string) {
167
167
t .Error ("histogram definition changed, update the test if this is intended" )
168
168
}
169
169
170
+ assert .Equal (t , length , h .len (), "wrong number of buckets" )
171
+
170
172
buckets := h .buckets ()
171
173
assert .EqualValues (t , 0 , buckets [0 ], "first bucket should always be zero" )
172
174
for i := 1 ; i < len (buckets ); i += h .width () {
0 commit comments