Skip to content

Commit 37469a7

Browse files
tznealrsc
authored andcommitted
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 <[email protected]>
1 parent 61cd48b commit 37469a7

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

src/net/http/transport_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -599,11 +599,22 @@ func TestTransportHeadChunkedResponse(t *testing.T) {
599599
tr := &Transport{DisableKeepAlives: false}
600600
c := &Client{Transport: tr}
601601

602+
// Ensure that we wait for the readLoop to complete before
603+
// calling Head again
604+
didRead := make(chan bool)
605+
SetReadLoopBeforeNextReadHook(func() { didRead <- true })
606+
defer SetReadLoopBeforeNextReadHook(nil)
607+
602608
res1, err := c.Head(ts.URL)
609+
<-didRead
610+
603611
if err != nil {
604612
t.Fatalf("request 1 error: %v", err)
605613
}
614+
606615
res2, err := c.Head(ts.URL)
616+
<-didRead
617+
607618
if err != nil {
608619
t.Fatalf("request 2 error: %v", err)
609620
}

0 commit comments

Comments
 (0)