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
|
package server
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"net"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"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 := New(cfg)
|
||||||
|
srv.SetListeners([]net.Listener{ln})
|
||||||
go srv.Start()
|
go srv.Start()
|
||||||
defer srv.StopWithTimeout(5 * time.Second)
|
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{}
|
client := &fasthttp.Client{}
|
||||||
req := fasthttp.AcquireRequest()
|
req := fasthttp.AcquireRequest()
|
||||||
resp := fasthttp.AcquireResponse()
|
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 := New(cfg)
|
||||||
|
srv.SetListeners([]net.Listener{ln})
|
||||||
go srv.Start()
|
go srv.Start()
|
||||||
defer srv.StopWithTimeout(5 * time.Second)
|
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{}
|
client := &fasthttp.Client{}
|
||||||
req := fasthttp.AcquireRequest()
|
req := fasthttp.AcquireRequest()
|
||||||
resp := fasthttp.AcquireResponse()
|
resp := fasthttp.AcquireResponse()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user