grafana/pkg/services/sqlstore/alert_rule_parser_test.go

56 lines
1.5 KiB
Go
Raw Normal View History

package sqlstore
import (
"testing"
"github.com/grafana/grafana/pkg/components/simplejson"
m "github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/services/alerting"
. "github.com/smartystreets/goconvey/convey"
)
func TestAlertRuleModelParsing(t *testing.T) {
Convey("Parsing alertRule from expression", t, func() {
alertRuleDAO := &m.Alert{}
json, _ := simplejson.NewJson([]byte(`
{
2016-06-10 06:13:23 -05:00
"frequency": 10,
"warning": {
"op": ">",
"level": 10
},
"critical": {
2016-06-10 06:13:23 -05:00
"op": ">",
"level": 20
},
2016-06-10 06:13:23 -05:00
"query": {
2016-06-10 06:41:01 -05:00
"refId": "A",
"from": "5m",
2016-06-10 06:13:23 -05:00
"to": "now",
"datasourceId": 1,
"query": "aliasByNode(statsd.fakesite.counters.session_start.*.count, 4)"
},
2016-06-10 06:13:23 -05:00
"transform": {
2016-06-10 06:41:01 -05:00
"type": "aggregation",
2016-06-10 06:13:23 -05:00
"method": "avg"
2016-06-10 06:41:01 -05:00
}
}`))
alertRuleDAO.Name = "Test"
alertRuleDAO.Expression = json
2016-06-10 06:41:01 -05:00
rule, _ := alerting.ConvetAlertModelToAlertRule(alertRuleDAO)
Convey("Confirm that all properties are set", func() {
2016-06-10 06:13:23 -05:00
So(rule.Query.Query, ShouldEqual, "aliasByNode(statsd.fakesite.counters.session_start.*.count, 4)")
So(rule.Query.From, ShouldEqual, "5m")
So(rule.Query.To, ShouldEqual, "now")
So(rule.Query.DatasourceId, ShouldEqual, 1)
So(rule.Warning.Level, ShouldEqual, 10)
So(rule.Warning.Operator, ShouldEqual, ">")
So(rule.Critical.Level, ShouldEqual, 20)
So(rule.Critical.Operator, ShouldEqual, ">")
})
})
}