Merge pull request #105509 from ravisantoshgudimetla/fix-integration

[scheduler] [test]: Fix PreferNominatedNode test
This commit is contained in:
Kubernetes Prow Robot 2021-10-11 20:01:46 -07:00 committed by GitHub
commit c2cbf5ff49
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1340,52 +1340,37 @@ func initTestPreferNominatedNode(t *testing.T, nsPrefix string, opts ...schedule
// enabled. // enabled.
func TestPreferNominatedNode(t *testing.T) { func TestPreferNominatedNode(t *testing.T) {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PreferNominatedNode, true)() defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PreferNominatedNode, true)()
testCtx := initTestPreferNominatedNode(t, "perfer-nominated-node")
t.Cleanup(func() {
testutils.CleanupTest(t, testCtx)
})
cs := testCtx.ClientSet
defaultPodRes := &v1.ResourceRequirements{Requests: v1.ResourceList{
v1.ResourceCPU: *resource.NewMilliQuantity(100, resource.DecimalSI),
v1.ResourceMemory: *resource.NewQuantity(100, resource.DecimalSI)},
}
defaultNodeRes := map[v1.ResourceName]string{ defaultNodeRes := map[v1.ResourceName]string{
v1.ResourcePods: "32", v1.ResourcePods: "32",
v1.ResourceCPU: "500m", v1.ResourceCPU: "500m",
v1.ResourceMemory: "500", v1.ResourceMemory: "500",
} }
defaultPodRes := &v1.ResourceRequirements{Requests: v1.ResourceList{
type nodeConfig struct { v1.ResourceCPU: *resource.NewMilliQuantity(100, resource.DecimalSI),
name string v1.ResourceMemory: *resource.NewQuantity(100, resource.DecimalSI)},
res map[v1.ResourceName]string
} }
tests := []struct { tests := []struct {
name string name string
nodes []*nodeConfig nodeNames []string
existingPods []*v1.Pod existingPods []*v1.Pod
pod *v1.Pod pod *v1.Pod
runnningNode string runnningNode string
}{ }{
{ {
name: "nominated node released all resource, preemptor is scheduled to the nominated node", name: "nominated node released all resource, preemptor is scheduled to the nominated node",
nodes: []*nodeConfig{ nodeNames: []string{"node-1", "node-2"},
{name: "node-1", res: defaultNodeRes},
{name: "node-2", res: defaultNodeRes},
},
existingPods: []*v1.Pod{ existingPods: []*v1.Pod{
initPausePod(&pausePodConfig{ initPausePod(&pausePodConfig{
Name: "low-pod1", Name: "low-pod1",
Namespace: testCtx.NS.Name,
Priority: &lowPriority, Priority: &lowPriority,
NodeName: "node-2", NodeName: "node-2",
Resources: defaultPodRes, Resources: defaultPodRes,
}), }),
}, },
pod: initPausePod(&pausePodConfig{ pod: initPausePod(&pausePodConfig{
Name: "preemptor-pod", Name: "preemptor-pod",
Namespace: testCtx.NS.Name, Priority: &highPriority,
Priority: &highPriority,
Resources: &v1.ResourceRequirements{Requests: v1.ResourceList{ Resources: &v1.ResourceRequirements{Requests: v1.ResourceList{
v1.ResourceCPU: *resource.NewMilliQuantity(500, resource.DecimalSI), v1.ResourceCPU: *resource.NewMilliQuantity(500, resource.DecimalSI),
v1.ResourceMemory: *resource.NewQuantity(200, resource.DecimalSI)}, v1.ResourceMemory: *resource.NewQuantity(200, resource.DecimalSI)},
@ -1394,24 +1379,19 @@ func TestPreferNominatedNode(t *testing.T) {
runnningNode: "node-1", runnningNode: "node-1",
}, },
{ {
name: "nominated node cannot pass all the filters, preemptor should find a different node", name: "nominated node cannot pass all the filters, preemptor should find a different node",
nodes: []*nodeConfig{ nodeNames: []string{"node-1", "node-2"},
{name: "node-1", res: defaultNodeRes},
{name: "node-2", res: defaultNodeRes},
},
existingPods: []*v1.Pod{ existingPods: []*v1.Pod{
initPausePod(&pausePodConfig{ initPausePod(&pausePodConfig{
Name: "low-pod1", Name: "low-pod",
Namespace: testCtx.NS.Name,
Priority: &lowPriority, Priority: &lowPriority,
Resources: defaultPodRes, Resources: defaultPodRes,
NodeName: "node-1", NodeName: "node-1",
}), }),
}, },
pod: initPausePod(&pausePodConfig{ pod: initPausePod(&pausePodConfig{
Name: "preemptor-pod", Name: "preemptor-pod1",
Namespace: testCtx.NS.Name, Priority: &highPriority,
Priority: &highPriority,
Resources: &v1.ResourceRequirements{Requests: v1.ResourceList{ Resources: &v1.ResourceRequirements{Requests: v1.ResourceList{
v1.ResourceCPU: *resource.NewMilliQuantity(500, resource.DecimalSI), v1.ResourceCPU: *resource.NewMilliQuantity(500, resource.DecimalSI),
v1.ResourceMemory: *resource.NewQuantity(200, resource.DecimalSI)}, v1.ResourceMemory: *resource.NewQuantity(200, resource.DecimalSI)},
@ -1423,22 +1403,31 @@ func TestPreferNominatedNode(t *testing.T) {
for _, test := range tests { for _, test := range tests {
t.Run(test.name, func(t *testing.T) { t.Run(test.name, func(t *testing.T) {
testCtx := initTestPreferNominatedNode(t, "perfer-nominated-node")
t.Cleanup(func() {
testutils.CleanupTest(t, testCtx)
})
cs := testCtx.ClientSet
nsName := testCtx.NS.Name
var err error var err error
var preemptor *v1.Pod var preemptor *v1.Pod
for _, nodeConf := range test.nodes { for _, nodeName := range test.nodeNames {
_, err := createNode(cs, st.MakeNode().Name(nodeConf.name).Capacity(nodeConf.res).Obj()) _, err := createNode(cs, st.MakeNode().Name(nodeName).Capacity(defaultNodeRes).Obj())
if err != nil { if err != nil {
t.Fatalf("Error creating node %v: %v", nodeConf.name, err) t.Fatalf("Error creating node %v: %v", nodeName, err)
} }
} }
pods := make([]*v1.Pod, len(test.existingPods)) pods := make([]*v1.Pod, len(test.existingPods))
// Create and run existingPods. // Create and run existingPods.
for i, p := range test.existingPods { for i, p := range test.existingPods {
p.Namespace = nsName
pods[i], err = runPausePod(cs, p) pods[i], err = runPausePod(cs, p)
if err != nil { if err != nil {
t.Fatalf("Error running pause pod: %v", err) t.Fatalf("Error running pause pod: %v", err)
} }
} }
test.pod.Namespace = nsName
preemptor, err = createPausePod(cs, test.pod) preemptor, err = createPausePod(cs, test.pod)
if err != nil { if err != nil {
t.Errorf("Error while creating high priority pod: %v", err) t.Errorf("Error while creating high priority pod: %v", err)
@ -1460,10 +1449,6 @@ func TestPreferNominatedNode(t *testing.T) {
if preemptor.Spec.NodeName != test.runnningNode { if preemptor.Spec.NodeName != test.runnningNode {
t.Errorf("Expect pod running on %v, got %v.", test.runnningNode, preemptor.Spec.NodeName) t.Errorf("Expect pod running on %v, got %v.", test.runnningNode, preemptor.Spec.NodeName)
} }
pods = append(pods, preemptor)
// cleanup
defer testutils.CleanupPods(cs, t, pods)
cs.CoreV1().Nodes().DeleteCollection(context.TODO(), metav1.DeleteOptions{}, metav1.ListOptions{})
}) })
} }
} }