mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-29 14:37:00 +00:00
Merge pull request #123469 from harshanarayana/hfx/fix/kubelet-log-rotate-race
kubelet: fix flaky unit test with TestRotateLogs due to improper handling of goroutine in the tests
This commit is contained in:
commit
fc7325fbec
@ -157,15 +157,23 @@ func TestRotateLogs(t *testing.T) {
|
||||
},
|
||||
}
|
||||
f.SetFakeContainers(testContainers)
|
||||
go c.processQueueItems(ctx, 1)
|
||||
|
||||
// Push the items into the queue for before starting the worker to avoid issue with the queue being empty.
|
||||
require.NoError(t, c.rotateLogs(ctx))
|
||||
|
||||
pollTimeoutCtx, cancel := context.WithTimeout(ctx, 10*time.Second)
|
||||
defer cancel()
|
||||
err = wait.PollUntilContextCancel(pollTimeoutCtx, 20*time.Millisecond, false, func(ctx context.Context) (done bool, err error) {
|
||||
return c.queue.Len() == 0, nil
|
||||
})
|
||||
require.NoError(t, err)
|
||||
// Start a routine that can monitor the queue and shutdown the queue to trigger the retrun from the processQueueItems
|
||||
// Keeping the monitor duration smaller in order to keep the unwanted delay in the test to a minimal.
|
||||
go func() {
|
||||
pollTimeoutCtx, cancel := context.WithTimeout(ctx, 10*time.Second)
|
||||
defer cancel()
|
||||
err = wait.PollUntilContextCancel(pollTimeoutCtx, 5*time.Millisecond, false, func(ctx context.Context) (done bool, err error) {
|
||||
return c.queue.Len() == 0, nil
|
||||
})
|
||||
require.NoError(t, err)
|
||||
c.queue.ShutDown()
|
||||
}()
|
||||
// This is a blocking call. But the above routine takes care of ensuring that this is terminated once the queue is shutdown
|
||||
c.processQueueItems(ctx, 1)
|
||||
|
||||
timestamp := now.Format(timestampFormat)
|
||||
logs, err := os.ReadDir(dir)
|
||||
@ -176,7 +184,6 @@ func TestRotateLogs(t *testing.T) {
|
||||
assert.Equal(t, testLogs[4]+compressSuffix, logs[2].Name())
|
||||
assert.Equal(t, testLogs[2]+"."+timestamp, logs[3].Name())
|
||||
assert.Equal(t, testLogs[3], logs[4].Name())
|
||||
c.queue.ShutDown()
|
||||
}
|
||||
|
||||
func TestClean(t *testing.T) {
|
||||
|
Loading…
Reference in New Issue
Block a user