@@ -12,8 +12,8 @@ import (
12
12
)
13
13
14
14
// NewTestHistogram creates new test histogram aggregation with specified config
15
- func NewTestHistogram (cfg []config ) telegraf.Aggregator {
16
- htm := & HistogramAggregator {Configs : cfg }
15
+ func NewTestHistogram (cfg []config , reset bool ) telegraf.Aggregator {
16
+ htm := & HistogramAggregator {Configs : cfg , ResetBuckets : reset }
17
17
htm .buckets = make (bucketsByMetrics )
18
18
htm .resetCache ()
19
19
@@ -69,11 +69,12 @@ func BenchmarkApply(b *testing.B) {
69
69
func TestHistogramWithPeriodAndOneField (t * testing.T ) {
70
70
var cfg []config
71
71
cfg = append (cfg , config {Metric : "first_metric_name" , Fields : []string {"a" }, Buckets : []float64 {0.0 , 10.0 , 20.0 , 30.0 , 40.0 }})
72
- histogram := NewTestHistogram (cfg )
72
+ histogram := NewTestHistogram (cfg , false )
73
73
74
74
acc := & testutil.Accumulator {}
75
75
76
76
histogram .Add (firstMetric1 )
77
+ histogram .Reset ()
77
78
histogram .Add (firstMetric2 )
78
79
histogram .Push (acc )
79
80
@@ -88,12 +89,36 @@ func TestHistogramWithPeriodAndOneField(t *testing.T) {
88
89
assertContainsTaggedField (t , acc , "first_metric_name" , map [string ]interface {}{"a_bucket" : int64 (2 )}, bucketInf )
89
90
}
90
91
92
+ // TestHistogramWithPeriodAndOneField tests metrics for one period and for one field
93
+ func TestHistogramWithReset (t * testing.T ) {
94
+ var cfg []config
95
+ cfg = append (cfg , config {Metric : "first_metric_name" , Fields : []string {"a" }, Buckets : []float64 {0.0 , 10.0 , 20.0 , 30.0 , 40.0 }})
96
+ histogram := NewTestHistogram (cfg , true )
97
+
98
+ acc := & testutil.Accumulator {}
99
+
100
+ histogram .Add (firstMetric1 )
101
+ histogram .Reset ()
102
+ histogram .Add (firstMetric2 )
103
+ histogram .Push (acc )
104
+
105
+ if len (acc .Metrics ) != 6 {
106
+ assert .Fail (t , "Incorrect number of metrics" )
107
+ }
108
+ assertContainsTaggedField (t , acc , "first_metric_name" , map [string ]interface {}{"a_bucket" : int64 (0 )}, "0" )
109
+ assertContainsTaggedField (t , acc , "first_metric_name" , map [string ]interface {}{"a_bucket" : int64 (0 )}, "10" )
110
+ assertContainsTaggedField (t , acc , "first_metric_name" , map [string ]interface {}{"a_bucket" : int64 (1 )}, "20" )
111
+ assertContainsTaggedField (t , acc , "first_metric_name" , map [string ]interface {}{"a_bucket" : int64 (1 )}, "30" )
112
+ assertContainsTaggedField (t , acc , "first_metric_name" , map [string ]interface {}{"a_bucket" : int64 (1 )}, "40" )
113
+ assertContainsTaggedField (t , acc , "first_metric_name" , map [string ]interface {}{"a_bucket" : int64 (1 )}, bucketInf )
114
+ }
115
+
91
116
// TestHistogramWithPeriodAndAllFields tests two metrics for one period and for all fields
92
117
func TestHistogramWithPeriodAndAllFields (t * testing.T ) {
93
118
var cfg []config
94
119
cfg = append (cfg , config {Metric : "first_metric_name" , Buckets : []float64 {0.0 , 15.5 , 20.0 , 30.0 , 40.0 }})
95
120
cfg = append (cfg , config {Metric : "second_metric_name" , Buckets : []float64 {0.0 , 4.0 , 10.0 , 23.0 , 30.0 }})
96
- histogram := NewTestHistogram (cfg )
121
+ histogram := NewTestHistogram (cfg , false )
97
122
98
123
acc := & testutil.Accumulator {}
99
124
@@ -127,7 +152,7 @@ func TestHistogramDifferentPeriodsAndAllFields(t *testing.T) {
127
152
128
153
var cfg []config
129
154
cfg = append (cfg , config {Metric : "first_metric_name" , Buckets : []float64 {0.0 , 10.0 , 20.0 , 30.0 , 40.0 }})
130
- histogram := NewTestHistogram (cfg )
155
+ histogram := NewTestHistogram (cfg , false )
131
156
132
157
acc := & testutil.Accumulator {}
133
158
histogram .Add (firstMetric1 )
@@ -166,7 +191,7 @@ func TestWrongBucketsOrder(t *testing.T) {
166
191
167
192
var cfg []config
168
193
cfg = append (cfg , config {Metric : "first_metric_name" , Buckets : []float64 {0.0 , 90.0 , 20.0 , 30.0 , 40.0 }})
169
- histogram := NewTestHistogram (cfg )
194
+ histogram := NewTestHistogram (cfg , false )
170
195
histogram .Add (firstMetric2 )
171
196
}
172
197
0 commit comments