testing: wait until monitor has started before shutdown
This commit fixes a test that I saw flake locally while running tests. The test output from the monitor started immediately after the line the test was looking for. To fix the problem a channel is closed when the goroutine starts. Shutdown is not called until this channel is closed, which seems to greatly reduce the chance of a flake.
This commit is contained in:
parent
b6d91d59f3
commit
512a523a3e
|
@ -4542,12 +4542,15 @@ func TestAgent_Monitor(t *testing.T) {
|
||||||
req = req.WithContext(cancelCtx)
|
req = req.WithContext(cancelCtx)
|
||||||
|
|
||||||
resp := httptest.NewRecorder()
|
resp := httptest.NewRecorder()
|
||||||
errCh := make(chan error)
|
chErr := make(chan error)
|
||||||
|
chStarted := make(chan struct{})
|
||||||
go func() {
|
go func() {
|
||||||
|
close(chStarted)
|
||||||
_, err := a.srv.AgentMonitor(resp, req)
|
_, err := a.srv.AgentMonitor(resp, req)
|
||||||
errCh <- err
|
chErr <- err
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
<-chStarted
|
||||||
require.NoError(t, a.Shutdown())
|
require.NoError(t, a.Shutdown())
|
||||||
|
|
||||||
// Wait until we have received some type of logging output
|
// Wait until we have received some type of logging output
|
||||||
|
@ -4556,7 +4559,7 @@ func TestAgent_Monitor(t *testing.T) {
|
||||||
}, 3*time.Second, 100*time.Millisecond)
|
}, 3*time.Second, 100*time.Millisecond)
|
||||||
|
|
||||||
cancelFunc()
|
cancelFunc()
|
||||||
err := <-errCh
|
err := <-chErr
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
got := resp.Body.String()
|
got := resp.Body.String()
|
||||||
|
|
Loading…
Reference in a new issue