|
|
|
@ -326,8 +326,14 @@ func TestForStateAddSamples(t *testing.T) {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestForStateRestore(t *testing.T) { |
|
|
|
|
// sortAlerts sorts `[]*Alert` w.r.t. the Labels.
|
|
|
|
|
func sortAlerts(items []*Alert) { |
|
|
|
|
sort.Slice(items, func(i, j int) bool { |
|
|
|
|
return labels.Compare(items[i].Labels, items[j].Labels) <= 0 |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestForStateRestore(t *testing.T) { |
|
|
|
|
suite, err := promql.NewTest(t, ` |
|
|
|
|
load 5m |
|
|
|
|
http_requests{job="app-server", instance="0", group="canary", severity="overwrite-me"} 75 85 50 0 0 25 0 0 40 0 120 |
|
|
|
@ -364,7 +370,6 @@ func TestForStateRestore(t *testing.T) {
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
group := NewGroup("default", "", time.Second, []Rule{rule}, true, opts) |
|
|
|
|
|
|
|
|
|
groups := make(map[string]*Group) |
|
|
|
|
groups["default;"] = group |
|
|
|
|
|
|
|
|
@ -385,7 +390,6 @@ func TestForStateRestore(t *testing.T) {
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
// Prometheus goes down here. We create new rules and groups.
|
|
|
|
|
|
|
|
|
|
type testInput struct { |
|
|
|
|
restoreDuration time.Duration |
|
|
|
|
alerts []*Alert |
|
|
|
@ -399,9 +403,9 @@ func TestForStateRestore(t *testing.T) {
|
|
|
|
|
tests := []testInput{ |
|
|
|
|
{ |
|
|
|
|
// Normal restore (alerts were not firing).
|
|
|
|
|
restoreDuration: 10 * time.Minute, |
|
|
|
|
restoreDuration: 15 * time.Minute, |
|
|
|
|
alerts: rule.ActiveAlerts(), |
|
|
|
|
downDuration: 5 * time.Minute, |
|
|
|
|
downDuration: 10 * time.Minute, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
// Testing Outage Tolerance.
|
|
|
|
@ -449,7 +453,6 @@ func TestForStateRestore(t *testing.T) {
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
// Checking if we have restored it correctly.
|
|
|
|
|
|
|
|
|
|
if tst.noRestore { |
|
|
|
|
testutil.Equals(t, tst.num, len(got)) |
|
|
|
|
for _, e := range got { |
|
|
|
@ -463,6 +466,8 @@ func TestForStateRestore(t *testing.T) {
|
|
|
|
|
} else { |
|
|
|
|
exp := tst.alerts |
|
|
|
|
testutil.Equals(t, len(exp), len(got)) |
|
|
|
|
sortAlerts(exp) |
|
|
|
|
sortAlerts(got) |
|
|
|
|
for i, e := range exp { |
|
|
|
|
testutil.Equals(t, e.Labels, got[i].Labels) |
|
|
|
|
|
|
|
|
|