Merge pull request #124539 from Huang-Wei/ut-for-123465
test to catch illegal nodeNames returned by PreFilterResult
This commit is contained in:
		@@ -32,6 +32,7 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/labels"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/types"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/sets"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
			
		||||
	clientset "k8s.io/client-go/kubernetes"
 | 
			
		||||
	listersv1 "k8s.io/client-go/listers/core/v1"
 | 
			
		||||
@@ -80,6 +81,7 @@ type PreFilterPlugin struct {
 | 
			
		||||
	numPreFilterCalled   int
 | 
			
		||||
	failPreFilter        bool
 | 
			
		||||
	rejectPreFilter      bool
 | 
			
		||||
	preFilterResultNodes sets.Set[string]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type ScorePlugin struct {
 | 
			
		||||
@@ -521,6 +523,9 @@ func (pp *PreFilterPlugin) PreFilter(ctx context.Context, state *framework.Cycle
 | 
			
		||||
	if pp.rejectPreFilter {
 | 
			
		||||
		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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -623,6 +628,7 @@ func TestPreFilterPlugin(t *testing.T) {
 | 
			
		||||
		name                 string
 | 
			
		||||
		fail                 bool
 | 
			
		||||
		reject               bool
 | 
			
		||||
		preFilterResultNodes sets.Set[string]
 | 
			
		||||
	}{
 | 
			
		||||
		{
 | 
			
		||||
			name:   "disable fail and reject flags",
 | 
			
		||||
@@ -639,6 +645,18 @@ func TestPreFilterPlugin(t *testing.T) {
 | 
			
		||||
			fail:   false,
 | 
			
		||||
			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 {
 | 
			
		||||
@@ -654,6 +672,7 @@ func TestPreFilterPlugin(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
			preFilterPlugin.failPreFilter = test.fail
 | 
			
		||||
			preFilterPlugin.rejectPreFilter = test.reject
 | 
			
		||||
			preFilterPlugin.preFilterResultNodes = test.preFilterResultNodes
 | 
			
		||||
			// Create a best effort pod.
 | 
			
		||||
			pod, err := testutils.CreatePausePod(testCtx.ClientSet,
 | 
			
		||||
				testutils.InitPausePod(&testutils.PausePodConfig{Name: "test-pod", Namespace: testCtx.NS.Name}))
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user