Skip to content

Commit

Permalink
net/http: update bundled http2 and add tests for two fixed issues
Browse files Browse the repository at this point in the history
Updates to http2's golang.org/cl/17590 (git rev 1796f9b8b)

Fixes #13495
Fixes #13532

Change-Id: I9b95ab438e1d895c75d031d8fcf2605921182a5e
Reviewed-on: https://go-review.googlesource.com/17591
Reviewed-by: Brad Fitzpatrick <[email protected]>
Run-TryBot: Brad Fitzpatrick <[email protected]>
  • Loading branch information
bradfitz committed Dec 9, 2015
1 parent 1092257 commit 3d3d6eb
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 6 deletions.
49 changes: 45 additions & 4 deletions src/net/http/clientserver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,15 +121,17 @@ func testChunkedResponseHeaders(t *testing.T, h2 bool) {
}
}

type reqFunc func(c *Client, url string) (*Response, error)

// h12Compare is a test that compares HTTP/1 and HTTP/2 behavior
// against each other.
type h12Compare struct {
Handler func(ResponseWriter, *Request) // required
ReqFunc func(c *Client, url string) (*Response, error) // optional
CheckResponse func(proto string, res *Response) // optional
Handler func(ResponseWriter, *Request) // required
ReqFunc reqFunc // optional
CheckResponse func(proto string, res *Response) // optional
}

func (tt h12Compare) reqFunc() func(c *Client, url string) (*Response, error) {
func (tt h12Compare) reqFunc() reqFunc {
if tt.ReqFunc == nil {
return (*Client).Get
}
Expand Down Expand Up @@ -213,6 +215,36 @@ func (tt h12Compare) normalizeRes(t *testing.T, res *Response, wantProto string)
}
}

// Issue 13532
func TestH12_HeadContentLengthNoBody(t *testing.T) {
h12Compare{
ReqFunc: (*Client).Head,
Handler: func(w ResponseWriter, r *Request) {
},
}.run(t)
}

func TestH12_HeadContentLengthSmallBody(t *testing.T) {
h12Compare{
ReqFunc: (*Client).Head,
Handler: func(w ResponseWriter, r *Request) {
io.WriteString(w, "small")
},
}.run(t)
}

func TestH12_HeadContentLengthLargeBody(t *testing.T) {
h12Compare{
ReqFunc: (*Client).Head,
Handler: func(w ResponseWriter, r *Request) {
chunk := strings.Repeat("x", 512<<10)
for i := 0; i < 10; i++ {
io.WriteString(w, chunk)
}
},
}.run(t)
}

func TestH12_200NoBody(t *testing.T) {
h12Compare{Handler: func(w ResponseWriter, r *Request) {}}.run(t)
}
Expand Down Expand Up @@ -371,3 +403,12 @@ func test304Responses(t *testing.T, h2 bool) {
t.Errorf("got unexpected body %q", string(body))
}
}

func TestH12_ServerEmptyContentLength(t *testing.T) {
h12Compare{
Handler: func(w ResponseWriter, r *Request) {
w.Header()["Content-Type"] = []string{""}
io.WriteString(w, "<html><body>hi</body></html>")
},
}.run(t)
}
5 changes: 3 additions & 2 deletions src/net/http/h2_bundle.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 3d3d6eb

Please sign in to comment.