mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-01-04 15:05:20 +00:00
Add a function to ensure created nodes are present in scheduler cache
This commit is contained in:
@@ -111,7 +111,7 @@ func initTestDisablePreemption(t *testing.T, nsPrefix string) *testutils.TestCon
|
||||
// to see is in the store. Used to observe reflected events.
|
||||
func waitForReflection(t *testing.T, nodeLister corelisters.NodeLister, key string,
|
||||
passFunc func(n interface{}) bool) error {
|
||||
nodes := []*v1.Node{}
|
||||
var nodes []*v1.Node
|
||||
err := wait.Poll(time.Millisecond*100, wait.ForeverTestTimeout, func() (bool, error) {
|
||||
n, err := nodeLister.Get(key)
|
||||
|
||||
@@ -143,6 +143,9 @@ func createNode(cs clientset.Interface, node *v1.Node) (*v1.Node, error) {
|
||||
|
||||
// createNodes creates `numNodes` nodes. The created node names will be in the
|
||||
// form of "`prefix`-X" where X is an ordinal.
|
||||
// DEPRECATED
|
||||
// use createAndWaitForNodesInCache instead, which ensures the created nodes
|
||||
// to be present in scheduler cache.
|
||||
func createNodes(cs clientset.Interface, prefix string, wrapper *st.NodeWrapper, numNodes int) ([]*v1.Node, error) {
|
||||
nodes := make([]*v1.Node, numNodes)
|
||||
for i := 0; i < numNodes; i++ {
|
||||
@@ -156,6 +159,29 @@ func createNodes(cs clientset.Interface, prefix string, wrapper *st.NodeWrapper,
|
||||
return nodes[:], nil
|
||||
}
|
||||
|
||||
// createAndWaitForNodesInCache calls createNodes(), and wait for the created
|
||||
// nodes to be present in scheduler cache.
|
||||
func createAndWaitForNodesInCache(testCtx *testutils.TestContext, prefix string, wrapper *st.NodeWrapper, numNodes int) ([]*v1.Node, error) {
|
||||
existingNodes := testCtx.Scheduler.SchedulerCache.NodeCount()
|
||||
nodes, err := createNodes(testCtx.ClientSet, prefix, wrapper, numNodes)
|
||||
if err != nil {
|
||||
return nodes, fmt.Errorf("cannot create nodes: %v", err)
|
||||
}
|
||||
return nodes, waitForNodesInCache(testCtx.Scheduler, numNodes+existingNodes)
|
||||
}
|
||||
|
||||
// waitForNodesInCache ensures at least <nodeCount> nodes are present in scheduler cache
|
||||
// within 30 seconds; otherwise returns false.
|
||||
func waitForNodesInCache(sched *scheduler.Scheduler, nodeCount int) error {
|
||||
err := wait.Poll(100*time.Millisecond, wait.ForeverTestTimeout, func() (bool, error) {
|
||||
return sched.SchedulerCache.NodeCount() >= nodeCount, nil
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("cannot obtain available nodes in scheduler cache: %v", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type pausePodConfig struct {
|
||||
Name string
|
||||
Namespace string
|
||||
|
||||
Reference in New Issue
Block a user