fix flaky main.go test and simplify a bit
@@ -75,25 +75,20 @@ func TestStartupInterrupt(t *testing.T) {
}()
var startedOk bool
- var stoppedOk bool
var stoppedErr error
Loop:
for x := 0; x < 10; x++ {
-
// error=nil means prometheus has started so can send the interrupt signal and wait for the grace shutdown.
if _, err := http.Get("http://localhost:9090/graph"); err == nil {
startedOk = true
prom.Process.Signal(os.Interrupt)
select {
case stoppedErr = <-done:
- stoppedOk = true
break Loop
case <-time.After(10 * time.Second):
-
}
break Loop
-
}
time.Sleep(500 * time.Millisecond)
}
@@ -102,10 +97,10 @@ Loop:
t.Errorf("prometheus didn't start in the specified timeout")
return
}
- if err := prom.Process.Kill(); err == nil && !stoppedOk {
+ if err := prom.Process.Kill(); err == nil {
t.Errorf("prometheus didn't shutdown gracefully after sending the Interrupt signal")
- } else if stoppedErr != nil {
- t.Errorf("prometheus exited with an error:%v", stoppedErr)
+ } else if stoppedErr != nil && stoppedErr.Error() != "signal: interrupt" { // TODO - find a better way to detect when the process didn't exit as expected!
+ t.Errorf("prometheus exited with an unexpected error:%v", stoppedErr)
}
}
