diff options
author | Erik Dubbelboer <erik@dubbelboer.com> | 2022-03-04 10:02:31 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-04 10:02:31 +0100 |
commit | 7670c6eaa67bbc7d0eb495e04de8f01dc2e75e45 (patch) | |
tree | d46052a7513733734f9b0d9541186b4e669faecb /reuseport | |
parent | feature: Keep the memory usage of the service at a stable level (#1216) (diff) | |
download | fasthttp-7670c6eaa67bbc7d0eb495e04de8f01dc2e75e45.tar.gz fasthttp-7670c6eaa67bbc7d0eb495e04de8f01dc2e75e45.tar.bz2 fasthttp-7670c6eaa67bbc7d0eb495e04de8f01dc2e75e45.zip |
Fix windows tests (#1235)
* Fix windows tests
Just ignore /../ tests on windows until we have proper suppor.
* Remove useless test code
This code was basically just testing if tcp works. To test if
SO_REUSEPORT works we only have to try to listen on the same addr:port
twice.
* Fix test
Diffstat (limited to 'reuseport')
-rw-r--r-- | reuseport/reuseport_test.go | 95 |
1 files changed, 11 insertions, 84 deletions
diff --git a/reuseport/reuseport_test.go b/reuseport/reuseport_test.go index a79b962..93d4295 100644 --- a/reuseport/reuseport_test.go +++ b/reuseport/reuseport_test.go @@ -1,17 +1,14 @@ package reuseport import ( - "fmt" - "io/ioutil" "net" "testing" - "time" ) func TestTCP4(t *testing.T) { t.Parallel() - testNewListener(t, "tcp4", "localhost:10081", 20, 1000) + testNewListener(t, "tcp4", "localhost:10081") } func TestTCP6(t *testing.T) { @@ -19,7 +16,7 @@ func TestTCP6(t *testing.T) { // Run this test only if tcp6 interface exists. if hasLocalIPv6(t) { - testNewListener(t, "tcp6", "[::1]:10082", 20, 1000) + testNewListener(t, "tcp6", "[::1]:10082") } } @@ -36,87 +33,17 @@ func hasLocalIPv6(t *testing.T) bool { return false } -func testNewListener(t *testing.T, network, addr string, serversCount, requestsCount int) { - var lns []net.Listener - doneCh := make(chan struct{}, serversCount) - - for i := 0; i < serversCount; i++ { - ln, err := Listen(network, addr) - if err != nil { - t.Fatalf("cannot create listener %d: %s", i, err) - } - go func() { - serveEcho(t, ln) - doneCh <- struct{}{} - }() - lns = append(lns, ln) - } - - for i := 0; i < requestsCount; i++ { - c, err := net.Dial(network, addr) - if err != nil { - t.Fatalf("%d. unexpected error when dialing: %s", i, err) - } - req := fmt.Sprintf("request number %d", i) - if _, err = c.Write([]byte(req)); err != nil { - t.Fatalf("%d. unexpected error when writing request: %s", i, err) - } - if err = c.(*net.TCPConn).CloseWrite(); err != nil { - t.Fatalf("%d. unexpected error when closing write end of the connection: %s", i, err) - } - - var resp []byte - ch := make(chan struct{}) - go func() { - if resp, err = ioutil.ReadAll(c); err != nil { - t.Errorf("%d. unexpected error when reading response: %s", i, err) - } - close(ch) - }() - select { - case <-ch: - case <-time.After(250 * time.Millisecond): - t.Fatalf("%d. timeout when waiting for response", i) - } - - if string(resp) != req { - t.Fatalf("%d. unexpected response %q. Expecting %q", i, resp, req) - } - if err = c.Close(); err != nil { - t.Fatalf("%d. unexpected error when closing connection: %s", i, err) - } - } - - for _, ln := range lns { - if err := ln.Close(); err != nil { - t.Fatalf("unexpected error when closing listener: %s", err) - } +func testNewListener(t *testing.T, network, addr string) { + ln1, err := Listen(network, addr) + if err != nil { + t.Fatalf("cannot create listener %v", err) } - for i := 0; i < serversCount; i++ { - select { - case <-doneCh: - case <-time.After(200 * time.Millisecond): - t.Fatalf("timeout when waiting for servers to be closed") - } + ln2, err := Listen(network, addr) + if err != nil { + t.Fatalf("cannot create listener %v", err) } -} -func serveEcho(t *testing.T, ln net.Listener) { - for { - c, err := ln.Accept() - if err != nil { - break - } - req, err := ioutil.ReadAll(c) - if err != nil { - t.Fatalf("unexpected error when reading request: %s", err) - } - if _, err = c.Write(req); err != nil { - t.Fatalf("unexpected error when writing response: %s", err) - } - if err = c.Close(); err != nil { - t.Fatalf("unexpected error when closing connection: %s", err) - } - } + _ = ln1.Close() + _ = ln2.Close() } |