diff --git a/staging/src/k8s.io/apiserver/pkg/storage/cacher/ready_test.go b/staging/src/k8s.io/apiserver/pkg/storage/cacher/ready_test.go index 18556630d704..12560a6fa270 100644 --- a/staging/src/k8s.io/apiserver/pkg/storage/cacher/ready_test.go +++ b/staging/src/k8s.io/apiserver/pkg/storage/cacher/ready_test.go @@ -18,6 +18,7 @@ package cacher import ( "context" + "sync" "testing" "time" ) @@ -81,18 +82,26 @@ func Test_newReadyRacy(t *testing.T) { errCh := make(chan error, concurrency) ready := newReady() ready.set(false) + + wg := sync.WaitGroup{} + wg.Add(2 * concurrency) for i := 0; i < concurrency; i++ { go func() { errCh <- ready.wait(context.Background()) }() go func() { + defer wg.Done() ready.set(false) }() go func() { + defer wg.Done() ready.set(true) }() } + // Last one has to be set to true. + wg.Wait() ready.set(true) + for i := 0; i < concurrency; i++ { if err := <-errCh; err != nil { t.Errorf("unexpected error %v on channel %d", err, i)