From b82be0cc2dfa4cc74995cad8df43c3c6bf7f497c Mon Sep 17 00:00:00 2001 From: Dmitry Verkhoturov Date: Mon, 30 Dec 2019 01:24:42 +0100 Subject: [PATCH] Check if the port already in use in TestRPC_ tests server startup (#506) * check if the port already in use in TestRPC_ tests server startup * check for open port instead of for HTTP server listening --- backend/_example/memory_store/server/rpc_test.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/backend/_example/memory_store/server/rpc_test.go b/backend/_example/memory_store/server/rpc_test.go index 3716eb3c..b50eb02c 100644 --- a/backend/_example/memory_store/server/rpc_test.go +++ b/backend/_example/memory_store/server/rpc_test.go @@ -9,6 +9,7 @@ package server import ( "fmt" "math/rand" + "net" "net/http" "testing" "time" @@ -379,8 +380,6 @@ func TestRPC_admEventHndl(t *testing.T) { } func prepTestStore(t *testing.T) (s *RPC, port int, teardown func()) { - port = 40000 + int(rand.Int31n(10000)) - mg := accessor.NewMemData() adm := accessor.NewMemAdminStore("secret") s = NewRPC(mg, adm, &jrpc.Server{API: "/test", Logger: jrpc.NoOpLogger}) @@ -397,6 +396,17 @@ func prepTestStore(t *testing.T) (s *RPC, port int, teardown func()) { admRecDisabled.Enabled = false adm.Set("test-site-disabled", admRecDisabled) + // check if port is in use before trying to start a new server on it + for i := 0; i < 10; i++ { + port = 40000 + int(rand.Int31n(10000)) + conn, err := net.DialTimeout("tcp", fmt.Sprintf("localhost:%d", port), time.Millisecond*10) + if err != nil { + break + } + if conn != nil { + conn.Close() + } + } go func() { log.Printf("%v", s.Run(port)) }()