From 37469a7bcbd833317175d6f6e82051812b7ac892 Mon Sep 17 00:00:00 2001 From: Todd Neal Date: Wed, 17 Jun 2015 09:31:08 -0500 Subject: [PATCH] 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 --- src/net/http/transport_test.go | 11 +++++++++++ 1 file changed, 11 insertions(+) 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) } -- 2.51.0