alert_rule_parser_test.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package sqlstore
  2. import (
  3. "testing"
  4. "github.com/grafana/grafana/pkg/components/simplejson"
  5. m "github.com/grafana/grafana/pkg/models"
  6. "github.com/grafana/grafana/pkg/services/alerting"
  7. . "github.com/smartystreets/goconvey/convey"
  8. )
  9. func TestAlertRuleModelParsing(t *testing.T) {
  10. Convey("Parsing alertRule from expression", t, func() {
  11. alertRuleDAO := &m.Alert{}
  12. json, _ := simplejson.NewJson([]byte(`
  13. {
  14. "frequency": 10,
  15. "warning": {
  16. "op": ">",
  17. "level": 10
  18. },
  19. "critical": {
  20. "op": ">",
  21. "level": 20
  22. },
  23. "query": {
  24. "refId": "A",
  25. "from": "5m",
  26. "to": "now",
  27. "datasourceId": 1,
  28. "query": "aliasByNode(statsd.fakesite.counters.session_start.*.count, 4)"
  29. },
  30. "transform": {
  31. "type": "aggregation",
  32. "method": "avg"
  33. }
  34. }`))
  35. alertRuleDAO.Name = "Test"
  36. alertRuleDAO.Expression = json
  37. rule, _ := alerting.ConvetAlertModelToAlertRule(alertRuleDAO)
  38. Convey("Confirm that all properties are set", func() {
  39. So(rule.Query.Query, ShouldEqual, "aliasByNode(statsd.fakesite.counters.session_start.*.count, 4)")
  40. So(rule.Query.From, ShouldEqual, "5m")
  41. So(rule.Query.To, ShouldEqual, "now")
  42. So(rule.Query.DatasourceId, ShouldEqual, 1)
  43. So(rule.Warning.Level, ShouldEqual, 10)
  44. So(rule.Warning.Operator, ShouldEqual, ">")
  45. So(rule.Critical.Level, ShouldEqual, 20)
  46. So(rule.Critical.Operator, ShouldEqual, ">")
  47. })
  48. })
  49. }