From b79b4c405afb41b4e2c0d05b9c578ea3bd4503eb Mon Sep 17 00:00:00 2001 From: Sergey Stepanov Date: Sun, 26 Nov 2023 23:49:13 +0300 Subject: [PATCH] Get random free port in websocket tests --- pkg/com/net_test.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/pkg/com/net_test.go b/pkg/com/net_test.go index fa7d31309..572fb31ee 100644 --- a/pkg/com/net_test.go +++ b/pkg/com/net_test.go @@ -4,6 +4,7 @@ import ( "encoding/json" "fmt" "math/rand" + "net" "net/http" "net/url" "sync" @@ -49,7 +50,13 @@ func TestWebsocket(t *testing.T) { } func testWebsocket(t *testing.T) { - addr := ":8989" + port, err := getFreePort() + if err != nil { + t.Logf("couldn't get any free port") + t.Skip() + } + addr := fmt.Sprintf(":%v", port) + server := newServer(addr, t) client := newClient(t, url.URL{Scheme: "ws", Host: "localhost" + addr, Path: "/ws"}) clDone := client.ProcessPackets(func(in TestIn) error { return nil }) @@ -206,3 +213,15 @@ func newServer(addr string, t *testing.T) *serverHandler { wg.Wait() return &handler } + +func getFreePort() (port int, err error) { + var a *net.TCPAddr + var l *net.TCPListener + if a, err = net.ResolveTCPAddr("tcp", ":0"); err == nil { + if l, err = net.ListenTCP("tcp", a); err == nil { + defer func() { _ = l.Close() }() + return l.Addr().(*net.TCPAddr).Port, nil + } + } + return +}