@@ -88,6 +88,9 @@ func TestFindNodesToRemove(t *testing.T) {
88
88
fullNode := BuildTestNode ("n4" , 1000 , 2000000 )
89
89
fullNodeInfo := framework .NewTestNodeInfo (fullNode )
90
90
91
+ // node with no info in cluster snapshot
92
+ nodeWithoutInfo := & apiv1.Node {ObjectMeta : metav1.ObjectMeta {Name : "n5" }}
93
+
91
94
SetNodeReadyState (emptyNode , true , time.Time {})
92
95
SetNodeReadyState (drainableNode , true , time.Time {})
93
96
SetNodeReadyState (nonDrainableNode , true , time.Time {})
@@ -137,6 +140,10 @@ func TestFindNodesToRemove(t *testing.T) {
137
140
Node : drainableNode ,
138
141
PodsToReschedule : []* apiv1.Pod {pod1 , pod2 },
139
142
}
143
+ nodeWithoutInfoUnremovable := UnremovableNode {
144
+ Node : nodeWithoutInfo ,
145
+ Reason : NoNodeInfo ,
146
+ }
140
147
141
148
clusterSnapshot := testsnapshot .NewTestSnapshotOrDie (t )
142
149
@@ -240,6 +247,14 @@ func TestFindNodesToRemove(t *testing.T) {
240
247
{Node : topoNode3 , Reason : BlockedByPod , BlockingPod : & drain.BlockingPod {Pod : blocker2 , Reason : drain .NotReplicated }},
241
248
},
242
249
},
250
+ {
251
+ name : "candidate not in clusterSnapshot should be marked unremovable" ,
252
+ candidates : []string {nodeWithoutInfo .Name },
253
+ allNodes : []* apiv1.Node {},
254
+ pods : []* apiv1.Pod {},
255
+ toRemove : nil ,
256
+ unremovable : []* UnremovableNode {& nodeWithoutInfoUnremovable },
257
+ },
243
258
}
244
259
245
260
for _ , test := range tests {
0 commit comments