@@ -2282,3 +2282,32 @@ func assignDefaultStartTime(pods []*v1.Pod) {
2282
2282
}
2283
2283
}
2284
2284
}
2285
+
2286
+ func TestFairEvaluationForNodes (t * testing.T ) {
2287
+ defer algorithmpredicates .SetPredicatesOrderingDuringTest (order )()
2288
+ predicates := map [string ]algorithmpredicates.FitPredicate {"true" : truePredicate }
2289
+ numAllNodes := 500
2290
+ nodeNames := make ([]string , 0 , numAllNodes )
2291
+ for i := 0 ; i < numAllNodes ; i ++ {
2292
+ nodeNames = append (nodeNames , strconv .Itoa (i ))
2293
+ }
2294
+ nodes := makeNodeList (nodeNames )
2295
+ g := makeScheduler (predicates , nodes )
2296
+ // To make numAllNodes % nodesToFind != 0
2297
+ g .percentageOfNodesToScore = 30
2298
+ nodesToFind := int (g .numFeasibleNodesToFind (int32 (numAllNodes )))
2299
+
2300
+ // Iterating over all nodes more than twice
2301
+ for i := 0 ; i < 2 * (numAllNodes / nodesToFind + 1 ); i ++ {
2302
+ nodesThatFit , _ , _ , err := g .findNodesThatFit (context .Background (), framework .NewCycleState (), & v1.Pod {})
2303
+ if err != nil {
2304
+ t .Errorf ("unexpected error: %v" , err )
2305
+ }
2306
+ if len (nodesThatFit ) != nodesToFind {
2307
+ t .Errorf ("got %d nodes filtered, want %d" , len (nodesThatFit ), nodesToFind )
2308
+ }
2309
+ if g .nextStartNodeIndex != (i + 1 )* nodesToFind % numAllNodes {
2310
+ t .Errorf ("got %d lastProcessedNodeIndex, want %d" , g .nextStartNodeIndex , (i + 1 )* nodesToFind % numAllNodes )
2311
+ }
2312
+ }
2313
+ }
0 commit comments