diff --git a/cmd/server-mux_test.go b/cmd/server-mux_test.go index 6904fc0f8..31fb7f01a 100644 --- a/cmd/server-mux_test.go +++ b/cmd/server-mux_test.go @@ -309,34 +309,36 @@ func TestServerListenAndServePlain(t *testing.T) { // ListenAndServe in a goroutine, but we don't know when it's ready go func() { errc <- m.ListenAndServe("", "") }() - wg := &sync.WaitGroup{} - wg.Add(1) // Keep trying the server until it's accepting connections go func() { client := http.Client{Timeout: time.Millisecond * 10} - ok := false - for !ok { + for { res, _ := client.Get("http://" + addr) if res != nil && res.StatusCode == http.StatusOK { - ok = true + break } } + }() - wg.Done() + wg := &sync.WaitGroup{} + wg.Add(1) + go func() { + defer wg.Done() + select { + case err := <-errc: + if err != nil { + t.Fatal(err) + } + case <-wait: + return + } }() + // Wait until we get an error or wait closed wg.Wait() - // Block until we get an error or wait closed - select { - case err := <-errc: - if err != nil { - t.Fatal(err) - } - case <-wait: - m.Close() // Shutdown the ServerMux - return - } + // Shutdown the ServerMux + m.Close() } func TestServerListenAndServeTLS(t *testing.T) { @@ -389,12 +391,11 @@ func TestServerListenAndServeTLS(t *testing.T) { Timeout: time.Millisecond * 10, Transport: tr, } - okTLS := false // Keep trying the server until it's accepting connections - for !okTLS { + for { res, _ := client.Get("https://" + addr) if res != nil && res.StatusCode == http.StatusOK { - okTLS = true + break } } @@ -423,19 +424,25 @@ func TestServerListenAndServeTLS(t *testing.T) { wg.Done() }() - wg.Wait() - - // Block until we get an error or wait closed - select { - case err := <-errc: - if err != nil { - t.Error(err) + wg.Add(1) + go func() { + defer wg.Done() + select { + case err := <-errc: + if err != nil { + t.Error(err) + return + } + case <-wait: return } - case <-wait: - m.Close() // Shutdown the ServerMux - return - } + }() + + // Wait until we get an error or wait closed + wg.Wait() + + // Shutdown the ServerMux + m.Close() } // generateTestCert creates a cert and a key used for testing only