From bc9c461402ea064501890d5d382c3270b15b5235 Mon Sep 17 00:00:00 2001 From: Abhishek Gupta Date: Tue, 7 Jun 2016 11:29:38 -0700 Subject: [PATCH] Adding test case for scheduler NodeConditionPredicate --- plugin/pkg/scheduler/factory/factory_test.go | 43 ++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/plugin/pkg/scheduler/factory/factory_test.go b/plugin/pkg/scheduler/factory/factory_test.go index 4369b40eb55..8439a5540b5 100644 --- a/plugin/pkg/scheduler/factory/factory_test.go +++ b/plugin/pkg/scheduler/factory/factory_test.go @@ -430,3 +430,46 @@ func TestInvalidFactoryArgs(t *testing.T) { } } + +func TestNodeConditionPredicate(t *testing.T) { + nodeFunc := getNodeConditionPredicate() + nodeList := &api.NodeList{ + Items: []api.Node{ + // node1 considered + {ObjectMeta: api.ObjectMeta{Name: "node1"}, Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeReady, Status: api.ConditionTrue}}}}, + // node2 ignored - node not Ready + {ObjectMeta: api.ObjectMeta{Name: "node2"}, Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeReady, Status: api.ConditionFalse}}}}, + // node3 ignored - node out of disk + {ObjectMeta: api.ObjectMeta{Name: "node3"}, Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeOutOfDisk, Status: api.ConditionTrue}}}}, + // node4 considered + {ObjectMeta: api.ObjectMeta{Name: "node4"}, Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeOutOfDisk, Status: api.ConditionFalse}}}}, + + // node5 ignored - node out of disk + {ObjectMeta: api.ObjectMeta{Name: "node5"}, Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeReady, Status: api.ConditionTrue}, {Type: api.NodeOutOfDisk, Status: api.ConditionTrue}}}}, + // node6 considered + {ObjectMeta: api.ObjectMeta{Name: "node6"}, Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeReady, Status: api.ConditionTrue}, {Type: api.NodeOutOfDisk, Status: api.ConditionFalse}}}}, + // node7 ignored - node out of disk, node not Ready + {ObjectMeta: api.ObjectMeta{Name: "node7"}, Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeReady, Status: api.ConditionFalse}, {Type: api.NodeOutOfDisk, Status: api.ConditionTrue}}}}, + // node8 ignored - node not Ready + {ObjectMeta: api.ObjectMeta{Name: "node8"}, Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeReady, Status: api.ConditionFalse}, {Type: api.NodeOutOfDisk, Status: api.ConditionFalse}}}}, + + // node9 ignored - node unschedulable + {ObjectMeta: api.ObjectMeta{Name: "node9"}, Spec: api.NodeSpec{Unschedulable: true}}, + // node10 considered + {ObjectMeta: api.ObjectMeta{Name: "node10"}, Spec: api.NodeSpec{Unschedulable: false}}, + // node11 considered + {ObjectMeta: api.ObjectMeta{Name: "node11"}}, + }, + } + + nodeNames := []string{} + for _, node := range nodeList.Items { + if nodeFunc(node) { + nodeNames = append(nodeNames, node.Name) + } + } + expectedNodes := []string{"node1", "node4", "node6", "node10", "node11"} + if !reflect.DeepEqual(expectedNodes, nodeNames) { + t.Errorf("expected: %v, got %v", expectedNodes, nodeNames) + } +}