http2: remove race from TestTransportCancelDataResponseRace
Wait for the client request to return before cancelling the request.
Then cancel the request and send more data.
Fixes: golang/go#45701
Change-Id: Icc81f9c6fefdda1d978e6234c9894f552daecd45
Reviewed-on: https://go-review.googlesource.com/c/net/+/320369
Run-TryBot: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Damien Neil <dneil@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/http2/transport_test.go b/http2/transport_test.go
index 7d69c7d..ff20c3b 100644
--- a/http2/transport_test.go
+++ b/http2/transport_test.go
@@ -3412,7 +3412,7 @@
// connection.
func TestTransportCancelDataResponseRace(t *testing.T) {
cancel := make(chan struct{})
- clientGotError := make(chan bool, 1)
+ clientGotResponse := make(chan bool, 1)
const msg = "Hello."
st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) {
@@ -3425,8 +3425,8 @@
io.WriteString(w, "Some data.")
w.(http.Flusher).Flush()
if i == 2 {
+ <-clientGotResponse
close(cancel)
- <-clientGotError
}
time.Sleep(10 * time.Millisecond)
}
@@ -3440,13 +3440,13 @@
req, _ := http.NewRequest("GET", st.ts.URL, nil)
req.Cancel = cancel
res, err := c.Do(req)
+ clientGotResponse <- true
if err != nil {
t.Fatal(err)
}
if _, err = io.Copy(ioutil.Discard, res.Body); err == nil {
t.Fatal("unexpected success")
}
- clientGotError <- true
res, err = c.Get(st.ts.URL + "/hello")
if err != nil {