| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package conditions
- import (
- "testing"
- . "github.com/smartystreets/goconvey/convey"
- "github.com/grafana/grafana/pkg/components/null"
- "github.com/grafana/grafana/pkg/components/simplejson"
- )
- 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(null.FloatFrom(reducedValue))
- }
- func TestEvalutors(t *testing.T) {
- Convey("greater then", t, func() {
- So(evalutorScenario(`{"type": "gt", "params": [1] }`, 3), ShouldBeTrue)
- So(evalutorScenario(`{"type": "gt", "params": [3] }`, 1), ShouldBeFalse)
- })
- Convey("less then", t, func() {
- So(evalutorScenario(`{"type": "lt", "params": [1] }`, 3), ShouldBeFalse)
- So(evalutorScenario(`{"type": "lt", "params": [3] }`, 1), ShouldBeTrue)
- })
- Convey("within_range", t, func() {
- 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(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() {
- Convey("should be false if serie have values", func() {
- So(evalutorScenario(`{"type": "no_value", "params": [] }`, 50), ShouldBeFalse)
- })
- Convey("should be true when the serie have no value", func() {
- jsonModel, err := simplejson.NewJson([]byte(`{"type": "no_value", "params": [] }`))
- So(err, ShouldBeNil)
- evaluator, err := NewAlertEvaluator(jsonModel)
- So(err, ShouldBeNil)
- So(evaluator.Eval(null.FloatFromPtr(nil)), ShouldBeTrue)
- })
- })
- }
|