소스 검색

test(alerting): add falsification test

bergquist 9 년 전
부모
커밋
def4632f08
1개의 변경된 파일28개의 추가작업 그리고 15개의 파일을 삭제
  1. 28 15
      pkg/services/alerting/conditions/evaluator_test.go

+ 28 - 15
pkg/services/alerting/conditions/evaluator_test.go

@@ -8,42 +8,55 @@ import (
 	. "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))
 	So(err, ShouldBeNil)
 
 	evaluator, err := NewAlertEvaluator(jsonModel)
 	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) {
 	Convey("greater then", t, func() {
-		So(test(`{"type": "gt", "params": [1] }`, 3), ShouldBeTrue)
-		So(test(`{"type": "gt", "params": [3] }`, 1), ShouldBeFalse)
+		So(evalutorScenario(`{"type": "gt", "params": [1] }`, 3), ShouldBeTrue)
+		So(evalutorScenario(`{"type": "gt", "params": [3] }`, 1), ShouldBeFalse)
 	})
 
 	Convey("less then", t, func() {
-		So(test(`{"type": "lt", "params": [1] }`, 3), ShouldBeFalse)
-		So(test(`{"type": "lt", "params": [3] }`, 1), ShouldBeTrue)
+		So(evalutorScenario(`{"type": "lt", "params": [1] }`, 3), ShouldBeFalse)
+		So(evalutorScenario(`{"type": "lt", "params": [3] }`, 1), ShouldBeTrue)
 	})
 
 	Convey("within_range", t, func() {
-		So(test(`{"type": "within_range", "params": [1, 100] }`, 3), ShouldBeTrue)
-		So(test(`{"type": "within_range", "params": [1, 100] }`, 300), ShouldBeFalse)
-		So(test(`{"type": "within_range", "params": [100, 1] }`, 3), ShouldBeTrue)
-		So(test(`{"type": "within_range", "params": [100, 1] }`, 300), ShouldBeFalse)
+		So(evalutorScenario(`{"type": "within_range", "params": [1, 100] }`, 3), ShouldBeTrue)
+		So(evalutorScenario(`{"type": "within_range", "params": [1, 100] }`, 300), ShouldBeFalse)
+		So(evalutorScenario(`{"type": "within_range", "params": [100, 1] }`, 3), ShouldBeTrue)
+		So(evalutorScenario(`{"type": "within_range", "params": [100, 1] }`, 300), ShouldBeFalse)
 	})
 
 	Convey("outside_range", t, func() {
-		So(test(`{"type": "outside_range", "params": [1, 100] }`, 1000), ShouldBeTrue)
-		So(test(`{"type": "outside_range", "params": [1, 100] }`, 50), ShouldBeFalse)
-		So(test(`{"type": "outside_range", "params": [100, 1] }`, 1000), ShouldBeTrue)
-		So(test(`{"type": "outside_range", "params": [100, 1] }`, 50), ShouldBeFalse)
+		So(evalutorScenario(`{"type": "outside_range", "params": [1, 100] }`, 1000), ShouldBeTrue)
+		So(evalutorScenario(`{"type": "outside_range", "params": [1, 100] }`, 50), ShouldBeFalse)
+		So(evalutorScenario(`{"type": "outside_range", "params": [100, 1] }`, 1000), ShouldBeTrue)
+		So(evalutorScenario(`{"type": "outside_range", "params": [100, 1] }`, 50), ShouldBeFalse)
 	})
 
 	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)
 	})
 }