mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 12:15:52 +00:00
Merge pull request #128290 from zhifei92/fix-flake-test
Add a thread-safe logBuffer for the watchdog unit test.
This commit is contained in:
commit
5b61f60846
@ -25,6 +25,7 @@ import (
|
||||
"flag"
|
||||
"net/http"
|
||||
"strings"
|
||||
"sync"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
@ -139,14 +140,7 @@ func TestHealthCheckerStart(t *testing.T) {
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
// Capture logs
|
||||
var logBuffer bytes.Buffer
|
||||
flags := &flag.FlagSet{}
|
||||
klog.InitFlags(flags)
|
||||
if err := flags.Set("v", "5"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
klog.LogToStderr(false)
|
||||
klog.SetOutput(&logBuffer)
|
||||
logBuffer := setupLogging(t)
|
||||
|
||||
// Mock SdWatchdogEnabled to return a valid value
|
||||
mockClient := &mockWatchdogClient{
|
||||
@ -178,3 +172,38 @@ func TestHealthCheckerStart(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// threadSafeBuffer is a thread-safe wrapper around bytes.Buffer.
|
||||
type threadSafeBuffer struct {
|
||||
buffer bytes.Buffer
|
||||
mu sync.Mutex
|
||||
}
|
||||
|
||||
func (b *threadSafeBuffer) Write(p []byte) (n int, err error) {
|
||||
b.mu.Lock()
|
||||
defer b.mu.Unlock()
|
||||
return b.buffer.Write(p)
|
||||
}
|
||||
|
||||
func (b *threadSafeBuffer) String() string {
|
||||
b.mu.Lock()
|
||||
defer b.mu.Unlock()
|
||||
return b.buffer.String()
|
||||
}
|
||||
|
||||
// setupLogging sets up logging to capture output using a thread-safe buffer.
|
||||
func setupLogging(t *testing.T) *threadSafeBuffer {
|
||||
flags := &flag.FlagSet{}
|
||||
klog.InitFlags(flags)
|
||||
if err := flags.Set("v", "5"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
klog.LogToStderr(false)
|
||||
|
||||
logBuffer := &threadSafeBuffer{}
|
||||
|
||||
// Set the output to the thread-safe buffer
|
||||
klog.SetOutput(logBuffer)
|
||||
|
||||
return logBuffer
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user