@@ -88,6 +88,9 @@ func TestFindNodesToRemove(t *testing.T) {
8888 fullNode := BuildTestNode ("n4" , 1000 , 2000000 )
8989 fullNodeInfo := framework .NewTestNodeInfo (fullNode )
9090
91+ // node with no info in cluster snapshot
92+ nodeWithoutInfo := & apiv1.Node {ObjectMeta : metav1.ObjectMeta {Name : "n5" }}
93+
9194 SetNodeReadyState (emptyNode , true , time.Time {})
9295 SetNodeReadyState (drainableNode , true , time.Time {})
9396 SetNodeReadyState (nonDrainableNode , true , time.Time {})
@@ -137,6 +140,10 @@ func TestFindNodesToRemove(t *testing.T) {
137140 Node : drainableNode ,
138141 PodsToReschedule : []* apiv1.Pod {pod1 , pod2 },
139142 }
143+ ghostNodeToUnremovable := UnremovableNode {
144+ Node : nodeWithoutInfo ,
145+ Reason : NoNodeInfo ,
146+ }
140147
141148 clusterSnapshot := testsnapshot .NewTestSnapshotOrDie (t )
142149
@@ -240,6 +247,14 @@ func TestFindNodesToRemove(t *testing.T) {
240247 {Node : topoNode3 , Reason : BlockedByPod , BlockingPod : & drain.BlockingPod {Pod : blocker2 , Reason : drain .NotReplicated }},
241248 },
242249 },
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 {& ghostNodeToUnremovable },
257+ },
243258 }
244259
245260 for _ , test := range tests {
0 commit comments