mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
feat(alerting): implement more simple reducers
This commit is contained in:
parent
f2436fc7cd
commit
95c1a4a936
@ -19,6 +19,29 @@ func (s *SimpleReducer) Reduce(series *tsdb.TimeSeries) float64 {
|
|||||||
value += point[0]
|
value += point[0]
|
||||||
}
|
}
|
||||||
value = value / float64(len(series.Points))
|
value = value / float64(len(series.Points))
|
||||||
|
case "sum":
|
||||||
|
for _, point := range series.Points {
|
||||||
|
value += point[0]
|
||||||
|
}
|
||||||
|
case "min":
|
||||||
|
for i, point := range series.Points {
|
||||||
|
if i == 0 {
|
||||||
|
value = point[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
if value > point[0] {
|
||||||
|
value = point[0]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case "max":
|
||||||
|
for _, point := range series.Points {
|
||||||
|
if value < point[0] {
|
||||||
|
value = point[0]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case "mean":
|
||||||
|
meanPosition := int64(len(series.Points) / 2)
|
||||||
|
value = series.Points[meanPosition][0]
|
||||||
}
|
}
|
||||||
|
|
||||||
return value
|
return value
|
||||||
|
@ -8,11 +8,32 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestSimpleReducer(t *testing.T) {
|
func TestSimpleReducer(t *testing.T) {
|
||||||
Convey("Test simple reducer", t, func() {
|
Convey("Test simple reducer by calculating", t, func() {
|
||||||
Convey("can calculate avg of time serie", func() {
|
Convey("avg", func() {
|
||||||
result := testReducer("avg", 1, 2, 3)
|
result := testReducer("avg", 1, 2, 3)
|
||||||
So(result, ShouldEqual, float64(2))
|
So(result, ShouldEqual, float64(2))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Convey("sum", func() {
|
||||||
|
result := testReducer("sum", 1, 2, 3)
|
||||||
|
So(result, ShouldEqual, float64(6))
|
||||||
|
})
|
||||||
|
|
||||||
|
Convey("min", func() {
|
||||||
|
result := testReducer("min", 3, 2, 1)
|
||||||
|
So(result, ShouldEqual, float64(1))
|
||||||
|
})
|
||||||
|
|
||||||
|
Convey("max", func() {
|
||||||
|
result := testReducer("max", 1, 2, 3)
|
||||||
|
So(result, ShouldEqual, float64(3))
|
||||||
|
})
|
||||||
|
|
||||||
|
Convey("mean odd numbers", func() {
|
||||||
|
result := testReducer("mean", 1, 2, 3000)
|
||||||
|
So(result, ShouldEqual, float64(2))
|
||||||
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user