diff --git a/pkg/scheduler/extender_test.go b/pkg/scheduler/extender_test.go index 83e4fa29a57..d137edf01a8 100644 --- a/pkg/scheduler/extender_test.go +++ b/pkg/scheduler/extender_test.go @@ -22,7 +22,7 @@ import ( "testing" "time" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/sets" @@ -58,10 +58,12 @@ func TestGenericSchedulerWithExtenders(t *testing.T) { }, extenders: []st.FakeExtender{ { - Predicates: []st.FitPredicate{st.TruePredicateExtender}, + ExtenderName: "FakeExtender1", + Predicates: []st.FitPredicate{st.TruePredicateExtender}, }, { - Predicates: []st.FitPredicate{st.ErrorPredicateExtender}, + ExtenderName: "FakeExtender2", + Predicates: []st.FitPredicate{st.ErrorPredicateExtender}, }, }, nodes: []string{"node1", "node2"}, @@ -76,10 +78,12 @@ func TestGenericSchedulerWithExtenders(t *testing.T) { }, extenders: []st.FakeExtender{ { - Predicates: []st.FitPredicate{st.TruePredicateExtender}, + ExtenderName: "FakeExtender1", + Predicates: []st.FitPredicate{st.TruePredicateExtender}, }, { - Predicates: []st.FitPredicate{st.FalsePredicateExtender}, + ExtenderName: "FakeExtender2", + Predicates: []st.FitPredicate{st.FalsePredicateExtender}, }, }, nodes: []string{"node1", "node2"}, @@ -94,10 +98,12 @@ func TestGenericSchedulerWithExtenders(t *testing.T) { }, extenders: []st.FakeExtender{ { - Predicates: []st.FitPredicate{st.TruePredicateExtender}, + ExtenderName: "FakeExtender1", + Predicates: []st.FitPredicate{st.TruePredicateExtender}, }, { - Predicates: []st.FitPredicate{st.Node1PredicateExtender}, + ExtenderName: "FakeExtender2", + Predicates: []st.FitPredicate{st.Node1PredicateExtender}, }, }, nodes: []string{"node1", "node2"}, @@ -116,10 +122,12 @@ func TestGenericSchedulerWithExtenders(t *testing.T) { }, extenders: []st.FakeExtender{ { - Predicates: []st.FitPredicate{st.Node2PredicateExtender}, + ExtenderName: "FakeExtender1", + Predicates: []st.FitPredicate{st.Node2PredicateExtender}, }, { - Predicates: []st.FitPredicate{st.Node1PredicateExtender}, + ExtenderName: "FakeExtender2", + Predicates: []st.FitPredicate{st.Node1PredicateExtender}, }, }, nodes: []string{"node1", "node2"}, @@ -134,6 +142,7 @@ func TestGenericSchedulerWithExtenders(t *testing.T) { }, extenders: []st.FakeExtender{ { + ExtenderName: "FakeExtender1", Predicates: []st.FitPredicate{st.TruePredicateExtender}, Prioritizers: []st.PriorityConfig{{Function: st.ErrorPrioritizerExtender, Weight: 10}}, Weight: 1, @@ -155,11 +164,13 @@ func TestGenericSchedulerWithExtenders(t *testing.T) { }, extenders: []st.FakeExtender{ { + ExtenderName: "FakeExtender1", Predicates: []st.FitPredicate{st.TruePredicateExtender}, Prioritizers: []st.PriorityConfig{{Function: st.Node1PrioritizerExtender, Weight: 10}}, Weight: 1, }, { + ExtenderName: "FakeExtender2", Predicates: []st.FitPredicate{st.TruePredicateExtender}, Prioritizers: []st.PriorityConfig{{Function: st.Node2PrioritizerExtender, Weight: 10}}, Weight: 5, @@ -182,6 +193,7 @@ func TestGenericSchedulerWithExtenders(t *testing.T) { }, extenders: []st.FakeExtender{ { + ExtenderName: "FakeExtender1", Predicates: []st.FitPredicate{st.TruePredicateExtender}, Prioritizers: []st.PriorityConfig{{Function: st.Node1PrioritizerExtender, Weight: 10}}, Weight: 1, @@ -211,6 +223,7 @@ func TestGenericSchedulerWithExtenders(t *testing.T) { }, extenders: []st.FakeExtender{ { + ExtenderName: "FakeExtender1", Predicates: []st.FitPredicate{st.ErrorPredicateExtender}, Prioritizers: []st.PriorityConfig{{Function: st.ErrorPrioritizerExtender, Weight: 10}}, UnInterested: true, @@ -238,11 +251,13 @@ func TestGenericSchedulerWithExtenders(t *testing.T) { }, extenders: []st.FakeExtender{ { - Predicates: []st.FitPredicate{st.ErrorPredicateExtender}, - Ignorable: true, + ExtenderName: "FakeExtender1", + Predicates: []st.FitPredicate{st.ErrorPredicateExtender}, + Ignorable: true, }, { - Predicates: []st.FitPredicate{st.Node1PredicateExtender}, + ExtenderName: "FakeExtender2", + Predicates: []st.FitPredicate{st.Node1PredicateExtender}, }, }, nodes: []string{"node1", "node2"}, diff --git a/pkg/scheduler/framework/plugins/defaultpreemption/default_preemption_test.go b/pkg/scheduler/framework/plugins/defaultpreemption/default_preemption_test.go index 9671b39fb46..691427d1dda 100644 --- a/pkg/scheduler/framework/plugins/defaultpreemption/default_preemption_test.go +++ b/pkg/scheduler/framework/plugins/defaultpreemption/default_preemption_test.go @@ -227,7 +227,10 @@ func TestPostFilter(t *testing.T) { "node1": framework.NewStatus(framework.Unschedulable), "node2": framework.NewStatus(framework.Unschedulable), }, - extender: &st.FakeExtender{Predicates: []st.FitPredicate{st.Node1PredicateExtender}}, + extender: &st.FakeExtender{ + ExtenderName: "FakeExtender1", + Predicates: []st.FitPredicate{st.Node1PredicateExtender}, + }, wantResult: framework.NewPostFilterResultWithNominatedNode("node1"), wantStatus: framework.NewStatus(framework.Success), }, @@ -1506,8 +1509,14 @@ func TestPreempt(t *testing.T) { }, nodeNames: []string{"node1", "node2", "node3"}, extenders: []*st.FakeExtender{ - {Predicates: []st.FitPredicate{st.TruePredicateExtender}}, - {Predicates: []st.FitPredicate{st.Node1PredicateExtender}}, + { + ExtenderName: "FakeExtender1", + Predicates: []st.FitPredicate{st.TruePredicateExtender}, + }, + { + ExtenderName: "FakeExtender2", + Predicates: []st.FitPredicate{st.Node1PredicateExtender}, + }, }, registerPlugin: st.RegisterPluginAsExtensions(noderesources.Name, nodeResourcesFitFunc, "Filter", "PreFilter"), want: framework.NewPostFilterResultWithNominatedNode("node1"), @@ -1523,7 +1532,10 @@ func TestPreempt(t *testing.T) { }, nodeNames: []string{"node1", "node2", "node3"}, extenders: []*st.FakeExtender{ - {Predicates: []st.FitPredicate{st.FalsePredicateExtender}}, + { + ExtenderName: "FakeExtender1", + Predicates: []st.FitPredicate{st.FalsePredicateExtender}, + }, }, registerPlugin: st.RegisterPluginAsExtensions(noderesources.Name, nodeResourcesFitFunc, "Filter", "PreFilter"), want: nil, @@ -1539,8 +1551,15 @@ func TestPreempt(t *testing.T) { }, nodeNames: []string{"node1", "node2", "node3"}, extenders: []*st.FakeExtender{ - {Predicates: []st.FitPredicate{st.ErrorPredicateExtender}, Ignorable: true}, - {Predicates: []st.FitPredicate{st.Node1PredicateExtender}}, + { + Predicates: []st.FitPredicate{st.ErrorPredicateExtender}, + Ignorable: true, + ExtenderName: "FakeExtender1", + }, + { + Predicates: []st.FitPredicate{st.Node1PredicateExtender}, + ExtenderName: "FakeExtender2", + }, }, registerPlugin: st.RegisterPluginAsExtensions(noderesources.Name, nodeResourcesFitFunc, "Filter", "PreFilter"), want: framework.NewPostFilterResultWithNominatedNode("node1"), @@ -1556,8 +1575,15 @@ func TestPreempt(t *testing.T) { }, nodeNames: []string{"node1", "node2"}, extenders: []*st.FakeExtender{ - {Predicates: []st.FitPredicate{st.Node1PredicateExtender}, UnInterested: true}, - {Predicates: []st.FitPredicate{st.TruePredicateExtender}}, + { + ExtenderName: "FakeExtender1", + Predicates: []st.FitPredicate{st.Node1PredicateExtender}, + UnInterested: true, + }, + { + ExtenderName: "FakeExtender2", + Predicates: []st.FitPredicate{st.TruePredicateExtender}, + }, }, registerPlugin: st.RegisterPluginAsExtensions(noderesources.Name, nodeResourcesFitFunc, "Filter", "PreFilter"), // sum of priorities of all victims on node1 is larger than node2, node2 is chosen. diff --git a/pkg/scheduler/generic_scheduler_test.go b/pkg/scheduler/generic_scheduler_test.go index c0da6f3f83a..b40dad8d9fa 100644 --- a/pkg/scheduler/generic_scheduler_test.go +++ b/pkg/scheduler/generic_scheduler_test.go @@ -285,7 +285,8 @@ func TestFindNodesThatPassExtenders(t *testing.T) { name: "error", extenders: []st.FakeExtender{ { - Predicates: []st.FitPredicate{st.ErrorPredicateExtender}, + ExtenderName: "FakeExtender1", + Predicates: []st.FitPredicate{st.ErrorPredicateExtender}, }, }, nodes: makeNodeList([]string{"a"}), @@ -296,7 +297,8 @@ func TestFindNodesThatPassExtenders(t *testing.T) { name: "success", extenders: []st.FakeExtender{ { - Predicates: []st.FitPredicate{st.TruePredicateExtender}, + ExtenderName: "FakeExtender1", + Predicates: []st.FitPredicate{st.TruePredicateExtender}, }, }, nodes: makeNodeList([]string{"a"}), @@ -309,6 +311,7 @@ func TestFindNodesThatPassExtenders(t *testing.T) { name: "unschedulable", extenders: []st.FakeExtender{ { + ExtenderName: "FakeExtender1", Predicates: []st.FitPredicate{func(pod *v1.Pod, node *v1.Node) *framework.Status { if node.Name == "a" { return framework.NewStatus(framework.Success) @@ -329,6 +332,7 @@ func TestFindNodesThatPassExtenders(t *testing.T) { name: "unschedulable and unresolvable", extenders: []st.FakeExtender{ { + ExtenderName: "FakeExtender1", Predicates: []st.FitPredicate{func(pod *v1.Pod, node *v1.Node) *framework.Status { if node.Name == "a" { return framework.NewStatus(framework.Success) @@ -353,6 +357,7 @@ func TestFindNodesThatPassExtenders(t *testing.T) { name: "extender may overwrite the statuses", extenders: []st.FakeExtender{ { + ExtenderName: "FakeExtender1", Predicates: []st.FitPredicate{func(pod *v1.Pod, node *v1.Node) *framework.Status { if node.Name == "a" { return framework.NewStatus(framework.Success) @@ -379,6 +384,7 @@ func TestFindNodesThatPassExtenders(t *testing.T) { name: "multiple extenders", extenders: []st.FakeExtender{ { + ExtenderName: "FakeExtender1", Predicates: []st.FitPredicate{func(pod *v1.Pod, node *v1.Node) *framework.Status { if node.Name == "a" { return framework.NewStatus(framework.Success) @@ -390,6 +396,7 @@ func TestFindNodesThatPassExtenders(t *testing.T) { }}, }, { + ExtenderName: "FakeExtender1", Predicates: []st.FitPredicate{func(pod *v1.Pod, node *v1.Node) *framework.Status { if node.Name == "a" { return framework.NewStatus(framework.Success) diff --git a/pkg/scheduler/testing/fake_extender.go b/pkg/scheduler/testing/fake_extender.go index 95fe57da85d..ab66d6c8ca8 100644 --- a/pkg/scheduler/testing/fake_extender.go +++ b/pkg/scheduler/testing/fake_extender.go @@ -143,6 +143,9 @@ func (pl *node2PrioritizerPlugin) ScoreExtensions() framework.ScoreExtensions { // FakeExtender is a data struct which implements the Extender interface. type FakeExtender struct { + // ExtenderName indicates this fake extender's name. + // Note that extender name should be unique. + ExtenderName string Predicates []FitPredicate Prioritizers []PriorityConfig Weight int64 @@ -155,9 +158,15 @@ type FakeExtender struct { CachedNodeNameToInfo map[string]*framework.NodeInfo } +const defaultFakeExtenderName = "defaultFakeExtender" + // Name returns name of the extender. func (f *FakeExtender) Name() string { - return "FakeExtender" + if f.ExtenderName == "" { + // If ExtenderName is unset, use default name. + return defaultFakeExtenderName + } + return f.ExtenderName } // IsIgnorable returns a bool value indicating whether internal errors can be ignored.