mirror of https://github.com/k3s-io/k3s
Wait for Scheduler cache empty.
Signed-off-by: Klaus Ma <klaus1982.cn@gmail.com>pull/8/head
parent
cd06419973
commit
26142e614c
|
@ -74,6 +74,11 @@ func (sched *Scheduler) StopEverything() {
|
||||||
close(sched.config.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
|
// Configurator defines I/O, caching, and other functionality needed to
|
||||||
// construct a new scheduler. An implementation of this can be seen in
|
// construct a new scheduler. An implementation of this can be seen in
|
||||||
// factory.go.
|
// factory.go.
|
||||||
|
|
|
@ -104,7 +104,7 @@ func TestTaintNodeByCondition(t *testing.T) {
|
||||||
informers.Extensions().V1beta1().DaemonSets(),
|
informers.Extensions().V1beta1().DaemonSets(),
|
||||||
nil, // CloudProvider
|
nil, // CloudProvider
|
||||||
cs,
|
cs,
|
||||||
time.Second, // Node monitor grace period
|
time.Hour, // Node monitor grace period
|
||||||
time.Second, // Node startup grace period
|
time.Second, // Node startup grace period
|
||||||
time.Second, // Node monitor period
|
time.Second, // Node monitor period
|
||||||
time.Second, // Pod eviction timeout
|
time.Second, // Pod eviction timeout
|
||||||
|
@ -125,6 +125,8 @@ func TestTaintNodeByCondition(t *testing.T) {
|
||||||
// Waiting for all controller sync.
|
// Waiting for all controller sync.
|
||||||
internalInformers.Start(controllerCh)
|
internalInformers.Start(controllerCh)
|
||||||
internalInformers.WaitForCacheSync(controllerCh)
|
internalInformers.WaitForCacheSync(controllerCh)
|
||||||
|
informers.Start(controllerCh)
|
||||||
|
informers.WaitForCacheSync(controllerCh)
|
||||||
|
|
||||||
// -------------------------------------------
|
// -------------------------------------------
|
||||||
// Test TaintNodeByCondition feature.
|
// Test TaintNodeByCondition feature.
|
||||||
|
@ -669,6 +671,7 @@ func TestTaintNodeByCondition(t *testing.T) {
|
||||||
|
|
||||||
cleanupPods(cs, t, pods)
|
cleanupPods(cs, t, pods)
|
||||||
cleanupNodes(cs, t)
|
cleanupNodes(cs, t)
|
||||||
|
waitForSchedulerCacheCleanup(context.scheduler, t)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue