test(server): fix data race in monitoring endpoint tests
Replace concurrent polling of srv.GetListeners() with pre-created net.Listener injected via srv.SetListeners(). The previous approach raced with the Start() goroutine writing to s.listeners and calling net.Listen(). Also remove unused waitForServerRunning call.
This commit is contained in:
parent
e8fbbf368c
commit
dea5e28f5f
@ -1,6 +1,7 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"net"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
@ -22,22 +23,19 @@ func TestMonitoringEndpoints_OnlyRegisteredWhenEnabled(t *testing.T) {
|
||||
}},
|
||||
}
|
||||
|
||||
ln, err := net.Listen("tcp", "127.0.0.1:0")
|
||||
if err != nil {
|
||||
t.Fatalf("listen failed: %v", err)
|
||||
}
|
||||
defer ln.Close()
|
||||
addr := ln.Addr().String()
|
||||
|
||||
cfg.Servers[0].Listen = addr
|
||||
srv := New(cfg)
|
||||
srv.SetListeners([]net.Listener{ln})
|
||||
go srv.Start()
|
||||
defer srv.StopWithTimeout(5 * time.Second)
|
||||
|
||||
var addr string
|
||||
for start := time.Now(); time.Since(start) < 2*time.Second; time.Sleep(10 * time.Millisecond) {
|
||||
listeners := srv.GetListeners()
|
||||
if len(listeners) > 0 {
|
||||
addr = listeners[0].Addr().String()
|
||||
break
|
||||
}
|
||||
}
|
||||
if addr == "" {
|
||||
t.Fatal("server has no listeners")
|
||||
}
|
||||
|
||||
client := &fasthttp.Client{}
|
||||
req := fasthttp.AcquireRequest()
|
||||
resp := fasthttp.AcquireResponse()
|
||||
@ -74,22 +72,19 @@ func TestMonitoringEndpoints_ReachableWhenEnabled(t *testing.T) {
|
||||
}},
|
||||
}
|
||||
|
||||
ln, err := net.Listen("tcp", "127.0.0.1:0")
|
||||
if err != nil {
|
||||
t.Fatalf("listen failed: %v", err)
|
||||
}
|
||||
defer ln.Close()
|
||||
addr := ln.Addr().String()
|
||||
|
||||
cfg.Servers[0].Listen = addr
|
||||
srv := New(cfg)
|
||||
srv.SetListeners([]net.Listener{ln})
|
||||
go srv.Start()
|
||||
defer srv.StopWithTimeout(5 * time.Second)
|
||||
|
||||
var addr string
|
||||
for start := time.Now(); time.Since(start) < 2*time.Second; time.Sleep(10 * time.Millisecond) {
|
||||
listeners := srv.GetListeners()
|
||||
if len(listeners) > 0 {
|
||||
addr = listeners[0].Addr().String()
|
||||
break
|
||||
}
|
||||
}
|
||||
if addr == "" {
|
||||
t.Fatal("server has no listeners")
|
||||
}
|
||||
|
||||
client := &fasthttp.Client{}
|
||||
req := fasthttp.AcquireRequest()
|
||||
resp := fasthttp.AcquireResponse()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user