Pārlūkot izejas kodu

alerting: refactor tests

bergquist 7 gadi atpakaļ
vecāks
revīzija
238139fad6
1 mainītis faili ar 78 papildinājumiem un 76 dzēšanām
  1. 78 76
      pkg/services/alerting/eval_context_test.go

+ 78 - 76
pkg/services/alerting/eval_context_test.go

@@ -9,91 +9,93 @@ import (
 	. "github.com/smartystreets/goconvey/convey"
 )
 
+func TestStateIsUpdatedWhenNeeded(t *testing.T) {
+	ctx := NewEvalContext(context.TODO(), &Rule{Conditions: []Condition{&conditionStub{firing: true}}})
+
+	t.Run("ok -> alerting", func(t *testing.T) {
+		ctx.PrevAlertState = models.AlertStateOK
+		ctx.Rule.State = models.AlertStateAlerting
+
+		if !ctx.ShouldUpdateAlertState() {
+			t.Fatalf("expected should updated to be true")
+		}
+	})
+
+	t.Run("ok -> ok", func(t *testing.T) {
+		ctx.PrevAlertState = models.AlertStateOK
+		ctx.Rule.State = models.AlertStateOK
+
+		if ctx.ShouldUpdateAlertState() {
+			t.Fatalf("expected should updated to be false")
+		}
+	})
+}
+
 func TestAlertingEvalContext(t *testing.T) {
-	Convey("Eval context", t, func() {
+	Convey("Should compute and replace properly new rule state", t, func() {
 		ctx := NewEvalContext(context.TODO(), &Rule{Conditions: []Condition{&conditionStub{firing: true}}})
+		dummieError := fmt.Errorf("dummie error")
 
-		Convey("Should update alert state when needed", func() {
+		Convey("ok -> alerting", func() {
+			ctx.PrevAlertState = models.AlertStateOK
+			ctx.Firing = true
 
-			Convey("ok -> alerting", func() {
-				ctx.PrevAlertState = models.AlertStateOK
-				ctx.Rule.State = models.AlertStateAlerting
+			ctx.Rule.State = ctx.GetNewState()
+			So(ctx.Rule.State, ShouldEqual, models.AlertStateAlerting)
+		})
 
-				So(ctx.ShouldUpdateAlertState(), ShouldBeTrue)
-			})
+		Convey("ok -> error(alerting)", func() {
+			ctx.PrevAlertState = models.AlertStateOK
+			ctx.Error = dummieError
+			ctx.Rule.ExecutionErrorState = models.ExecutionErrorSetAlerting
+
+			ctx.Rule.State = ctx.GetNewState()
+			So(ctx.Rule.State, ShouldEqual, models.AlertStateAlerting)
+		})
 
-			Convey("ok -> ok", func() {
-				ctx.PrevAlertState = models.AlertStateOK
-				ctx.Rule.State = models.AlertStateOK
+		Convey("ok -> error(keep_last)", func() {
+			ctx.PrevAlertState = models.AlertStateOK
+			ctx.Error = dummieError
+			ctx.Rule.ExecutionErrorState = models.ExecutionErrorKeepState
 
-				So(ctx.ShouldUpdateAlertState(), ShouldBeFalse)
-			})
+			ctx.Rule.State = ctx.GetNewState()
+			So(ctx.Rule.State, ShouldEqual, models.AlertStateOK)
 		})
 
-		Convey("Should compute and replace properly new rule state", func() {
-			dummieError := fmt.Errorf("dummie error")
-
-			Convey("ok -> alerting", func() {
-				ctx.PrevAlertState = models.AlertStateOK
-				ctx.Firing = true
-
-				ctx.Rule.State = ctx.GetNewState()
-				So(ctx.Rule.State, ShouldEqual, models.AlertStateAlerting)
-			})
-
-			Convey("ok -> error(alerting)", func() {
-				ctx.PrevAlertState = models.AlertStateOK
-				ctx.Error = dummieError
-				ctx.Rule.ExecutionErrorState = models.ExecutionErrorSetAlerting
-
-				ctx.Rule.State = ctx.GetNewState()
-				So(ctx.Rule.State, ShouldEqual, models.AlertStateAlerting)
-			})
-
-			Convey("ok -> error(keep_last)", func() {
-				ctx.PrevAlertState = models.AlertStateOK
-				ctx.Error = dummieError
-				ctx.Rule.ExecutionErrorState = models.ExecutionErrorKeepState
-
-				ctx.Rule.State = ctx.GetNewState()
-				So(ctx.Rule.State, ShouldEqual, models.AlertStateOK)
-			})
-
-			Convey("pending -> error(keep_last)", func() {
-				ctx.PrevAlertState = models.AlertStatePending
-				ctx.Error = dummieError
-				ctx.Rule.ExecutionErrorState = models.ExecutionErrorKeepState
-
-				ctx.Rule.State = ctx.GetNewState()
-				So(ctx.Rule.State, ShouldEqual, models.AlertStatePending)
-			})
-
-			Convey("ok -> no_data(alerting)", func() {
-				ctx.PrevAlertState = models.AlertStateOK
-				ctx.Rule.NoDataState = models.NoDataSetAlerting
-				ctx.NoDataFound = true
-
-				ctx.Rule.State = ctx.GetNewState()
-				So(ctx.Rule.State, ShouldEqual, models.AlertStateAlerting)
-			})
-
-			Convey("ok -> no_data(keep_last)", func() {
-				ctx.PrevAlertState = models.AlertStateOK
-				ctx.Rule.NoDataState = models.NoDataKeepState
-				ctx.NoDataFound = true
-
-				ctx.Rule.State = ctx.GetNewState()
-				So(ctx.Rule.State, ShouldEqual, models.AlertStateOK)
-			})
-
-			Convey("pending -> no_data(keep_last)", func() {
-				ctx.PrevAlertState = models.AlertStatePending
-				ctx.Rule.NoDataState = models.NoDataKeepState
-				ctx.NoDataFound = true
-
-				ctx.Rule.State = ctx.GetNewState()
-				So(ctx.Rule.State, ShouldEqual, models.AlertStatePending)
-			})
+		Convey("pending -> error(keep_last)", func() {
+			ctx.PrevAlertState = models.AlertStatePending
+			ctx.Error = dummieError
+			ctx.Rule.ExecutionErrorState = models.ExecutionErrorKeepState
+
+			ctx.Rule.State = ctx.GetNewState()
+			So(ctx.Rule.State, ShouldEqual, models.AlertStatePending)
+		})
+
+		Convey("ok -> no_data(alerting)", func() {
+			ctx.PrevAlertState = models.AlertStateOK
+			ctx.Rule.NoDataState = models.NoDataSetAlerting
+			ctx.NoDataFound = true
+
+			ctx.Rule.State = ctx.GetNewState()
+			So(ctx.Rule.State, ShouldEqual, models.AlertStateAlerting)
+		})
+
+		Convey("ok -> no_data(keep_last)", func() {
+			ctx.PrevAlertState = models.AlertStateOK
+			ctx.Rule.NoDataState = models.NoDataKeepState
+			ctx.NoDataFound = true
+
+			ctx.Rule.State = ctx.GetNewState()
+			So(ctx.Rule.State, ShouldEqual, models.AlertStateOK)
+		})
+
+		Convey("pending -> no_data(keep_last)", func() {
+			ctx.PrevAlertState = models.AlertStatePending
+			ctx.Rule.NoDataState = models.NoDataKeepState
+			ctx.NoDataFound = true
+
+			ctx.Rule.State = ctx.GetNewState()
+			So(ctx.Rule.State, ShouldEqual, models.AlertStatePending)
 		})
 	})
 }