integration: Add HTTP Upgrade test
This commit is contained in:
parent
9803f92e9c
commit
87cadca3d8
|
@ -558,6 +558,39 @@ func TestH2H1RequestTrailer(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestH2H1Upgrade tests HTTP Upgrade to HTTP/2
|
||||||
|
func TestH2H1Upgrade(t *testing.T) {
|
||||||
|
st := newServerTester(nil, t, func(w http.ResponseWriter, r *http.Request) {})
|
||||||
|
defer st.Close()
|
||||||
|
|
||||||
|
res, err := st.http1(requestParam{
|
||||||
|
name: "TestH2H1Upgrade",
|
||||||
|
header: []hpack.HeaderField{
|
||||||
|
pair("Connection", "Upgrade, HTTP2-Settings"),
|
||||||
|
pair("Upgrade", "h2c-14"),
|
||||||
|
pair("HTTP2-Settings", "AAMAAABkAAQAAP__"),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Error st.http1() = %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if got, want := res.status, 101; got != want {
|
||||||
|
t.Errorf("res.status: %v; want %v", got, want)
|
||||||
|
}
|
||||||
|
|
||||||
|
res, err = st.http2(requestParam{
|
||||||
|
httpUpgrade: true,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Error st.http2() = %v", err)
|
||||||
|
}
|
||||||
|
if got, want := res.status, 200; got != want {
|
||||||
|
t.Errorf("res.status: %v; want %v", got, want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TestH2H1GracefulShutdown tests graceful shutdown.
|
// TestH2H1GracefulShutdown tests graceful shutdown.
|
||||||
func TestH2H1GracefulShutdown(t *testing.T) {
|
func TestH2H1GracefulShutdown(t *testing.T) {
|
||||||
st := newServerTester(nil, t, noopHandler)
|
st := newServerTester(nil, t, noopHandler)
|
||||||
|
|
|
@ -256,6 +256,7 @@ type requestParam struct {
|
||||||
header []hpack.HeaderField // additional request header fields
|
header []hpack.HeaderField // additional request header fields
|
||||||
body []byte // request body
|
body []byte // request body
|
||||||
trailer []hpack.HeaderField // trailer part
|
trailer []hpack.HeaderField // trailer part
|
||||||
|
httpUpgrade bool // true if upgraded to HTTP/2 through HTTP Upgrade
|
||||||
}
|
}
|
||||||
|
|
||||||
// wrapper for request body to set trailer part
|
// wrapper for request body to set trailer part
|
||||||
|
@ -478,6 +479,7 @@ func (st *serverTester) http2(rp requestParam) (*serverResponse, error) {
|
||||||
streams := make(map[uint32]*serverResponse)
|
streams := make(map[uint32]*serverResponse)
|
||||||
streams[id] = res
|
streams[id] = res
|
||||||
|
|
||||||
|
if !rp.httpUpgrade {
|
||||||
method := "GET"
|
method := "GET"
|
||||||
if rp.method != "" {
|
if rp.method != "" {
|
||||||
method = rp.method
|
method = rp.method
|
||||||
|
@ -540,7 +542,7 @@ func (st *serverTester) http2(rp requestParam) (*serverResponse, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
loop:
|
loop:
|
||||||
for {
|
for {
|
||||||
fr, err := st.readFrame()
|
fr, err := st.readFrame()
|
||||||
|
|
Loading…
Reference in New Issue