|
|
@ -27,14 +27,8 @@ import ( |
|
|
|
func TestAlertingRule(t *testing.T) { |
|
|
|
func TestAlertingRule(t *testing.T) { |
|
|
|
suite, err := promql.NewTest(t, ` |
|
|
|
suite, err := promql.NewTest(t, ` |
|
|
|
load 5m |
|
|
|
load 5m |
|
|
|
http_requests{job="api-server", instance="0", group="production"} 0+10x10 |
|
|
|
http_requests{job="app-server", instance="0", group="canary"} 75 85 95 105 105 95 85 |
|
|
|
http_requests{job="api-server", instance="1", group="production"} 0+20x10 |
|
|
|
http_requests{job="app-server", instance="1", group="canary"} 80 90 100 110 120 130 140 |
|
|
|
http_requests{job="api-server", instance="0", group="canary"} 0+30x10 |
|
|
|
|
|
|
|
http_requests{job="api-server", instance="1", group="canary"} 0+40x10 |
|
|
|
|
|
|
|
http_requests{job="app-server", instance="0", group="production"} 0+50x10 |
|
|
|
|
|
|
|
http_requests{job="app-server", instance="1", group="production"} 0+60x10 |
|
|
|
|
|
|
|
http_requests{job="app-server", instance="0", group="canary"} 0+70x10 |
|
|
|
|
|
|
|
http_requests{job="app-server", instance="1", group="canary"} 0+80x10 |
|
|
|
|
|
|
|
`) |
|
|
|
`) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
t.Fatal(err) |
|
|
|
t.Fatal(err) |
|
|
@ -79,17 +73,32 @@ func TestAlertingRule(t *testing.T) { |
|
|
|
}, { |
|
|
|
}, { |
|
|
|
time: 10 * time.Minute, |
|
|
|
time: 10 * time.Minute, |
|
|
|
result: []string{ |
|
|
|
result: []string{ |
|
|
|
|
|
|
|
`ALERTS{alertname="HTTPRequestRateLow", alertstate="firing", group="canary", instance="0", job="app-server", severity="critical"} => 1 @[%v]`, |
|
|
|
`ALERTS{alertname="HTTPRequestRateLow", alertstate="firing", group="canary", instance="1", job="app-server", severity="critical"} => 0 @[%v]`, |
|
|
|
`ALERTS{alertname="HTTPRequestRateLow", alertstate="firing", group="canary", instance="1", job="app-server", severity="critical"} => 0 @[%v]`, |
|
|
|
`ALERTS{alertname="HTTPRequestRateLow", alertstate="firing", group="canary", instance="0", job="app-server", severity="critical"} => 0 @[%v]`, |
|
|
|
|
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
time: 15 * time.Minute, |
|
|
|
time: 15 * time.Minute, |
|
|
|
result: nil, |
|
|
|
result: []string{ |
|
|
|
|
|
|
|
`ALERTS{alertname="HTTPRequestRateLow", alertstate="firing", group="canary", instance="0", job="app-server", severity="critical"} => 0 @[%v]`, |
|
|
|
|
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
time: 20 * time.Minute, |
|
|
|
time: 20 * time.Minute, |
|
|
|
result: nil, |
|
|
|
result: []string{}, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
time: 25 * time.Minute, |
|
|
|
|
|
|
|
result: []string{ |
|
|
|
|
|
|
|
`ALERTS{alertname="HTTPRequestRateLow", alertstate="pending", group="canary", instance="0", job="app-server", severity="critical"} => 1 @[%v]`, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
time: 30 * time.Minute, |
|
|
|
|
|
|
|
result: []string{ |
|
|
|
|
|
|
|
`ALERTS{alertname="HTTPRequestRateLow", alertstate="pending", group="canary", instance="0", job="app-server", severity="critical"} => 0 @[%v]`, |
|
|
|
|
|
|
|
`ALERTS{alertname="HTTPRequestRateLow", alertstate="firing", group="canary", instance="0", job="app-server", severity="critical"} => 1 @[%v]`, |
|
|
|
|
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|