Browse Source

fix flaky main.go test and simplify a bit

pull/3587/head
Krasi Georgiev 7 years ago
parent
commit
ad66476c4f
  1. 11
      cmd/prometheus/main_test.go

11
cmd/prometheus/main_test.go

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

Loading…
Cancel
Save