mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Merge pull request #108230 from sanposhiho/fake-extender-name
Support ExtenderName in FakeExtender
This commit is contained in:
commit
296bf4f016
@ -22,7 +22,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/api/core/v1"
|
v1 "k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/api/resource"
|
"k8s.io/apimachinery/pkg/api/resource"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
@ -58,10 +58,12 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
|
|||||||
},
|
},
|
||||||
extenders: []st.FakeExtender{
|
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"},
|
nodes: []string{"node1", "node2"},
|
||||||
@ -76,10 +78,12 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
|
|||||||
},
|
},
|
||||||
extenders: []st.FakeExtender{
|
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"},
|
nodes: []string{"node1", "node2"},
|
||||||
@ -94,10 +98,12 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
|
|||||||
},
|
},
|
||||||
extenders: []st.FakeExtender{
|
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"},
|
nodes: []string{"node1", "node2"},
|
||||||
@ -116,10 +122,12 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
|
|||||||
},
|
},
|
||||||
extenders: []st.FakeExtender{
|
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"},
|
nodes: []string{"node1", "node2"},
|
||||||
@ -134,6 +142,7 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
|
|||||||
},
|
},
|
||||||
extenders: []st.FakeExtender{
|
extenders: []st.FakeExtender{
|
||||||
{
|
{
|
||||||
|
ExtenderName: "FakeExtender1",
|
||||||
Predicates: []st.FitPredicate{st.TruePredicateExtender},
|
Predicates: []st.FitPredicate{st.TruePredicateExtender},
|
||||||
Prioritizers: []st.PriorityConfig{{Function: st.ErrorPrioritizerExtender, Weight: 10}},
|
Prioritizers: []st.PriorityConfig{{Function: st.ErrorPrioritizerExtender, Weight: 10}},
|
||||||
Weight: 1,
|
Weight: 1,
|
||||||
@ -155,11 +164,13 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
|
|||||||
},
|
},
|
||||||
extenders: []st.FakeExtender{
|
extenders: []st.FakeExtender{
|
||||||
{
|
{
|
||||||
|
ExtenderName: "FakeExtender1",
|
||||||
Predicates: []st.FitPredicate{st.TruePredicateExtender},
|
Predicates: []st.FitPredicate{st.TruePredicateExtender},
|
||||||
Prioritizers: []st.PriorityConfig{{Function: st.Node1PrioritizerExtender, Weight: 10}},
|
Prioritizers: []st.PriorityConfig{{Function: st.Node1PrioritizerExtender, Weight: 10}},
|
||||||
Weight: 1,
|
Weight: 1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
ExtenderName: "FakeExtender2",
|
||||||
Predicates: []st.FitPredicate{st.TruePredicateExtender},
|
Predicates: []st.FitPredicate{st.TruePredicateExtender},
|
||||||
Prioritizers: []st.PriorityConfig{{Function: st.Node2PrioritizerExtender, Weight: 10}},
|
Prioritizers: []st.PriorityConfig{{Function: st.Node2PrioritizerExtender, Weight: 10}},
|
||||||
Weight: 5,
|
Weight: 5,
|
||||||
@ -182,6 +193,7 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
|
|||||||
},
|
},
|
||||||
extenders: []st.FakeExtender{
|
extenders: []st.FakeExtender{
|
||||||
{
|
{
|
||||||
|
ExtenderName: "FakeExtender1",
|
||||||
Predicates: []st.FitPredicate{st.TruePredicateExtender},
|
Predicates: []st.FitPredicate{st.TruePredicateExtender},
|
||||||
Prioritizers: []st.PriorityConfig{{Function: st.Node1PrioritizerExtender, Weight: 10}},
|
Prioritizers: []st.PriorityConfig{{Function: st.Node1PrioritizerExtender, Weight: 10}},
|
||||||
Weight: 1,
|
Weight: 1,
|
||||||
@ -211,6 +223,7 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
|
|||||||
},
|
},
|
||||||
extenders: []st.FakeExtender{
|
extenders: []st.FakeExtender{
|
||||||
{
|
{
|
||||||
|
ExtenderName: "FakeExtender1",
|
||||||
Predicates: []st.FitPredicate{st.ErrorPredicateExtender},
|
Predicates: []st.FitPredicate{st.ErrorPredicateExtender},
|
||||||
Prioritizers: []st.PriorityConfig{{Function: st.ErrorPrioritizerExtender, Weight: 10}},
|
Prioritizers: []st.PriorityConfig{{Function: st.ErrorPrioritizerExtender, Weight: 10}},
|
||||||
UnInterested: true,
|
UnInterested: true,
|
||||||
@ -238,11 +251,13 @@ func TestGenericSchedulerWithExtenders(t *testing.T) {
|
|||||||
},
|
},
|
||||||
extenders: []st.FakeExtender{
|
extenders: []st.FakeExtender{
|
||||||
{
|
{
|
||||||
Predicates: []st.FitPredicate{st.ErrorPredicateExtender},
|
ExtenderName: "FakeExtender1",
|
||||||
Ignorable: true,
|
Predicates: []st.FitPredicate{st.ErrorPredicateExtender},
|
||||||
|
Ignorable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Predicates: []st.FitPredicate{st.Node1PredicateExtender},
|
ExtenderName: "FakeExtender2",
|
||||||
|
Predicates: []st.FitPredicate{st.Node1PredicateExtender},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
nodes: []string{"node1", "node2"},
|
nodes: []string{"node1", "node2"},
|
||||||
|
@ -227,7 +227,10 @@ func TestPostFilter(t *testing.T) {
|
|||||||
"node1": framework.NewStatus(framework.Unschedulable),
|
"node1": framework.NewStatus(framework.Unschedulable),
|
||||||
"node2": 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"),
|
wantResult: framework.NewPostFilterResultWithNominatedNode("node1"),
|
||||||
wantStatus: framework.NewStatus(framework.Success),
|
wantStatus: framework.NewStatus(framework.Success),
|
||||||
},
|
},
|
||||||
@ -1506,8 +1509,14 @@ func TestPreempt(t *testing.T) {
|
|||||||
},
|
},
|
||||||
nodeNames: []string{"node1", "node2", "node3"},
|
nodeNames: []string{"node1", "node2", "node3"},
|
||||||
extenders: []*st.FakeExtender{
|
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"),
|
registerPlugin: st.RegisterPluginAsExtensions(noderesources.Name, nodeResourcesFitFunc, "Filter", "PreFilter"),
|
||||||
want: framework.NewPostFilterResultWithNominatedNode("node1"),
|
want: framework.NewPostFilterResultWithNominatedNode("node1"),
|
||||||
@ -1523,7 +1532,10 @@ func TestPreempt(t *testing.T) {
|
|||||||
},
|
},
|
||||||
nodeNames: []string{"node1", "node2", "node3"},
|
nodeNames: []string{"node1", "node2", "node3"},
|
||||||
extenders: []*st.FakeExtender{
|
extenders: []*st.FakeExtender{
|
||||||
{Predicates: []st.FitPredicate{st.FalsePredicateExtender}},
|
{
|
||||||
|
ExtenderName: "FakeExtender1",
|
||||||
|
Predicates: []st.FitPredicate{st.FalsePredicateExtender},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
registerPlugin: st.RegisterPluginAsExtensions(noderesources.Name, nodeResourcesFitFunc, "Filter", "PreFilter"),
|
registerPlugin: st.RegisterPluginAsExtensions(noderesources.Name, nodeResourcesFitFunc, "Filter", "PreFilter"),
|
||||||
want: nil,
|
want: nil,
|
||||||
@ -1539,8 +1551,15 @@ func TestPreempt(t *testing.T) {
|
|||||||
},
|
},
|
||||||
nodeNames: []string{"node1", "node2", "node3"},
|
nodeNames: []string{"node1", "node2", "node3"},
|
||||||
extenders: []*st.FakeExtender{
|
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"),
|
registerPlugin: st.RegisterPluginAsExtensions(noderesources.Name, nodeResourcesFitFunc, "Filter", "PreFilter"),
|
||||||
want: framework.NewPostFilterResultWithNominatedNode("node1"),
|
want: framework.NewPostFilterResultWithNominatedNode("node1"),
|
||||||
@ -1556,8 +1575,15 @@ func TestPreempt(t *testing.T) {
|
|||||||
},
|
},
|
||||||
nodeNames: []string{"node1", "node2"},
|
nodeNames: []string{"node1", "node2"},
|
||||||
extenders: []*st.FakeExtender{
|
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"),
|
registerPlugin: st.RegisterPluginAsExtensions(noderesources.Name, nodeResourcesFitFunc, "Filter", "PreFilter"),
|
||||||
// sum of priorities of all victims on node1 is larger than node2, node2 is chosen.
|
// sum of priorities of all victims on node1 is larger than node2, node2 is chosen.
|
||||||
|
@ -285,7 +285,8 @@ func TestFindNodesThatPassExtenders(t *testing.T) {
|
|||||||
name: "error",
|
name: "error",
|
||||||
extenders: []st.FakeExtender{
|
extenders: []st.FakeExtender{
|
||||||
{
|
{
|
||||||
Predicates: []st.FitPredicate{st.ErrorPredicateExtender},
|
ExtenderName: "FakeExtender1",
|
||||||
|
Predicates: []st.FitPredicate{st.ErrorPredicateExtender},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
nodes: makeNodeList([]string{"a"}),
|
nodes: makeNodeList([]string{"a"}),
|
||||||
@ -296,7 +297,8 @@ func TestFindNodesThatPassExtenders(t *testing.T) {
|
|||||||
name: "success",
|
name: "success",
|
||||||
extenders: []st.FakeExtender{
|
extenders: []st.FakeExtender{
|
||||||
{
|
{
|
||||||
Predicates: []st.FitPredicate{st.TruePredicateExtender},
|
ExtenderName: "FakeExtender1",
|
||||||
|
Predicates: []st.FitPredicate{st.TruePredicateExtender},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
nodes: makeNodeList([]string{"a"}),
|
nodes: makeNodeList([]string{"a"}),
|
||||||
@ -309,6 +311,7 @@ func TestFindNodesThatPassExtenders(t *testing.T) {
|
|||||||
name: "unschedulable",
|
name: "unschedulable",
|
||||||
extenders: []st.FakeExtender{
|
extenders: []st.FakeExtender{
|
||||||
{
|
{
|
||||||
|
ExtenderName: "FakeExtender1",
|
||||||
Predicates: []st.FitPredicate{func(pod *v1.Pod, node *v1.Node) *framework.Status {
|
Predicates: []st.FitPredicate{func(pod *v1.Pod, node *v1.Node) *framework.Status {
|
||||||
if node.Name == "a" {
|
if node.Name == "a" {
|
||||||
return framework.NewStatus(framework.Success)
|
return framework.NewStatus(framework.Success)
|
||||||
@ -329,6 +332,7 @@ func TestFindNodesThatPassExtenders(t *testing.T) {
|
|||||||
name: "unschedulable and unresolvable",
|
name: "unschedulable and unresolvable",
|
||||||
extenders: []st.FakeExtender{
|
extenders: []st.FakeExtender{
|
||||||
{
|
{
|
||||||
|
ExtenderName: "FakeExtender1",
|
||||||
Predicates: []st.FitPredicate{func(pod *v1.Pod, node *v1.Node) *framework.Status {
|
Predicates: []st.FitPredicate{func(pod *v1.Pod, node *v1.Node) *framework.Status {
|
||||||
if node.Name == "a" {
|
if node.Name == "a" {
|
||||||
return framework.NewStatus(framework.Success)
|
return framework.NewStatus(framework.Success)
|
||||||
@ -353,6 +357,7 @@ func TestFindNodesThatPassExtenders(t *testing.T) {
|
|||||||
name: "extender may overwrite the statuses",
|
name: "extender may overwrite the statuses",
|
||||||
extenders: []st.FakeExtender{
|
extenders: []st.FakeExtender{
|
||||||
{
|
{
|
||||||
|
ExtenderName: "FakeExtender1",
|
||||||
Predicates: []st.FitPredicate{func(pod *v1.Pod, node *v1.Node) *framework.Status {
|
Predicates: []st.FitPredicate{func(pod *v1.Pod, node *v1.Node) *framework.Status {
|
||||||
if node.Name == "a" {
|
if node.Name == "a" {
|
||||||
return framework.NewStatus(framework.Success)
|
return framework.NewStatus(framework.Success)
|
||||||
@ -379,6 +384,7 @@ func TestFindNodesThatPassExtenders(t *testing.T) {
|
|||||||
name: "multiple extenders",
|
name: "multiple extenders",
|
||||||
extenders: []st.FakeExtender{
|
extenders: []st.FakeExtender{
|
||||||
{
|
{
|
||||||
|
ExtenderName: "FakeExtender1",
|
||||||
Predicates: []st.FitPredicate{func(pod *v1.Pod, node *v1.Node) *framework.Status {
|
Predicates: []st.FitPredicate{func(pod *v1.Pod, node *v1.Node) *framework.Status {
|
||||||
if node.Name == "a" {
|
if node.Name == "a" {
|
||||||
return framework.NewStatus(framework.Success)
|
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 {
|
Predicates: []st.FitPredicate{func(pod *v1.Pod, node *v1.Node) *framework.Status {
|
||||||
if node.Name == "a" {
|
if node.Name == "a" {
|
||||||
return framework.NewStatus(framework.Success)
|
return framework.NewStatus(framework.Success)
|
||||||
|
@ -143,6 +143,9 @@ func (pl *node2PrioritizerPlugin) ScoreExtensions() framework.ScoreExtensions {
|
|||||||
|
|
||||||
// FakeExtender is a data struct which implements the Extender interface.
|
// FakeExtender is a data struct which implements the Extender interface.
|
||||||
type FakeExtender struct {
|
type FakeExtender struct {
|
||||||
|
// ExtenderName indicates this fake extender's name.
|
||||||
|
// Note that extender name should be unique.
|
||||||
|
ExtenderName string
|
||||||
Predicates []FitPredicate
|
Predicates []FitPredicate
|
||||||
Prioritizers []PriorityConfig
|
Prioritizers []PriorityConfig
|
||||||
Weight int64
|
Weight int64
|
||||||
@ -155,9 +158,15 @@ type FakeExtender struct {
|
|||||||
CachedNodeNameToInfo map[string]*framework.NodeInfo
|
CachedNodeNameToInfo map[string]*framework.NodeInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const defaultFakeExtenderName = "defaultFakeExtender"
|
||||||
|
|
||||||
// Name returns name of the extender.
|
// Name returns name of the extender.
|
||||||
func (f *FakeExtender) Name() string {
|
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.
|
// IsIgnorable returns a bool value indicating whether internal errors can be ignored.
|
||||||
|
Loading…
Reference in New Issue
Block a user