|
|
|
@ -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)
|
|
|
|
|
|
|
|
|
|