diff options
author | ichx <czn16@qq.com> | 2021-11-13 18:53:10 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-13 11:53:10 +0100 |
commit | 3b117f8f1e822d8069eb2fb3794a69a5e237c223 (patch) | |
tree | f7e1ef2cbfcbe996cbce975bff75e4a488fb16c0 /server_test.go | |
parent | Remove redundant code (#1154) (diff) | |
download | fasthttp-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.go | 41 |
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() |