aboutsummaryrefslogtreecommitdiff
path: root/server_test.go
diff options
context:
space:
mode:
authorGravatar ichx <czn16@qq.com> 2021-11-13 18:53:10 +0800
committerGravatar GitHub <noreply@github.com> 2021-11-13 11:53:10 +0100
commit3b117f8f1e822d8069eb2fb3794a69a5e237c223 (patch)
treef7e1ef2cbfcbe996cbce975bff75e4a488fb16c0 /server_test.go
parentRemove redundant code (#1154) (diff)
downloadfasthttp-3b117f8f1e822d8069eb2fb3794a69a5e237c223.tar.gz
fasthttp-3b117f8f1e822d8069eb2fb3794a69a5e237c223.tar.bz2
fasthttp-3b117f8f1e822d8069eb2fb3794a69a5e237c223.zip
feat: close idle connections when server shutdown (#1155)
* feat: close idle connections when server shutdown * Fix redundant code * Update test * Update test
Diffstat (limited to 'server_test.go')
-rw-r--r--server_test.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/server_test.go b/server_test.go
index 4a29515..5678022 100644
--- a/server_test.go
+++ b/server_test.go
@@ -3347,6 +3347,47 @@ func TestShutdownErr(t *testing.T) {
verifyResponse(t, br, StatusOK, "aaa/bbb", "real response")
}
+func TestShutdownCloseIdleConns(t *testing.T) {
+ t.Parallel()
+
+ ln := fasthttputil.NewInmemoryListener()
+ s := &Server{
+ Handler: func(ctx *RequestCtx) {
+ ctx.Success("aaa/bbb", []byte("real response"))
+ },
+ }
+ go func() {
+ if err := s.Serve(ln); err != nil {
+ t.Errorf("unexepcted error: %s", err)
+ }
+ }()
+ conn, err := ln.Dial()
+ if err != nil {
+ t.Fatalf("unexepcted error: %s", err)
+ }
+
+ if _, err = conn.Write([]byte("GET / HTTP/1.1\r\nHost: google.com\r\n\r\n")); err != nil {
+ t.Errorf("unexpected error: %s", err)
+ }
+ br := bufio.NewReader(conn)
+ verifyResponse(t, br, StatusOK, "aaa/bbb", "real response")
+
+ shutdownErr := make(chan error)
+ go func() {
+ shutdownErr <- s.Shutdown()
+ }()
+
+ timer := time.NewTimer(time.Second)
+ select {
+ case <-timer.C:
+ t.Fatal("idle connections not closed on shutdown")
+ case err = <-shutdownErr:
+ if err != nil {
+ t.Errorf("unexepcted error: %s", err)
+ }
+ }
+}
+
func TestMultipleServe(t *testing.T) {
t.Parallel()