Merge pull request #108230 from sanposhiho/fake-extender-name

Support ExtenderName in FakeExtender
This commit is contained in:
Kubernetes Prow Robot 2022-02-22 21:36:18 -08:00 committed by GitHub
commit 296bf4f016
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 80 additions and 23 deletions

View File

@ -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,9 +58,11 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
},
extenders: []st.FakeExtender{
{
ExtenderName: "FakeExtender1",
Predicates: []st.FitPredicate{st.TruePredicateExtender},
},
{
ExtenderName: "FakeExtender2",
Predicates: []st.FitPredicate{st.ErrorPredicateExtender},
},
},
@ -76,9 +78,11 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
},
extenders: []st.FakeExtender{
{
ExtenderName: "FakeExtender1",
Predicates: []st.FitPredicate{st.TruePredicateExtender},
},
{
ExtenderName: "FakeExtender2",
Predicates: []st.FitPredicate{st.FalsePredicateExtender},
},
},
@ -94,9 +98,11 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
},
extenders: []st.FakeExtender{
{
ExtenderName: "FakeExtender1",
Predicates: []st.FitPredicate{st.TruePredicateExtender},
},
{
ExtenderName: "FakeExtender2",
Predicates: []st.FitPredicate{st.Node1PredicateExtender},
},
},
@ -116,9 +122,11 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
},
extenders: []st.FakeExtender{
{
ExtenderName: "FakeExtender1",
Predicates: []st.FitPredicate{st.Node2PredicateExtender},
},
{
ExtenderName: "FakeExtender2",
Predicates: []st.FitPredicate{st.Node1PredicateExtender},
},
},
@ -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,10 +251,12 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
},
extenders: []st.FakeExtender{
{
ExtenderName: "FakeExtender1",
Predicates: []st.FitPredicate{st.ErrorPredicateExtender},
Ignorable: true,
},
{
ExtenderName: "FakeExtender2",
Predicates: []st.FitPredicate{st.Node1PredicateExtender},
},
},

View File

@ -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.

View File

@ -285,6 +285,7 @@ func TestFindNodesThatPassExtenders(t *testing.T) {
name: "error",
extenders: []st.FakeExtender{
{
ExtenderName: "FakeExtender1",
Predicates: []st.FitPredicate{st.ErrorPredicateExtender},
},
},
@ -296,6 +297,7 @@ func TestFindNodesThatPassExtenders(t *testing.T) {
name: "success",
extenders: []st.FakeExtender{
{
ExtenderName: "FakeExtender1",
Predicates: []st.FitPredicate{st.TruePredicateExtender},
},
},
@ -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)

View File

@ -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.