mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 05:57:25 +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"
|
"flag"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -139,14 +140,7 @@ func TestHealthCheckerStart(t *testing.T) {
|
|||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
// Capture logs
|
// Capture logs
|
||||||
var logBuffer bytes.Buffer
|
logBuffer := setupLogging(t)
|
||||||
flags := &flag.FlagSet{}
|
|
||||||
klog.InitFlags(flags)
|
|
||||||
if err := flags.Set("v", "5"); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
klog.LogToStderr(false)
|
|
||||||
klog.SetOutput(&logBuffer)
|
|
||||||
|
|
||||||
// Mock SdWatchdogEnabled to return a valid value
|
// Mock SdWatchdogEnabled to return a valid value
|
||||||
mockClient := &mockWatchdogClient{
|
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