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:
Daniel Nephin 2020-08-13 17:48:46 -04:00
parent b6d91d59f3
commit 512a523a3e

View file

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