mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-30 15:05:27 +00:00
test to catch illegal nodeNames returned by PreFilterResult
This commit is contained in:
parent
a5753f60d6
commit
d3821508f1
@ -32,6 +32,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/labels"
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
listersv1 "k8s.io/client-go/listers/core/v1"
|
listersv1 "k8s.io/client-go/listers/core/v1"
|
||||||
@ -77,9 +78,10 @@ type PreEnqueuePlugin struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type PreFilterPlugin struct {
|
type PreFilterPlugin struct {
|
||||||
numPreFilterCalled int
|
numPreFilterCalled int
|
||||||
failPreFilter bool
|
failPreFilter bool
|
||||||
rejectPreFilter bool
|
rejectPreFilter bool
|
||||||
|
preFilterResultNodes sets.Set[string]
|
||||||
}
|
}
|
||||||
|
|
||||||
type ScorePlugin struct {
|
type ScorePlugin struct {
|
||||||
@ -521,6 +523,9 @@ func (pp *PreFilterPlugin) PreFilter(ctx context.Context, state *framework.Cycle
|
|||||||
if pp.rejectPreFilter {
|
if pp.rejectPreFilter {
|
||||||
return nil, framework.NewStatus(framework.Unschedulable, fmt.Sprintf("reject pod %v", pod.Name))
|
return nil, framework.NewStatus(framework.Unschedulable, fmt.Sprintf("reject pod %v", pod.Name))
|
||||||
}
|
}
|
||||||
|
if len(pp.preFilterResultNodes) != 0 {
|
||||||
|
return &framework.PreFilterResult{NodeNames: pp.preFilterResultNodes}, nil
|
||||||
|
}
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -620,9 +625,10 @@ func TestPreFilterPlugin(t *testing.T) {
|
|||||||
testContext := testutils.InitTestAPIServer(t, "prefilter-plugin", nil)
|
testContext := testutils.InitTestAPIServer(t, "prefilter-plugin", nil)
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
fail bool
|
fail bool
|
||||||
reject bool
|
reject bool
|
||||||
|
preFilterResultNodes sets.Set[string]
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "disable fail and reject flags",
|
name: "disable fail and reject flags",
|
||||||
@ -639,6 +645,18 @@ func TestPreFilterPlugin(t *testing.T) {
|
|||||||
fail: false,
|
fail: false,
|
||||||
reject: true,
|
reject: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "inject legal node names in PreFilterResult",
|
||||||
|
fail: false,
|
||||||
|
reject: false,
|
||||||
|
preFilterResultNodes: sets.New[string]("test-node-0", "test-node-1"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "inject legal and illegal node names in PreFilterResult",
|
||||||
|
fail: false,
|
||||||
|
reject: false,
|
||||||
|
preFilterResultNodes: sets.New[string]("test-node-0", "non-existent-node"),
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
@ -654,6 +672,7 @@ func TestPreFilterPlugin(t *testing.T) {
|
|||||||
|
|
||||||
preFilterPlugin.failPreFilter = test.fail
|
preFilterPlugin.failPreFilter = test.fail
|
||||||
preFilterPlugin.rejectPreFilter = test.reject
|
preFilterPlugin.rejectPreFilter = test.reject
|
||||||
|
preFilterPlugin.preFilterResultNodes = test.preFilterResultNodes
|
||||||
// Create a best effort pod.
|
// Create a best effort pod.
|
||||||
pod, err := testutils.CreatePausePod(testCtx.ClientSet,
|
pod, err := testutils.CreatePausePod(testCtx.ClientSet,
|
||||||
testutils.InitPausePod(&testutils.PausePodConfig{Name: "test-pod", Namespace: testCtx.NS.Name}))
|
testutils.InitPausePod(&testutils.PausePodConfig{Name: "test-pod", Namespace: testCtx.NS.Name}))
|
||||||
|
Loading…
Reference in New Issue
Block a user