evaluator_test.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package conditions
  2. import (
  3. "testing"
  4. "github.com/grafana/grafana/pkg/components/simplejson"
  5. . "github.com/smartystreets/goconvey/convey"
  6. )
  7. func evalutorScenario(json string, reducedValue float64, datapoints ...float64) bool {
  8. jsonModel, err := simplejson.NewJson([]byte(json))
  9. So(err, ShouldBeNil)
  10. evaluator, err := NewAlertEvaluator(jsonModel)
  11. So(err, ShouldBeNil)
  12. return evaluator.Eval(&reducedValue)
  13. }
  14. func TestEvalutors(t *testing.T) {
  15. Convey("greater then", t, func() {
  16. So(evalutorScenario(`{"type": "gt", "params": [1] }`, 3), ShouldBeTrue)
  17. So(evalutorScenario(`{"type": "gt", "params": [3] }`, 1), ShouldBeFalse)
  18. })
  19. Convey("less then", t, func() {
  20. So(evalutorScenario(`{"type": "lt", "params": [1] }`, 3), ShouldBeFalse)
  21. So(evalutorScenario(`{"type": "lt", "params": [3] }`, 1), ShouldBeTrue)
  22. })
  23. Convey("within_range", t, func() {
  24. So(evalutorScenario(`{"type": "within_range", "params": [1, 100] }`, 3), ShouldBeTrue)
  25. So(evalutorScenario(`{"type": "within_range", "params": [1, 100] }`, 300), ShouldBeFalse)
  26. So(evalutorScenario(`{"type": "within_range", "params": [100, 1] }`, 3), ShouldBeTrue)
  27. So(evalutorScenario(`{"type": "within_range", "params": [100, 1] }`, 300), ShouldBeFalse)
  28. })
  29. Convey("outside_range", t, func() {
  30. So(evalutorScenario(`{"type": "outside_range", "params": [1, 100] }`, 1000), ShouldBeTrue)
  31. So(evalutorScenario(`{"type": "outside_range", "params": [1, 100] }`, 50), ShouldBeFalse)
  32. So(evalutorScenario(`{"type": "outside_range", "params": [100, 1] }`, 1000), ShouldBeTrue)
  33. So(evalutorScenario(`{"type": "outside_range", "params": [100, 1] }`, 50), ShouldBeFalse)
  34. })
  35. Convey("no_data", t, func() {
  36. So(evalutorScenario(`{"type": "no_data", "params": [] }`, 50), ShouldBeFalse)
  37. jsonModel, err := simplejson.NewJson([]byte(`{"type": "no_data", "params": [] }`))
  38. So(err, ShouldBeNil)
  39. evaluator, err := NewAlertEvaluator(jsonModel)
  40. So(err, ShouldBeNil)
  41. So(evaluator.Eval(nil), ShouldBeTrue)
  42. })
  43. }