Wait for Scheduler cache empty.

Signed-off-by: Klaus Ma <klaus1982.cn@gmail.com>
pull/8/head
Klaus Ma 2018-08-31 19:42:10 +08:00
parent cd06419973
commit 26142e614c
3 changed files with 21 additions and 1 deletions

View File

@ -74,6 +74,11 @@ func (sched *Scheduler) StopEverything() {
close(sched.config.StopEverything)
}
// Cache returns the cache in scheduler for test to check the data in scheduler.
func (sched *Scheduler) Cache() schedulercache.Cache {
return sched.config.SchedulerCache
}
// Configurator defines I/O, caching, and other functionality needed to
// construct a new scheduler. An implementation of this can be seen in
// factory.go.

View File

@ -104,7 +104,7 @@ func TestTaintNodeByCondition(t *testing.T) {
informers.Extensions().V1beta1().DaemonSets(),
nil, // CloudProvider
cs,
time.Second, // Node monitor grace period
time.Hour, // Node monitor grace period
time.Second, // Node startup grace period
time.Second, // Node monitor period
time.Second, // Pod eviction timeout
@ -125,6 +125,8 @@ func TestTaintNodeByCondition(t *testing.T) {
// Waiting for all controller sync.
internalInformers.Start(controllerCh)
internalInformers.WaitForCacheSync(controllerCh)
informers.Start(controllerCh)
informers.WaitForCacheSync(controllerCh)
// -------------------------------------------
// Test TaintNodeByCondition feature.
@ -669,6 +671,7 @@ func TestTaintNodeByCondition(t *testing.T) {
cleanupPods(cs, t, pods)
cleanupNodes(cs, t)
waitForSchedulerCacheCleanup(context.scheduler, t)
})
}
}

View File

@ -679,3 +679,15 @@ func cleanupPodsInNamespace(cs clientset.Interface, t *testing.T, ns string) {
t.Errorf("error while waiting for pods in namespace %v: %v", ns, err)
}
}
func waitForSchedulerCacheCleanup(sched *scheduler.Scheduler, t *testing.T) {
schedulerCacheIsEmpty := func() (bool, error) {
snapshot := sched.Cache().Snapshot()
return len(snapshot.Nodes) == 0 && len(snapshot.AssumedPods) == 0, nil
}
if err := wait.Poll(time.Second, wait.ForeverTestTimeout, schedulerCacheIsEmpty); err != nil {
t.Errorf("Failed to wait for scheduler cache cleanup: %v", err)
}
}