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