|
|
@@ -8,6 +8,7 @@ import (
|
|
|
"github.com/grafana/grafana/pkg/bus"
|
|
|
"github.com/grafana/grafana/pkg/components/simplejson"
|
|
|
m "github.com/grafana/grafana/pkg/models"
|
|
|
+ "github.com/grafana/grafana/pkg/services/sqlstore"
|
|
|
. "github.com/smartystreets/goconvey/convey"
|
|
|
)
|
|
|
|
|
|
@@ -197,74 +198,86 @@ func TestAlertRuleExtraction(t *testing.T) {
|
|
|
})
|
|
|
})
|
|
|
|
|
|
- Convey("Parse and validate dashboard containing influxdb alert", func() {
|
|
|
- json, err := ioutil.ReadFile("./testdata/influxdb-alert.json")
|
|
|
+ Convey("Alert notifications are in DB", func() {
|
|
|
+ sqlstore.InitTestDB(t)
|
|
|
+ err := sqlstore.CreateOrg(&m.CreateOrgCommand{Name: "Main Org."})
|
|
|
So(err, ShouldBeNil)
|
|
|
-
|
|
|
- dashJson, err := simplejson.NewJson(json)
|
|
|
+ firstNotification := m.CreateAlertNotificationCommand{Uid: "notifier1", OrgId: 1, Name: "1"}
|
|
|
+ err = sqlstore.CreateAlertNotificationCommand(&firstNotification)
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+ secondNotification := m.CreateAlertNotificationCommand{Uid: "notifier2", OrgId: 1, Name: "2"}
|
|
|
+ err = sqlstore.CreateAlertNotificationCommand(&secondNotification)
|
|
|
So(err, ShouldBeNil)
|
|
|
- dash := m.NewDashboardFromJson(dashJson)
|
|
|
- extractor := NewDashAlertExtractor(dash, 1, nil)
|
|
|
|
|
|
- alerts, err := extractor.GetAlerts()
|
|
|
+ Convey("Parse and validate dashboard containing influxdb alert", func() {
|
|
|
+ json, err := ioutil.ReadFile("./testdata/influxdb-alert.json")
|
|
|
+ So(err, ShouldBeNil)
|
|
|
|
|
|
- Convey("Get rules without error", func() {
|
|
|
+ dashJson, err := simplejson.NewJson(json)
|
|
|
So(err, ShouldBeNil)
|
|
|
- })
|
|
|
+ dash := m.NewDashboardFromJson(dashJson)
|
|
|
+ extractor := NewDashAlertExtractor(dash, 1, nil)
|
|
|
|
|
|
- Convey("should be able to read interval", func() {
|
|
|
- So(len(alerts), ShouldEqual, 1)
|
|
|
+ alerts, err := extractor.GetAlerts()
|
|
|
|
|
|
- for _, alert := range alerts {
|
|
|
- So(alert.DashboardId, ShouldEqual, 4)
|
|
|
+ Convey("Get rules without error", func() {
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+ })
|
|
|
|
|
|
- conditions := alert.Settings.Get("conditions").MustArray()
|
|
|
- cond := simplejson.NewFromAny(conditions[0])
|
|
|
+ Convey("should be able to read interval", func() {
|
|
|
+ So(len(alerts), ShouldEqual, 1)
|
|
|
|
|
|
- So(cond.Get("query").Get("model").Get("interval").MustString(), ShouldEqual, ">10s")
|
|
|
- }
|
|
|
+ for _, alert := range alerts {
|
|
|
+ So(alert.DashboardId, ShouldEqual, 4)
|
|
|
+
|
|
|
+ conditions := alert.Settings.Get("conditions").MustArray()
|
|
|
+ cond := simplejson.NewFromAny(conditions[0])
|
|
|
+
|
|
|
+ So(cond.Get("query").Get("model").Get("interval").MustString(), ShouldEqual, ">10s")
|
|
|
+ }
|
|
|
+ })
|
|
|
})
|
|
|
- })
|
|
|
|
|
|
- Convey("Should be able to extract collapsed panels", func() {
|
|
|
- json, err := ioutil.ReadFile("./testdata/collapsed-panels.json")
|
|
|
- So(err, ShouldBeNil)
|
|
|
+ Convey("Should be able to extract collapsed panels", func() {
|
|
|
+ json, err := ioutil.ReadFile("./testdata/collapsed-panels.json")
|
|
|
+ So(err, ShouldBeNil)
|
|
|
|
|
|
- dashJson, err := simplejson.NewJson(json)
|
|
|
- So(err, ShouldBeNil)
|
|
|
+ dashJson, err := simplejson.NewJson(json)
|
|
|
+ So(err, ShouldBeNil)
|
|
|
|
|
|
- dash := m.NewDashboardFromJson(dashJson)
|
|
|
- extractor := NewDashAlertExtractor(dash, 1, nil)
|
|
|
+ dash := m.NewDashboardFromJson(dashJson)
|
|
|
+ extractor := NewDashAlertExtractor(dash, 1, nil)
|
|
|
|
|
|
- alerts, err := extractor.GetAlerts()
|
|
|
+ alerts, err := extractor.GetAlerts()
|
|
|
|
|
|
- Convey("Get rules without error", func() {
|
|
|
- So(err, ShouldBeNil)
|
|
|
- })
|
|
|
+ Convey("Get rules without error", func() {
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+ })
|
|
|
|
|
|
- Convey("should be able to extract collapsed alerts", func() {
|
|
|
- So(len(alerts), ShouldEqual, 4)
|
|
|
+ Convey("should be able to extract collapsed alerts", func() {
|
|
|
+ So(len(alerts), ShouldEqual, 4)
|
|
|
+ })
|
|
|
})
|
|
|
- })
|
|
|
|
|
|
- Convey("Parse and validate dashboard without id and containing an alert", func() {
|
|
|
- json, err := ioutil.ReadFile("./testdata/dash-without-id.json")
|
|
|
- So(err, ShouldBeNil)
|
|
|
+ Convey("Parse and validate dashboard without id and containing an alert", func() {
|
|
|
+ json, err := ioutil.ReadFile("./testdata/dash-without-id.json")
|
|
|
+ So(err, ShouldBeNil)
|
|
|
|
|
|
- dashJSON, err := simplejson.NewJson(json)
|
|
|
- So(err, ShouldBeNil)
|
|
|
- dash := m.NewDashboardFromJson(dashJSON)
|
|
|
- extractor := NewDashAlertExtractor(dash, 1, nil)
|
|
|
+ dashJSON, err := simplejson.NewJson(json)
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+ dash := m.NewDashboardFromJson(dashJSON)
|
|
|
+ extractor := NewDashAlertExtractor(dash, 1, nil)
|
|
|
|
|
|
- err = extractor.ValidateAlerts()
|
|
|
+ err = extractor.ValidateAlerts()
|
|
|
|
|
|
- Convey("Should validate without error", func() {
|
|
|
- So(err, ShouldBeNil)
|
|
|
- })
|
|
|
+ Convey("Should validate without error", func() {
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+ })
|
|
|
|
|
|
- Convey("Should fail on save", func() {
|
|
|
- _, err := extractor.GetAlerts()
|
|
|
- So(err.Error(), ShouldEqual, "Alert validation error: Panel id is not correct, alertName=Influxdb, panelId=1")
|
|
|
+ Convey("Should fail on save", func() {
|
|
|
+ _, err := extractor.GetAlerts()
|
|
|
+ So(err.Error(), ShouldEqual, "Alert validation error: Panel id is not correct, alertName=Influxdb, panelId=1")
|
|
|
+ })
|
|
|
})
|
|
|
})
|
|
|
})
|