@@ -17,6 +17,7 @@ limitations under the License.
17
17
package nodeinfosprovider
18
18
19
19
import (
20
+ "fmt"
20
21
"testing"
21
22
"time"
22
23
@@ -50,14 +51,19 @@ func TestGetNodeInfosForGroups(t *testing.T) {
50
51
SetNodeReadyState (unready4 , false , now )
51
52
justReady5 := BuildTestNode ("n5" , 5000 , 5000 )
52
53
SetNodeReadyState (justReady5 , true , now )
54
+ readyToBeDeleted6 := BuildTestNode ("n6" , 2000 , 2000 )
55
+ SetNodeReadyState (readyToBeDeleted6 , true , now .Add (- 2 * time .Minute ))
56
+ setToBeDeletedTaint (readyToBeDeleted6 )
57
+ ready7 := BuildTestNode ("n7" , 6000 , 6000 )
58
+ SetNodeReadyState (ready7 , true , now .Add (- 2 * time .Minute ))
53
59
54
60
tn := BuildTestNode ("tn" , 5000 , 5000 )
55
61
tni := framework .NewTestNodeInfo (tn )
56
62
57
63
// Cloud provider with TemplateNodeInfo implemented.
58
64
provider1 := testprovider .NewTestAutoprovisioningCloudProvider (
59
65
nil , nil , nil , nil , nil ,
60
- map [string ]* framework.NodeInfo {"ng3" : tni , "ng4" : tni , "ng5" : tni })
66
+ map [string ]* framework.NodeInfo {"ng3" : tni , "ng4" : tni , "ng5" : tni , "ng6" : tni })
61
67
provider1 .AddNodeGroup ("ng1" , 1 , 10 , 1 ) // Nodegroup with ready node.
62
68
provider1 .AddNode ("ng1" , ready1 )
63
69
provider1 .AddNodeGroup ("ng2" , 1 , 10 , 1 ) // Nodegroup with ready and unready node.
@@ -68,15 +74,18 @@ func TestGetNodeInfosForGroups(t *testing.T) {
68
74
provider1 .AddNodeGroup ("ng4" , 0 , 1000 , 0 ) // Nodegroup without nodes.
69
75
provider1 .AddNodeGroup ("ng5" , 1 , 10 , 1 ) // Nodegroup with node that recently became ready.
70
76
provider1 .AddNode ("ng5" , justReady5 )
77
+ provider1 .AddNodeGroup ("ng6" , 1 , 10 , 1 ) // Nodegroup with to be deleted node
78
+ provider1 .AddNode ("ng6" , readyToBeDeleted6 )
79
+ provider1 .AddNode ("ng6" , ready7 )
71
80
72
81
// Cloud provider with TemplateNodeInfo not implemented.
73
82
provider2 := testprovider .NewTestAutoprovisioningCloudProvider (nil , nil , nil , nil , nil , nil )
74
- provider2 .AddNodeGroup ("ng6 " , 1 , 10 , 1 ) // Nodegroup without nodes.
83
+ provider2 .AddNodeGroup ("ng7 " , 1 , 10 , 1 ) // Nodegroup without nodes.
75
84
76
85
podLister := kube_util .NewTestPodLister ([]* apiv1.Pod {})
77
86
registry := kube_util .NewListerRegistry (nil , nil , podLister , nil , nil , nil , nil , nil , nil )
78
87
79
- nodes := []* apiv1.Node {justReady5 , unready4 , unready3 , ready2 , ready1 }
88
+ nodes := []* apiv1.Node {justReady5 , unready4 , unready3 , ready2 , ready1 , ready7 , readyToBeDeleted6 }
80
89
snapshot := testsnapshot .NewTestSnapshotOrDie (t )
81
90
err := snapshot .SetClusterState (nodes , nil , drasnapshot.Snapshot {})
82
91
assert .NoError (t , err )
@@ -90,7 +99,7 @@ func TestGetNodeInfosForGroups(t *testing.T) {
90
99
}
91
100
res , err := NewMixedTemplateNodeInfoProvider (& cacheTtl , false ).Process (& ctx , nodes , []* appsv1.DaemonSet {}, taints.TaintConfig {}, now )
92
101
assert .NoError (t , err )
93
- assert .Equal (t , 5 , len (res ))
102
+ assert .Equal (t , 6 , len (res ))
94
103
info , found := res ["ng1" ]
95
104
assert .True (t , found )
96
105
assertEqualNodeCapacities (t , ready1 , info .Node ())
@@ -106,6 +115,9 @@ func TestGetNodeInfosForGroups(t *testing.T) {
106
115
info , found = res ["ng5" ]
107
116
assert .True (t , found )
108
117
assertEqualNodeCapacities (t , tn , info .Node ())
118
+ info , found = res ["ng6" ]
119
+ assert .True (t , found )
120
+ assertEqualNodeCapacities (t , ready7 , info .Node ())
109
121
110
122
// Test for a nodegroup without nodes and TemplateNodeInfo not implemented by cloud proivder
111
123
ctx = context.AutoscalingContext {
@@ -314,3 +326,11 @@ func getNodeResource(node *apiv1.Node, resource apiv1.ResourceName) int64 {
314
326
315
327
return nodeCapacityValue
316
328
}
329
+
330
+ func setToBeDeletedTaint (node * apiv1.Node ) {
331
+ node .Spec .Taints = append (node .Spec .Taints , apiv1.Taint {
332
+ Key : taints .ToBeDeletedTaint ,
333
+ Value : fmt .Sprint (time .Now ().Unix ()),
334
+ Effect : apiv1 .TaintEffectNoSchedule ,
335
+ })
336
+ }
0 commit comments