Skip to content

Commit 80a0096

Browse files
committed
fix: Add a thread-safe logBuffer for the watchdog unit test.
1 parent 66e3401 commit 80a0096

File tree

1 file changed

+37
-8
lines changed

1 file changed

+37
-8
lines changed

pkg/kubelet/watchdog/watchdog_linux_test.go

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"flag"
2626
"net/http"
2727
"strings"
28+
"sync"
2829
"testing"
2930
"time"
3031

@@ -139,14 +140,7 @@ func TestHealthCheckerStart(t *testing.T) {
139140
for _, tt := range tests {
140141
t.Run(tt.name, func(t *testing.T) {
141142
// Capture logs
142-
var logBuffer bytes.Buffer
143-
flags := &flag.FlagSet{}
144-
klog.InitFlags(flags)
145-
if err := flags.Set("v", "5"); err != nil {
146-
t.Fatal(err)
147-
}
148-
klog.LogToStderr(false)
149-
klog.SetOutput(&logBuffer)
143+
logBuffer := setupLogging(t)
150144

151145
// Mock SdWatchdogEnabled to return a valid value
152146
mockClient := &mockWatchdogClient{
@@ -178,3 +172,38 @@ func TestHealthCheckerStart(t *testing.T) {
178172
})
179173
}
180174
}
175+
176+
// threadSafeBuffer is a thread-safe wrapper around bytes.Buffer.
177+
type threadSafeBuffer struct {
178+
buffer bytes.Buffer
179+
mu sync.Mutex
180+
}
181+
182+
func (b *threadSafeBuffer) Write(p []byte) (n int, err error) {
183+
b.mu.Lock()
184+
defer b.mu.Unlock()
185+
return b.buffer.Write(p)
186+
}
187+
188+
func (b *threadSafeBuffer) String() string {
189+
b.mu.Lock()
190+
defer b.mu.Unlock()
191+
return b.buffer.String()
192+
}
193+
194+
// setupLogging sets up logging to capture output using a thread-safe buffer.
195+
func setupLogging(t *testing.T) *threadSafeBuffer {
196+
flags := &flag.FlagSet{}
197+
klog.InitFlags(flags)
198+
if err := flags.Set("v", "5"); err != nil {
199+
t.Fatal(err)
200+
}
201+
klog.LogToStderr(false)
202+
203+
logBuffer := &threadSafeBuffer{}
204+
205+
// Set the output to the thread-safe buffer
206+
klog.SetOutput(logBuffer)
207+
208+
return logBuffer
209+
}

0 commit comments

Comments
 (0)