@@ -31,48 +31,52 @@ type worker struct {
31
31
index int // worker index
32
32
}
33
33
34
+ // We use a 15-element bounds slice for histograms below, so there must be 16 buckets here.
35
+ // From metrics.proto:
36
+ // The number of elements in bucket_counts array must be by one greater than
37
+ // the number of elements in explicit_bounds array.
34
38
var histogramBucketSamples = []struct {
35
39
bucketCounts []uint64
36
40
sum int64
37
41
}{
38
42
{
39
- []uint64 {0 , 0 , 1 , 0 , 0 , 0 , 3 , 4 , 1 , 1 , 0 , 0 , 0 , 0 , 0 },
43
+ []uint64 {0 , 0 , 1 , 0 , 0 , 0 , 3 , 4 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 },
40
44
3940 ,
41
45
},
42
46
{
43
- []uint64 {0 , 0 , 0 , 0 , 0 , 0 , 2 , 4 , 4 , 0 , 0 , 0 , 0 , 0 , 0 },
47
+ []uint64 {0 , 0 , 0 , 0 , 0 , 0 , 2 , 4 , 4 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
44
48
4455 ,
45
49
},
46
50
{
47
- []uint64 {0 , 0 , 0 , 0 , 0 , 0 , 1 , 4 , 3 , 2 , 0 , 0 , 0 , 0 , 0 },
51
+ []uint64 {0 , 0 , 0 , 0 , 0 , 0 , 1 , 4 , 3 , 2 , 0 , 0 , 0 , 0 , 0 , 0 },
48
52
5337 ,
49
53
},
50
54
{
51
- []uint64 {0 , 0 , 1 , 0 , 1 , 0 , 2 , 2 , 1 , 3 , 0 , 0 , 0 , 0 , 0 },
55
+ []uint64 {0 , 0 , 1 , 0 , 1 , 0 , 2 , 2 , 1 , 3 , 0 , 0 , 0 , 0 , 0 , 0 },
52
56
4477 ,
53
57
},
54
58
{
55
- []uint64 {0 , 0 , 0 , 0 , 0 , 1 , 3 , 2 , 2 , 2 , 0 , 0 , 0 , 0 , 0 },
59
+ []uint64 {0 , 0 , 0 , 0 , 0 , 1 , 3 , 2 , 2 , 2 , 0 , 0 , 0 , 0 , 0 , 0 },
56
60
4670 ,
57
61
},
58
62
{
59
- []uint64 {0 , 0 , 0 , 1 , 1 , 0 , 1 , 1 , 1 , 5 , 0 , 0 , 0 , 0 , 0 },
63
+ []uint64 {0 , 0 , 0 , 1 , 1 , 0 , 1 , 1 , 1 , 5 , 0 , 0 , 0 , 0 , 0 , 0 },
60
64
5670 ,
61
65
},
62
66
{
63
- []uint64 {0 , 0 , 0 , 0 , 0 , 2 , 1 , 1 , 4 , 2 , 0 , 0 , 0 , 0 , 0 },
67
+ []uint64 {0 , 0 , 0 , 0 , 0 , 2 , 1 , 1 , 4 , 2 , 0 , 0 , 0 , 0 , 0 , 0 },
64
68
5091 ,
65
69
},
66
70
{
67
- []uint64 {0 , 0 , 2 , 0 , 0 , 0 , 2 , 4 , 1 , 1 , 0 , 0 , 0 , 0 , 0 },
71
+ []uint64 {0 , 0 , 2 , 0 , 0 , 0 , 2 , 4 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 },
68
72
3420 ,
69
73
},
70
74
{
71
- []uint64 {0 , 0 , 0 , 0 , 0 , 0 , 1 , 3 , 2 , 4 , 0 , 0 , 0 , 0 , 0 },
75
+ []uint64 {0 , 0 , 0 , 0 , 0 , 0 , 1 , 3 , 2 , 4 , 0 , 0 , 0 , 0 , 0 , 0 },
72
76
5917 ,
73
77
},
74
78
{
75
- []uint64 {0 , 0 , 1 , 0 , 1 , 0 , 0 , 4 , 4 , 0 , 0 , 0 , 0 , 0 , 0 },
79
+ []uint64 {0 , 0 , 1 , 0 , 1 , 0 , 0 , 4 , 4 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
76
80
3988 ,
77
81
},
78
82
}
@@ -117,9 +121,13 @@ func (w worker) simulateMetrics(res *resource.Resource, exporter sdkmetric.Expor
117
121
},
118
122
})
119
123
case MetricTypeHistogram :
124
+ var totalCount uint64
120
125
iteration := uint64 (i ) % 10
121
126
sum := histogramBucketSamples [iteration ].sum
122
127
bucketCounts := histogramBucketSamples [iteration ].bucketCounts
128
+ for _ , count := range bucketCounts {
129
+ totalCount += count
130
+ }
123
131
metrics = append (metrics , metricdata.Metrics {
124
132
Name : w .metricName ,
125
133
Data : metricdata.Histogram [int64 ]{
@@ -130,7 +138,7 @@ func (w worker) simulateMetrics(res *resource.Resource, exporter sdkmetric.Expor
130
138
Time : time .Now (),
131
139
Attributes : attribute .NewSet (signalAttrs ... ),
132
140
Exemplars : w .exemplars ,
133
- Count : iteration ,
141
+ Count : totalCount ,
134
142
Sum : sum ,
135
143
// Bounds from https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#explicit-bucket-histogram-aggregation
136
144
Bounds : []float64 {0 , 5 , 10 , 25 , 50 , 75 , 100 , 250 , 500 , 750 , 1000 , 2500 , 5000 , 7500 , 10000 },
0 commit comments