Commit 0fcfe16d authored by Tatsuhiro Tsujikawa's avatar Tatsuhiro Tsujikawa

integration: Document each test cases

parent 990f9ed4
...@@ -10,6 +10,7 @@ import ( ...@@ -10,6 +10,7 @@ import (
"testing" "testing"
) )
// TestH1H1PlainGET tests whether simple HTTP/1 GET request works.
func TestH1H1PlainGET(t *testing.T) { func TestH1H1PlainGET(t *testing.T) {
st := newServerTester(nil, t, noopHandler) st := newServerTester(nil, t, noopHandler)
defer st.Close() defer st.Close()
...@@ -27,6 +28,8 @@ func TestH1H1PlainGET(t *testing.T) { ...@@ -27,6 +28,8 @@ func TestH1H1PlainGET(t *testing.T) {
} }
} }
// TestH1H1PlainGETClose tests whether simple HTTP/1 GET request with
// Connetion: close request header field works.
func TestH1H1PlainGETClose(t *testing.T) { func TestH1H1PlainGETClose(t *testing.T) {
st := newServerTester(nil, t, noopHandler) st := newServerTester(nil, t, noopHandler)
defer st.Close() defer st.Close()
...@@ -47,6 +50,8 @@ func TestH1H1PlainGETClose(t *testing.T) { ...@@ -47,6 +50,8 @@ func TestH1H1PlainGETClose(t *testing.T) {
} }
} }
// TestH1H1MultipleRequestCL tests that server rejects request which
// contains multiple Content-Length header fields.
func TestH1H1MultipleRequestCL(t *testing.T) { func TestH1H1MultipleRequestCL(t *testing.T) {
st := newServerTester(nil, t, func(w http.ResponseWriter, r *http.Request) { st := newServerTester(nil, t, func(w http.ResponseWriter, r *http.Request) {
t.Errorf("server should not forward bad request") t.Errorf("server should not forward bad request")
...@@ -74,6 +79,8 @@ Content-Length: 1 ...@@ -74,6 +79,8 @@ Content-Length: 1
} }
} }
// TestH1H1ConnectFailure tests that server handles the situation that
// connection attempt to HTTP/1 backend failed.
func TestH1H1ConnectFailure(t *testing.T) { func TestH1H1ConnectFailure(t *testing.T) {
st := newServerTester(nil, t, noopHandler) st := newServerTester(nil, t, noopHandler)
defer st.Close() defer st.Close()
...@@ -93,6 +100,7 @@ func TestH1H1ConnectFailure(t *testing.T) { ...@@ -93,6 +100,7 @@ func TestH1H1ConnectFailure(t *testing.T) {
} }
} }
// TestH1H1GracefulShutdown tests graceful shutdown.
func TestH1H1GracefulShutdown(t *testing.T) { func TestH1H1GracefulShutdown(t *testing.T) {
st := newServerTester(nil, t, noopHandler) st := newServerTester(nil, t, noopHandler)
defer st.Close() defer st.Close()
...@@ -131,6 +139,8 @@ func TestH1H1GracefulShutdown(t *testing.T) { ...@@ -131,6 +139,8 @@ func TestH1H1GracefulShutdown(t *testing.T) {
} }
} }
// TestH1H2ConnectFailure tests that server handles the situation that
// connection attempt to HTTP/2 backend failed.
func TestH1H2ConnectFailure(t *testing.T) { func TestH1H2ConnectFailure(t *testing.T) {
st := newServerTester([]string{"--http2-bridge"}, t, noopHandler) st := newServerTester([]string{"--http2-bridge"}, t, noopHandler)
defer st.Close() defer st.Close()
...@@ -150,6 +160,8 @@ func TestH1H2ConnectFailure(t *testing.T) { ...@@ -150,6 +160,8 @@ func TestH1H2ConnectFailure(t *testing.T) {
} }
} }
// TestH1H2NoHost tests that server rejects request without Host
// header field for HTTP/2 backend.
func TestH1H2NoHost(t *testing.T) { func TestH1H2NoHost(t *testing.T) {
st := newServerTester([]string{"--http2-bridge"}, t, func(w http.ResponseWriter, r *http.Request) { st := newServerTester([]string{"--http2-bridge"}, t, func(w http.ResponseWriter, r *http.Request) {
t.Errorf("server should not forward bad request") t.Errorf("server should not forward bad request")
......
...@@ -11,6 +11,7 @@ import ( ...@@ -11,6 +11,7 @@ import (
"testing" "testing"
) )
// TestH1H2PlainGET tests whether simple HTTP/2 GET request works.
func TestH2H1PlainGET(t *testing.T) { func TestH2H1PlainGET(t *testing.T) {
st := newServerTester(nil, t, noopHandler) st := newServerTester(nil, t, noopHandler)
defer st.Close() defer st.Close()
...@@ -28,6 +29,8 @@ func TestH2H1PlainGET(t *testing.T) { ...@@ -28,6 +29,8 @@ func TestH2H1PlainGET(t *testing.T) {
} }
} }
// TestH2H1AddXff tests that server generates X-Forwarded-For header
// field when forwarding request to backend.
func TestH2H1AddXff(t *testing.T) { func TestH2H1AddXff(t *testing.T) {
st := newServerTester([]string{"--add-x-forwarded-for"}, t, func(w http.ResponseWriter, r *http.Request) { st := newServerTester([]string{"--add-x-forwarded-for"}, t, func(w http.ResponseWriter, r *http.Request) {
xff := r.Header.Get("X-Forwarded-For") xff := r.Header.Get("X-Forwarded-For")
...@@ -46,6 +49,8 @@ func TestH2H1AddXff(t *testing.T) { ...@@ -46,6 +49,8 @@ func TestH2H1AddXff(t *testing.T) {
} }
} }
// TestH2H1AddXff2 tests that server appends X-Forwarded-For header
// field to existing one when forwarding request to backend.
func TestH2H1AddXff2(t *testing.T) { func TestH2H1AddXff2(t *testing.T) {
st := newServerTester([]string{"--add-x-forwarded-for"}, t, func(w http.ResponseWriter, r *http.Request) { st := newServerTester([]string{"--add-x-forwarded-for"}, t, func(w http.ResponseWriter, r *http.Request) {
xff := r.Header.Get("X-Forwarded-For") xff := r.Header.Get("X-Forwarded-For")
...@@ -67,6 +72,8 @@ func TestH2H1AddXff2(t *testing.T) { ...@@ -67,6 +72,8 @@ func TestH2H1AddXff2(t *testing.T) {
} }
} }
// TestH2H1StripXff tests that --strip-incoming-x-forwarded-for
// option.
func TestH2H1StripXff(t *testing.T) { func TestH2H1StripXff(t *testing.T) {
st := newServerTester([]string{"--strip-incoming-x-forwarded-for"}, t, func(w http.ResponseWriter, r *http.Request) { st := newServerTester([]string{"--strip-incoming-x-forwarded-for"}, t, func(w http.ResponseWriter, r *http.Request) {
if xff, found := r.Header["X-Forwarded-For"]; found { if xff, found := r.Header["X-Forwarded-For"]; found {
...@@ -86,6 +93,8 @@ func TestH2H1StripXff(t *testing.T) { ...@@ -86,6 +93,8 @@ func TestH2H1StripXff(t *testing.T) {
} }
} }
// TestH2H1StripAddXff tests that --strip-incoming-x-forwarded-for and
// --add-x-forwarded-for options.
func TestH2H1StripAddXff(t *testing.T) { func TestH2H1StripAddXff(t *testing.T) {
args := []string{ args := []string{
"--strip-incoming-x-forwarded-for", "--strip-incoming-x-forwarded-for",
...@@ -111,6 +120,9 @@ func TestH2H1StripAddXff(t *testing.T) { ...@@ -111,6 +120,9 @@ func TestH2H1StripAddXff(t *testing.T) {
} }
} }
// TestH2H1BadRequestCL tests that server rejects request whose
// content-length header field value does not match its request body
// size.
func TestH2H1BadRequestCL(t *testing.T) { func TestH2H1BadRequestCL(t *testing.T) {
st := newServerTester(nil, t, noopHandler) st := newServerTester(nil, t, noopHandler)
defer st.Close() defer st.Close()
...@@ -135,6 +147,9 @@ func TestH2H1BadRequestCL(t *testing.T) { ...@@ -135,6 +147,9 @@ func TestH2H1BadRequestCL(t *testing.T) {
} }
} }
// TestH2H1BadResponseCL tests that server returns error when
// content-length response header field value does not match its
// response body size.
func TestH2H1BadResponseCL(t *testing.T) { func TestH2H1BadResponseCL(t *testing.T) {
st := newServerTester(nil, t, func(w http.ResponseWriter, r *http.Request) { st := newServerTester(nil, t, func(w http.ResponseWriter, r *http.Request) {
// we set content-length: 1024, but only send 3 bytes. // we set content-length: 1024, but only send 3 bytes.
...@@ -156,6 +171,8 @@ func TestH2H1BadResponseCL(t *testing.T) { ...@@ -156,6 +171,8 @@ func TestH2H1BadResponseCL(t *testing.T) {
} }
} }
// TestH2H1LocationRewrite tests location header field rewriting
// works.
func TestH2H1LocationRewrite(t *testing.T) { func TestH2H1LocationRewrite(t *testing.T) {
st := newServerTester(nil, t, func(w http.ResponseWriter, r *http.Request) { st := newServerTester(nil, t, func(w http.ResponseWriter, r *http.Request) {
// TODO we cannot get st.ts's port number here.. 8443 // TODO we cannot get st.ts's port number here.. 8443
...@@ -177,6 +194,7 @@ func TestH2H1LocationRewrite(t *testing.T) { ...@@ -177,6 +194,7 @@ func TestH2H1LocationRewrite(t *testing.T) {
} }
} }
// TestH2H1ChunkedRequestBody tests that chunked request body works.
func TestH2H1ChunkedRequestBody(t *testing.T) { func TestH2H1ChunkedRequestBody(t *testing.T) {
st := newServerTester(nil, t, func(w http.ResponseWriter, r *http.Request) { st := newServerTester(nil, t, func(w http.ResponseWriter, r *http.Request) {
want := "[chunked]" want := "[chunked]"
...@@ -204,6 +222,8 @@ func TestH2H1ChunkedRequestBody(t *testing.T) { ...@@ -204,6 +222,8 @@ func TestH2H1ChunkedRequestBody(t *testing.T) {
} }
} }
// TestH2H1MultipleRequestCL tests that server rejects request with
// multiple Content-Length request header fields.
func TestH2H1MultipleRequestCL(t *testing.T) { func TestH2H1MultipleRequestCL(t *testing.T) {
st := newServerTester(nil, t, func(w http.ResponseWriter, r *http.Request) { st := newServerTester(nil, t, func(w http.ResponseWriter, r *http.Request) {
t.Errorf("server should not forward bad request") t.Errorf("server should not forward bad request")
...@@ -226,6 +246,8 @@ func TestH2H1MultipleRequestCL(t *testing.T) { ...@@ -226,6 +246,8 @@ func TestH2H1MultipleRequestCL(t *testing.T) {
} }
} }
// TestH2H1InvalidRequestCL tests that server rejects request with
// Content-Length which cannot be parsed as a number.
func TestH2H1InvalidRequestCL(t *testing.T) { func TestH2H1InvalidRequestCL(t *testing.T) {
st := newServerTester(nil, t, func(w http.ResponseWriter, r *http.Request) { st := newServerTester(nil, t, func(w http.ResponseWriter, r *http.Request) {
t.Errorf("server should not forward bad request") t.Errorf("server should not forward bad request")
...@@ -247,6 +269,8 @@ func TestH2H1InvalidRequestCL(t *testing.T) { ...@@ -247,6 +269,8 @@ func TestH2H1InvalidRequestCL(t *testing.T) {
} }
} }
// TestH2H1ConnectFailure tests that server handles the situation that
// connection attempt to HTTP/1 backend failed.
func TestH2H1ConnectFailure(t *testing.T) { func TestH2H1ConnectFailure(t *testing.T) {
st := newServerTester(nil, t, noopHandler) st := newServerTester(nil, t, noopHandler)
defer st.Close() defer st.Close()
...@@ -266,6 +290,7 @@ func TestH2H1ConnectFailure(t *testing.T) { ...@@ -266,6 +290,7 @@ func TestH2H1ConnectFailure(t *testing.T) {
} }
} }
// TestH2H1GracefulShutdown tests graceful shutdown.
func TestH2H1GracefulShutdown(t *testing.T) { func TestH2H1GracefulShutdown(t *testing.T) {
st := newServerTester(nil, t, noopHandler) st := newServerTester(nil, t, noopHandler)
defer st.Close() defer st.Close()
...@@ -342,6 +367,8 @@ func TestH2H1GracefulShutdown(t *testing.T) { ...@@ -342,6 +367,8 @@ func TestH2H1GracefulShutdown(t *testing.T) {
} }
} }
// TestH2H2MultipleResponseCL tests that server returns error if
// multiple Content-Length response header fields are received.
func TestH2H2MultipleResponseCL(t *testing.T) { func TestH2H2MultipleResponseCL(t *testing.T) {
st := newServerTester([]string{"--http2-bridge"}, t, func(w http.ResponseWriter, r *http.Request) { st := newServerTester([]string{"--http2-bridge"}, t, func(w http.ResponseWriter, r *http.Request) {
w.Header().Add("content-length", "1") w.Header().Add("content-length", "1")
...@@ -361,6 +388,9 @@ func TestH2H2MultipleResponseCL(t *testing.T) { ...@@ -361,6 +388,9 @@ func TestH2H2MultipleResponseCL(t *testing.T) {
} }
} }
// TestH2H2InvalidResponseCL tests that server returns error if
// Content-Length response header field value cannot be parsed as a
// number.
func TestH2H2InvalidResponseCL(t *testing.T) { func TestH2H2InvalidResponseCL(t *testing.T) {
st := newServerTester([]string{"--http2-bridge"}, t, func(w http.ResponseWriter, r *http.Request) { st := newServerTester([]string{"--http2-bridge"}, t, func(w http.ResponseWriter, r *http.Request) {
w.Header().Add("content-length", "") w.Header().Add("content-length", "")
...@@ -379,6 +409,8 @@ func TestH2H2InvalidResponseCL(t *testing.T) { ...@@ -379,6 +409,8 @@ func TestH2H2InvalidResponseCL(t *testing.T) {
} }
} }
// TestH2H2ConnectFailure tests that server handles the situation that
// connection attempt to HTTP/2 backend failed.
func TestH2H2ConnectFailure(t *testing.T) { func TestH2H2ConnectFailure(t *testing.T) {
st := newServerTester([]string{"--http2-bridge"}, t, noopHandler) st := newServerTester([]string{"--http2-bridge"}, t, noopHandler)
defer st.Close() defer st.Close()
......
...@@ -7,6 +7,7 @@ import ( ...@@ -7,6 +7,7 @@ import (
"testing" "testing"
) )
// TestS3H1PlainGET tests whether simple SPDY GET request works.
func TestS3H1PlainGET(t *testing.T) { func TestS3H1PlainGET(t *testing.T) {
st := newServerTesterTLS([]string{"--npn-list=spdy/3.1"}, t, noopHandler) st := newServerTesterTLS([]string{"--npn-list=spdy/3.1"}, t, noopHandler)
defer st.Close() defer st.Close()
...@@ -24,6 +25,9 @@ func TestS3H1PlainGET(t *testing.T) { ...@@ -24,6 +25,9 @@ func TestS3H1PlainGET(t *testing.T) {
} }
} }
// TestS3H1BadRequestCL tests that server rejects request whose
// content-length header field value does not match its request body
// size.
func TestS3H1BadRequestCL(t *testing.T) { func TestS3H1BadRequestCL(t *testing.T) {
st := newServerTesterTLS([]string{"--npn-list=spdy/3.1"}, t, noopHandler) st := newServerTesterTLS([]string{"--npn-list=spdy/3.1"}, t, noopHandler)
defer st.Close() defer st.Close()
...@@ -48,6 +52,8 @@ func TestS3H1BadRequestCL(t *testing.T) { ...@@ -48,6 +52,8 @@ func TestS3H1BadRequestCL(t *testing.T) {
} }
} }
// TestS3H1MultipleRequestCL tests that server rejects request with
// multiple Content-Length request header fields.
func TestS3H1MultipleRequestCL(t *testing.T) { func TestS3H1MultipleRequestCL(t *testing.T) {
st := newServerTesterTLS([]string{"--npn-list=spdy/3.1"}, t, func(w http.ResponseWriter, r *http.Request) { st := newServerTesterTLS([]string{"--npn-list=spdy/3.1"}, t, func(w http.ResponseWriter, r *http.Request) {
t.Errorf("server should not forward bad request") t.Errorf("server should not forward bad request")
...@@ -70,6 +76,8 @@ func TestS3H1MultipleRequestCL(t *testing.T) { ...@@ -70,6 +76,8 @@ func TestS3H1MultipleRequestCL(t *testing.T) {
} }
} }
// TestS3H1InvalidRequestCL tests that server rejects request with
// Content-Length which cannot be parsed as a number.
func TestS3H1InvalidRequestCL(t *testing.T) { func TestS3H1InvalidRequestCL(t *testing.T) {
st := newServerTesterTLS([]string{"--npn-list=spdy/3.1"}, t, func(w http.ResponseWriter, r *http.Request) { st := newServerTesterTLS([]string{"--npn-list=spdy/3.1"}, t, func(w http.ResponseWriter, r *http.Request) {
t.Errorf("server should not forward bad request") t.Errorf("server should not forward bad request")
...@@ -91,6 +99,8 @@ func TestS3H1InvalidRequestCL(t *testing.T) { ...@@ -91,6 +99,8 @@ func TestS3H1InvalidRequestCL(t *testing.T) {
} }
} }
// TestS3H2ConnectFailure tests that server handles the situation that
// connection attempt to HTTP/2 backend failed.
func TestS3H2ConnectFailure(t *testing.T) { func TestS3H2ConnectFailure(t *testing.T) {
st := newServerTesterTLS([]string{"--npn-list=spdy/3.1", "--http2-bridge"}, t, noopHandler) st := newServerTesterTLS([]string{"--npn-list=spdy/3.1", "--http2-bridge"}, t, noopHandler)
defer st.Close() defer st.Close()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment