integration: Document each test cases

This commit is contained in:
Tatsuhiro Tsujikawa 2015-01-24 00:01:14 +09:00
parent 990f9ed4de
commit 0fcfe16dc5
3 changed files with 54 additions and 0 deletions

View File

@ -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) {
} }
} }
// 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) {
} }
} }
// 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
} }
} }
// 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) {
} }
} }
// 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) {
} }
} }
// 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) {
} }
} }
// 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")

View File

@ -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) {
} }
} }
// 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) {
} }
} }
// 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) {
} }
} }
// 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) {
} }
} }
// 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) {
} }
} }
// 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) {
} }
} }
// 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) {
} }
} }
// 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) {
} }
} }
// 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) {
} }
} }
// 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) {
} }
} }
// 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) {
} }
} }
// 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) {
} }
} }
// 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) {
} }
} }
// 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) {
} }
} }
// 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) {
} }
} }
// 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()

View File

@ -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) {
} }
} }
// 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) {
} }
} }
// 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) {
} }
} }
// 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) {
} }
} }
// 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()