From a759fb20ffd31bf26c6223d3833cfd20c5ffe694 Mon Sep 17 00:00:00 2001 From: Andrea Nodari Date: Wed, 1 Jul 2020 17:13:14 +0200 Subject: [PATCH] Create nodes with labels instead of adding them later --- test/integration/scheduler/BUILD | 1 - test/integration/scheduler/predicates_test.go | 25 ++++------ test/integration/scheduler/priorities_test.go | 46 +++++++------------ test/integration/scheduler/util.go | 22 --------- 4 files changed, 25 insertions(+), 69 deletions(-) diff --git a/test/integration/scheduler/BUILD b/test/integration/scheduler/BUILD index 5f15fa440a5..36430d66bc3 100644 --- a/test/integration/scheduler/BUILD +++ b/test/integration/scheduler/BUILD @@ -58,7 +58,6 @@ go_test( "//staging/src/k8s.io/kube-scheduler/extender/v1:go_default_library", "//test/integration/framework:go_default_library", "//test/integration/util:go_default_library", - "//test/utils:go_default_library", "//test/utils/image:go_default_library", "//vendor/github.com/google/go-cmp/cmp:go_default_library", "//vendor/k8s.io/klog/v2:go_default_library", diff --git a/test/integration/scheduler/predicates_test.go b/test/integration/scheduler/predicates_test.go index f700be4754d..fb8f494b962 100644 --- a/test/integration/scheduler/predicates_test.go +++ b/test/integration/scheduler/predicates_test.go @@ -29,7 +29,6 @@ import ( "k8s.io/client-go/kubernetes" st "k8s.io/kubernetes/pkg/scheduler/testing" testutils "k8s.io/kubernetes/test/integration/util" - "k8s.io/kubernetes/test/utils" imageutils "k8s.io/kubernetes/test/utils/image" ) @@ -871,22 +870,14 @@ func TestEvenPodsSpreadPredicate(t *testing.T) { cs := testCtx.ClientSet ns := testCtx.NS.Name defer testutils.CleanupTest(t, testCtx) - // Add 4 nodes. - nodes, err := createNodes(cs, "node", st.MakeNode(), 4) - if err != nil { - t.Fatalf("Cannot create nodes: %v", err) - } - for i, node := range nodes { - // Apply labels "zone: zone-{0,1}" and "node: " to each node. - labels := map[string]string{ - "zone": fmt.Sprintf("zone-%d", i/2), - "node": node.Name, - } - if err = utils.AddLabelsToNode(cs, node.Name, labels); err != nil { - t.Fatalf("Cannot add labels to node: %v", err) - } - if err = waitForNodeLabels(cs, node.Name, labels); err != nil { - t.Fatalf("Failed to poll node labels: %v", err) + + for i := 0; i < 4; i++ { + // Create nodes with labels "zone: zone-{0,1}" and "node: " to each node. + nodeName := fmt.Sprintf("node-%d", i) + zone := fmt.Sprintf("zone-%d", i/2) + _, err := createNode(cs, st.MakeNode().Name(nodeName).Label("node", nodeName).Label("zone", zone).Obj()) + if err != nil { + t.Fatalf("Cannot create node: %v", err) } } diff --git a/test/integration/scheduler/priorities_test.go b/test/integration/scheduler/priorities_test.go index 15606729d89..3d0f08426df 100644 --- a/test/integration/scheduler/priorities_test.go +++ b/test/integration/scheduler/priorities_test.go @@ -28,7 +28,6 @@ import ( "k8s.io/apimachinery/pkg/util/wait" st "k8s.io/kubernetes/pkg/scheduler/testing" testutils "k8s.io/kubernetes/test/integration/util" - "k8s.io/kubernetes/test/utils" imageutils "k8s.io/kubernetes/test/utils/image" ) @@ -40,23 +39,18 @@ func TestNodeAffinity(t *testing.T) { testCtx := initTest(t, "node-affinity") defer testutils.CleanupTest(t, testCtx) // Add a few nodes. - nodes, err := createNodes(testCtx.ClientSet, "testnode", st.MakeNode(), 5) + _, err := createNodes(testCtx.ClientSet, "testnode", st.MakeNode(), 4) if err != nil { t.Fatalf("Cannot create nodes: %v", err) } // Add a label to one of the nodes. - labeledNode := nodes[1] labelKey := "kubernetes.io/node-topologyKey" labelValue := "topologyvalue" - labels := map[string]string{ - labelKey: labelValue, - } - if err = utils.AddLabelsToNode(testCtx.ClientSet, labeledNode.Name, labels); err != nil { - t.Fatalf("Cannot add labels to node: %v", err) - } - if err = waitForNodeLabels(testCtx.ClientSet, labeledNode.Name, labels); err != nil { - t.Fatalf("Adding labels to node didn't succeed: %v", err) + labeledNode, err := createNode(testCtx.ClientSet, st.MakeNode().Name("testnode-4").Label(labelKey, labelValue).Obj()) + if err != nil { + t.Fatalf("Cannot create labeled node: %v", err) } + // Create a pod with node affinity. podName := "pod-with-node-affinity" pod, err := runPausePod(testCtx.ClientSet, initPausePod(&pausePodConfig{ @@ -234,23 +228,17 @@ func TestEvenPodsSpreadPriority(t *testing.T) { cs := testCtx.ClientSet ns := testCtx.NS.Name defer testutils.CleanupTest(t, testCtx) - // Add 4 nodes. - nodes, err := createNodes(cs, "node", st.MakeNode(), 4) - if err != nil { - t.Fatalf("Cannot create nodes: %v", err) - } - for i, node := range nodes { - // Apply labels "zone: zone-{0,1}" and "node: " to each node. - labels := map[string]string{ - "zone": fmt.Sprintf("zone-%d", i/2), - "node": node.Name, - } - if err = utils.AddLabelsToNode(cs, node.Name, labels); err != nil { - t.Fatalf("Cannot add labels to node: %v", err) - } - if err = waitForNodeLabels(cs, node.Name, labels); err != nil { - t.Fatalf("Adding labels to node failed: %v", err) + + var nodes []*v1.Node + for i := 0; i < 4; i++ { + // Create nodes with labels "zone: zone-{0,1}" and "node: " to each node. + nodeName := fmt.Sprintf("node-%d", i) + zone := fmt.Sprintf("zone-%d", i/2) + node, err := createNode(cs, st.MakeNode().Name(nodeName).Label("node", nodeName).Label("zone", zone).Obj()) + if err != nil { + t.Fatalf("Cannot create node: %v", err) } + nodes = append(nodes, node) } // Taint the 0th node @@ -259,10 +247,10 @@ func TestEvenPodsSpreadPriority(t *testing.T) { Value: "v1", Effect: v1.TaintEffectNoSchedule, } - if err = testutils.AddTaintToNode(cs, nodes[0].Name, taint); err != nil { + if err := testutils.AddTaintToNode(cs, nodes[0].Name, taint); err != nil { t.Fatalf("Adding taint to node failed: %v", err) } - if err = testutils.WaitForNodeTaints(cs, nodes[0], []v1.Taint{taint}); err != nil { + if err := testutils.WaitForNodeTaints(cs, nodes[0], []v1.Taint{taint}); err != nil { t.Fatalf("Taint not seen on node: %v", err) } diff --git a/test/integration/scheduler/util.go b/test/integration/scheduler/util.go index daa2f73be87..6c596cda46a 100644 --- a/test/integration/scheduler/util.go +++ b/test/integration/scheduler/util.go @@ -126,28 +126,6 @@ func waitForReflection(t *testing.T, nodeLister corelisters.NodeLister, key stri return err } -// nodeHasLabels returns a function that checks if a node has all the given labels. -func nodeHasLabels(cs clientset.Interface, nodeName string, labels map[string]string) wait.ConditionFunc { - return func() (bool, error) { - node, err := cs.CoreV1().Nodes().Get(context.TODO(), nodeName, metav1.GetOptions{}) - if err != nil { - // This could be a connection error so we want to retry. - return false, nil - } - for k, v := range labels { - if node.Labels == nil || node.Labels[k] != v { - return false, nil - } - } - return true, nil - } -} - -// waitForNodeLabels waits for the given node to have all the given labels. -func waitForNodeLabels(cs clientset.Interface, nodeName string, labels map[string]string) error { - return wait.Poll(time.Millisecond*100, wait.ForeverTestTimeout, nodeHasLabels(cs, nodeName, labels)) -} - func createNode(cs clientset.Interface, node *v1.Node) (*v1.Node, error) { return cs.CoreV1().Nodes().Create(context.TODO(), node, metav1.CreateOptions{}) }