http2: fix race in TestServer_Headers_HalfCloseRemote
Wait until stream is checked before sending data.
Updates golang/go#26314
Change-Id: If8a72d5e9ad313130043d0929dd741486aa2f0cd
Reviewed-on: https://go-review.googlesource.com/123037
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/http2/server_test.go b/http2/server_test.go
index 1573889..4e70ac7 100644
--- a/http2/server_test.go
+++ b/http2/server_test.go
@@ -3844,17 +3844,17 @@
func TestServer_Headers_HalfCloseRemote(t *testing.T) {
var st *serverTester
- inHandler := make(chan bool)
+ writeData := make(chan bool)
writeHeaders := make(chan bool)
leaveHandler := make(chan bool)
st = newServerTester(t, func(w http.ResponseWriter, r *http.Request) {
- inHandler <- true
if st.stream(1) == nil {
t.Errorf("nil stream 1 in handler")
}
if got, want := st.streamState(1), stateOpen; got != want {
t.Errorf("in handler, state is %v; want %v", got, want)
}
+ writeData <- true
if n, err := r.Body.Read(make([]byte, 1)); n != 0 || err != io.EOF {
t.Errorf("body read = %d, %v; want 0, EOF", n, err)
}
@@ -3873,7 +3873,7 @@
EndStream: false, // keep it open
EndHeaders: true,
})
- <-inHandler
+ <-writeData
st.writeData(1, true, nil)
<-writeHeaders