test(alerting): add falsification test

This commit is contained in:
bergquist 2016-08-18 14:13:39 +02:00
parent cbe7f8b697
commit def4632f08

View File

@ -8,42 +8,55 @@ import (
. "github.com/smartystreets/goconvey/convey" . "github.com/smartystreets/goconvey/convey"
) )
func test(json string, reducedValue float64) bool { func evalutorScenario(json string, reducedValue float64, datapoints ...float64) bool {
jsonModel, err := simplejson.NewJson([]byte(json)) jsonModel, err := simplejson.NewJson([]byte(json))
So(err, ShouldBeNil) So(err, ShouldBeNil)
evaluator, err := NewAlertEvaluator(jsonModel) evaluator, err := NewAlertEvaluator(jsonModel)
So(err, ShouldBeNil) So(err, ShouldBeNil)
return evaluator.Eval(&tsdb.TimeSeries{}, reducedValue) var timeserie [][2]float64
dummieTimestamp := float64(521452145)
for _, v := range datapoints {
timeserie = append(timeserie, [2]float64{v, dummieTimestamp})
}
tsdb := &tsdb.TimeSeries{
Name: "test time serie",
Points: timeserie,
}
return evaluator.Eval(tsdb, reducedValue)
} }
func TestEvalutors(t *testing.T) { func TestEvalutors(t *testing.T) {
Convey("greater then", t, func() { Convey("greater then", t, func() {
So(test(`{"type": "gt", "params": [1] }`, 3), ShouldBeTrue) So(evalutorScenario(`{"type": "gt", "params": [1] }`, 3), ShouldBeTrue)
So(test(`{"type": "gt", "params": [3] }`, 1), ShouldBeFalse) So(evalutorScenario(`{"type": "gt", "params": [3] }`, 1), ShouldBeFalse)
}) })
Convey("less then", t, func() { Convey("less then", t, func() {
So(test(`{"type": "lt", "params": [1] }`, 3), ShouldBeFalse) So(evalutorScenario(`{"type": "lt", "params": [1] }`, 3), ShouldBeFalse)
So(test(`{"type": "lt", "params": [3] }`, 1), ShouldBeTrue) So(evalutorScenario(`{"type": "lt", "params": [3] }`, 1), ShouldBeTrue)
}) })
Convey("within_range", t, func() { Convey("within_range", t, func() {
So(test(`{"type": "within_range", "params": [1, 100] }`, 3), ShouldBeTrue) So(evalutorScenario(`{"type": "within_range", "params": [1, 100] }`, 3), ShouldBeTrue)
So(test(`{"type": "within_range", "params": [1, 100] }`, 300), ShouldBeFalse) So(evalutorScenario(`{"type": "within_range", "params": [1, 100] }`, 300), ShouldBeFalse)
So(test(`{"type": "within_range", "params": [100, 1] }`, 3), ShouldBeTrue) So(evalutorScenario(`{"type": "within_range", "params": [100, 1] }`, 3), ShouldBeTrue)
So(test(`{"type": "within_range", "params": [100, 1] }`, 300), ShouldBeFalse) So(evalutorScenario(`{"type": "within_range", "params": [100, 1] }`, 300), ShouldBeFalse)
}) })
Convey("outside_range", t, func() { Convey("outside_range", t, func() {
So(test(`{"type": "outside_range", "params": [1, 100] }`, 1000), ShouldBeTrue) So(evalutorScenario(`{"type": "outside_range", "params": [1, 100] }`, 1000), ShouldBeTrue)
So(test(`{"type": "outside_range", "params": [1, 100] }`, 50), ShouldBeFalse) So(evalutorScenario(`{"type": "outside_range", "params": [1, 100] }`, 50), ShouldBeFalse)
So(test(`{"type": "outside_range", "params": [100, 1] }`, 1000), ShouldBeTrue) So(evalutorScenario(`{"type": "outside_range", "params": [100, 1] }`, 1000), ShouldBeTrue)
So(test(`{"type": "outside_range", "params": [100, 1] }`, 50), ShouldBeFalse) So(evalutorScenario(`{"type": "outside_range", "params": [100, 1] }`, 50), ShouldBeFalse)
}) })
Convey("no_value", t, func() { Convey("no_value", t, func() {
So(test(`{"type": "no_value", "params": [] }`, 1000), ShouldBeTrue) So(evalutorScenario(`{"type": "no_value", "params": [] }`, 1000), ShouldBeTrue)
So(evalutorScenario(`{"type": "no_value", "params": [] }`, 1000, 1, 2), ShouldBeFalse)
}) })
} }