Skip to content

Commit 8f550c5

Browse files
committed
added a WaitGroup in logger internal tests to remove the race condition
1 parent d268a3c commit 8f550c5

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

coderd/httpmw/logger_internal_test.go

+5-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"net/http"
66
"net/http/httptest"
7+
"sync"
78
"testing"
89
"time"
910

@@ -95,7 +96,7 @@ func TestLoggerMiddleware_WebSocket(t *testing.T) {
9596
sink := &fakeSink{}
9697
logger := slog.Make(sink)
9798
logger = logger.Leveled(slog.LevelDebug)
98-
99+
wg := sync.WaitGroup{}
99100
// Create a test handler to simulate a WebSocket connection
100101
testHandler := http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
101102
conn, err := websocket.Accept(rw, r, nil)
@@ -105,6 +106,7 @@ func TestLoggerMiddleware_WebSocket(t *testing.T) {
105106
}
106107
requestLgr := RequestLoggerFromContext(r.Context())
107108
requestLgr.WriteLog(r.Context(), http.StatusSwitchingProtocols)
109+
wg.Done()
108110
defer conn.Close(websocket.StatusNormalClosure, "")
109111

110112
// Send a couple of messages for testing
@@ -122,16 +124,16 @@ func TestLoggerMiddleware_WebSocket(t *testing.T) {
122124
wrappedHandler.ServeHTTP(sw, r)
123125
})
124126

125-
// Create a test HTTP request
126127
srv := httptest.NewServer(customHandler)
127128
defer srv.Close()
129+
wg.Add(1)
128130
// nolint: bodyclose
129131
conn, _, err := websocket.Dial(ctx, srv.URL, nil)
130132
if err != nil {
131133
t.Fatalf("failed to create WebSocket connection: %v", err)
132134
}
133135
defer conn.Close(websocket.StatusNormalClosure, "")
134-
136+
wg.Wait()
135137
if len(sink.entries) != 1 {
136138
t.Fatalf("expected 1 log entry, got %d", len(sink.entries))
137139
}

0 commit comments

Comments
 (0)