From 601c0e359dc959bbfaf42c5d8a8a0a9a2175db74 Mon Sep 17 00:00:00 2001 From: Lukasz Szaszkiewicz Date: Tue, 28 Jan 2025 13:31:43 +0100 Subject: [PATCH] cacher: decrease the running time of TestConsistentReadFallback --- .../storage/cacher/cacher_whitebox_test.go | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/staging/src/k8s.io/apiserver/pkg/storage/cacher/cacher_whitebox_test.go b/staging/src/k8s.io/apiserver/pkg/storage/cacher/cacher_whitebox_test.go index ed9394193c0..08002c5fca5 100644 --- a/staging/src/k8s.io/apiserver/pkg/storage/cacher/cacher_whitebox_test.go +++ b/staging/src/k8s.io/apiserver/pkg/storage/cacher/cacher_whitebox_test.go @@ -435,17 +435,15 @@ apiserver_watch_cache_consistent_read_total{fallback="true", resource="pods", su podList.ResourceVersion = tc.watchCacheRV return nil } - // TODO: Use fake clock for this test to reduce execution time. - cacher, _, err := newTestCacher(backingStorage) + c := testingclock.NewFakeClock(time.Now()) + cacher, _, err := newTestCacherWithoutSyncing(backingStorage, c) if err != nil { t.Fatalf("Couldn't create cacher: %v", err) } defer cacher.Stop() proxy := NewCacheProxy(cacher, backingStorage) - if !utilfeature.DefaultFeatureGate.Enabled(features.ResilientWatchCacheInitialization) { - if err := cacher.ready.wait(context.Background()); err != nil { - t.Fatalf("unexpected error waiting for the cache to be ready") - } + if err := cacher.ready.wait(context.Background()); err != nil { + t.Fatalf("unexpected error waiting for the cache to be ready") } if fmt.Sprintf("%d", cacher.watchCache.resourceVersion) != tc.watchCacheRV { @@ -466,8 +464,28 @@ apiserver_watch_cache_consistent_read_total{fallback="true", resource="pods", su return nil } result := &example.PodList{} + + ctx, clockStepCancelFn := context.WithTimeout(context.TODO(), time.Minute) + defer clockStepCancelFn() + if tc.expectBlock { + go func(ctx context.Context) { + for { + select { + case <-ctx.Done(): + return + default: + if c.HasWaiters() { + c.Step(blockTimeout) + } + time.Sleep(time.Millisecond) + } + } + }(ctx) + } + start := cacher.clock.Now() err = proxy.GetList(context.TODO(), "pods/ns", storage.ListOptions{ResourceVersion: ""}, result) + clockStepCancelFn() duration := cacher.clock.Since(start) if (err != nil) != tc.expectError { t.Fatalf("Unexpected error err: %v", err)