aboutsummaryrefslogtreecommitdiff
path: root/reuseport
diff options
context:
space:
mode:
authorGravatar Erik Dubbelboer <erik@dubbelboer.com> 2022-03-04 10:02:31 +0100
committerGravatar GitHub <noreply@github.com> 2022-03-04 10:02:31 +0100
commit7670c6eaa67bbc7d0eb495e04de8f01dc2e75e45 (patch)
treed46052a7513733734f9b0d9541186b4e669faecb /reuseport
parentfeature: Keep the memory usage of the service at a stable level (#1216) (diff)
downloadfasthttp-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.go95
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()
}