func TestProbabilisticGoawayDecider(t *testing.T) { … } const urlGet … const urlPost … const urlWatch … const urlGetWithGoaway … const urlPostWithGoaway … const urlWatchWithGoaway … var responseBody … var requestPostBody … // newTestGOAWAYServer return a test GOAWAY server instance. func newTestGOAWAYServer() (*httptest.Server, error) { … } type watchResponse … // requestGOAWAYServer request test GOAWAY server using specified method and data according to the given url. // A non-nil channel will be returned if the request is watch, and a watchResponse can be got from the channel when watch done. func requestGOAWAYServer(client *http.Client, serverBaseURL, url string) (<-chan watchResponse, error) { … } // TestClientReceivedGOAWAY tests the in-flight watch requests will not be affected and new requests use a new // connection after client received GOAWAY. func TestClientReceivedGOAWAY(t *testing.T) { … } // TestGOAWAYHTTP1Requests tests GOAWAY filter will not affect HTTP1.1 requests. func TestGOAWAYHTTP1Requests(t *testing.T) { … } // TestGOAWAYConcurrency tests GOAWAY frame will not affect concurrency requests in a single http client instance. func TestGOAWAYConcurrency(t *testing.T) { … }