From: Todd Neal Date: Wed, 17 Jun 2015 14:31:08 +0000 (-0500) Subject: net/http: Fix test that occasionally fails X-Git-Tag: go1.5beta1~105 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=37469a7bcbd833317175d6f6e82051812b7ac892;p=gostls13.git net/http: Fix test that occasionally fails The consecutive calls to Head would sometimes get different connections depending on if the readLoop had finished executing and placed its connection on the idle list or not. This change ensures that readLoop completes before we make our second connection. Fixes #11250 Change-Id: Ibdbc4d3d0aba0162452f6dec5928355a37dda70a Reviewed-on: https://go-review.googlesource.com/11170 Reviewed-by: Russ Cox --- diff --git a/src/net/http/transport_test.go b/src/net/http/transport_test.go index c2e7552b17..f8bb6c10d1 100644 --- a/src/net/http/transport_test.go +++ b/src/net/http/transport_test.go @@ -599,11 +599,22 @@ func TestTransportHeadChunkedResponse(t *testing.T) { tr := &Transport{DisableKeepAlives: false} c := &Client{Transport: tr} + // Ensure that we wait for the readLoop to complete before + // calling Head again + didRead := make(chan bool) + SetReadLoopBeforeNextReadHook(func() { didRead <- true }) + defer SetReadLoopBeforeNextReadHook(nil) + res1, err := c.Head(ts.URL) + <-didRead + if err != nil { t.Fatalf("request 1 error: %v", err) } + res2, err := c.Head(ts.URL) + <-didRead + if err != nil { t.Fatalf("request 2 error: %v", err) }