fix: stop embedded NATS test servers sleeping 25ms on startup (#804)

This commit is contained in:
Julian Sommer
2026-08-17 10:15:26 +10:00
committed by GitHub
parent c99b91bca5
commit 67b37176a4
+16 -2
View File
@@ -25,7 +25,7 @@ func StartTestNATS(t testing.TB) (*server.Server, *nats.Conn) {
ns, err := server.NewServer(opts)
require.NoError(t, err)
go ns.Start()
require.True(t, ns.ReadyForConnections(5*time.Second))
waitReadyForConnections(t, ns)
t.Cleanup(func() { ns.Shutdown() })
nc, err := nats.Connect(ns.ClientURL())
@@ -34,6 +34,20 @@ func StartTestNATS(t testing.TB) (*server.Server, *nats.Conn) {
return ns, nc
}
// waitReadyForConnections spins until the server accepts connections. Calling
// ReadyForConnections with a longer timeout makes it sleep 25ms per attempt,
// which every embedded server in the suite would otherwise pay.
func waitReadyForConnections(t testing.TB, ns *server.Server) {
t.Helper()
deadline := time.Now().Add(5 * time.Second)
for !ns.ReadyForConnections(time.Millisecond) {
if time.Now().After(deadline) {
t.Fatal("embedded NATS server not ready for connections within 5s")
}
time.Sleep(200 * time.Microsecond)
}
}
// StartTestJetStream starts an embedded NATS server with JetStream enabled
// and returns the server, a connected client, and a jetstream package handle.
// All resources are cleaned up via t.Cleanup.
@@ -50,7 +64,7 @@ func StartTestJetStream(t *testing.T) (*server.Server, *nats.Conn, jetstream.Jet
ns, err := server.NewServer(opts)
require.NoError(t, err)
go ns.Start()
require.True(t, ns.ReadyForConnections(5*time.Second))
waitReadyForConnections(t, ns)
t.Cleanup(func() { ns.Shutdown() })
nc, err := nats.Connect(ns.ClientURL())