]> Cypherpunks repositories - gostls13.git/commitdiff
net/http: Fix test that occasionally fails
authorTodd Neal <todd@tneal.org>
Wed, 17 Jun 2015 14:31:08 +0000 (09:31 -0500)
committerRuss Cox <rsc@golang.org>
Fri, 26 Jun 2015 17:22:53 +0000 (17:22 +0000)
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 <rsc@golang.org>
src/net/http/transport_test.go

index c2e7552b17da77b2bb2b9dcf17820db0048442a0..f8bb6c10d1265f5c0be6123a6961894b9c1449a7 100644 (file)
@@ -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)
        }