Skip to content

Commit e279ae4

Browse files
authored
Merge pull request kubernetes#129852 from p0lyn0mial/upstream-clock-test-cache
cacher: decrease the running time of TestConsistentReadFallback
2 parents 87fcae2 + 601c0e3 commit e279ae4

File tree

1 file changed

+29
-11
lines changed

1 file changed

+29
-11
lines changed

staging/src/k8s.io/apiserver/pkg/storage/cacher/cacher_whitebox_test.go

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ import (
6161
"k8s.io/utils/pointer"
6262
)
6363

64-
func newTestCacherWithoutSyncing(s storage.Interface) (*Cacher, storage.Versioner, error) {
64+
func newTestCacherWithoutSyncing(s storage.Interface, c clock.WithTicker) (*Cacher, storage.Versioner, error) {
6565
prefix := "pods"
6666
config := Config{
6767
Storage: s,
@@ -85,15 +85,15 @@ func newTestCacherWithoutSyncing(s storage.Interface) (*Cacher, storage.Versione
8585
NewFunc: func() runtime.Object { return &example.Pod{} },
8686
NewListFunc: func() runtime.Object { return &example.PodList{} },
8787
Codec: codecs.LegacyCodec(examplev1.SchemeGroupVersion),
88-
Clock: clock.RealClock{},
88+
Clock: c,
8989
}
9090
cacher, err := NewCacherFromConfig(config)
9191

9292
return cacher, storage.APIObjectVersioner{}, err
9393
}
9494

9595
func newTestCacher(s storage.Interface) (*Cacher, storage.Versioner, error) {
96-
cacher, versioner, err := newTestCacherWithoutSyncing(s)
96+
cacher, versioner, err := newTestCacherWithoutSyncing(s, clock.RealClock{})
9797
if err != nil {
9898
return nil, versioner, err
9999
}
@@ -435,17 +435,15 @@ apiserver_watch_cache_consistent_read_total{fallback="true", resource="pods", su
435435
podList.ResourceVersion = tc.watchCacheRV
436436
return nil
437437
}
438-
// TODO: Use fake clock for this test to reduce execution time.
439-
cacher, _, err := newTestCacher(backingStorage)
438+
c := testingclock.NewFakeClock(time.Now())
439+
cacher, _, err := newTestCacherWithoutSyncing(backingStorage, c)
440440
if err != nil {
441441
t.Fatalf("Couldn't create cacher: %v", err)
442442
}
443443
defer cacher.Stop()
444444
proxy := NewCacheProxy(cacher, backingStorage)
445-
if !utilfeature.DefaultFeatureGate.Enabled(features.ResilientWatchCacheInitialization) {
446-
if err := cacher.ready.wait(context.Background()); err != nil {
447-
t.Fatalf("unexpected error waiting for the cache to be ready")
448-
}
445+
if err := cacher.ready.wait(context.Background()); err != nil {
446+
t.Fatalf("unexpected error waiting for the cache to be ready")
449447
}
450448

451449
if fmt.Sprintf("%d", cacher.watchCache.resourceVersion) != tc.watchCacheRV {
@@ -466,8 +464,28 @@ apiserver_watch_cache_consistent_read_total{fallback="true", resource="pods", su
466464
return nil
467465
}
468466
result := &example.PodList{}
467+
468+
ctx, clockStepCancelFn := context.WithTimeout(context.TODO(), time.Minute)
469+
defer clockStepCancelFn()
470+
if tc.expectBlock {
471+
go func(ctx context.Context) {
472+
for {
473+
select {
474+
case <-ctx.Done():
475+
return
476+
default:
477+
if c.HasWaiters() {
478+
c.Step(blockTimeout)
479+
}
480+
time.Sleep(time.Millisecond)
481+
}
482+
}
483+
}(ctx)
484+
}
485+
469486
start := cacher.clock.Now()
470487
err = proxy.GetList(context.TODO(), "pods/ns", storage.ListOptions{ResourceVersion: ""}, result)
488+
clockStepCancelFn()
471489
duration := cacher.clock.Since(start)
472490
if (err != nil) != tc.expectError {
473491
t.Fatalf("Unexpected error err: %v", err)
@@ -605,7 +623,7 @@ func TestTooManyRequestsNotReturned(t *testing.T) {
605623

606624
dummyErr := fmt.Errorf("dummy")
607625
backingStorage := &dummyStorage{err: dummyErr}
608-
cacher, _, err := newTestCacherWithoutSyncing(backingStorage)
626+
cacher, _, err := newTestCacherWithoutSyncing(backingStorage, clock.RealClock{})
609627
if err != nil {
610628
t.Fatalf("Couldn't create cacher: %v", err)
611629
}
@@ -732,7 +750,7 @@ func TestWatchNotHangingOnStartupFailure(t *testing.T) {
732750
// constantly failing lists to the underlying storage.
733751
dummyErr := fmt.Errorf("dummy")
734752
backingStorage := &dummyStorage{err: dummyErr}
735-
cacher, _, err := newTestCacherWithoutSyncing(backingStorage)
753+
cacher, _, err := newTestCacherWithoutSyncing(backingStorage, clock.RealClock{})
736754
if err != nil {
737755
t.Fatalf("Couldn't create cacher: %v", err)
738756
}

0 commit comments

Comments
 (0)