@@ -555,6 +555,37 @@ func TestRegisterScaleDown(t *testing.T) {
555
555
assert .Empty (t , clusterstate .GetScaleUpFailures ())
556
556
}
557
557
558
+ func TestNodeGroupScaleUpTime (t * testing.T ) {
559
+ provider := testprovider .NewTestCloudProviderBuilder ().Build ()
560
+ assert .NotNil (t , provider )
561
+
562
+ fakeClient := & fake.Clientset {}
563
+ fakeLogRecorder , _ := utils .NewStatusMapRecorder (fakeClient , "kube-system" , kube_record .NewFakeRecorder (5 ), false , "my-cool-configmap" )
564
+ clusterstate := NewClusterStateRegistry (provider , ClusterStateRegistryConfig {
565
+ MaxTotalUnreadyPercentage : 10 ,
566
+ OkTotalUnreadyCount : 1 ,
567
+ }, fakeLogRecorder , newBackoff (), nodegroupconfig .NewDefaultNodeGroupConfigProcessor (config.NodeGroupAutoscalingOptions {MaxNodeProvisionTime : 15 * time .Minute }), asyncnodegroups .NewDefaultAsyncNodeGroupStateChecker ())
568
+
569
+ // nil node group
570
+ _ , err := clusterstate .NodeGroupScaleUpTime (nil )
571
+ assert .ErrorContains (t , err , "failed to find scaleUpRequest for node group: unexpected node group passed" )
572
+
573
+ // node group that's not being scaled up
574
+ provider .AddNodeGroup ("ng1" , 1 , 10 , 1 )
575
+ ng := provider .GetNodeGroup ("ng1" )
576
+
577
+ _ , err = clusterstate .NodeGroupScaleUpTime (ng )
578
+ assert .ErrorContains (t , err , "failed to find scaleUpRequest for node group" )
579
+
580
+ // node group currently being scaled up
581
+ wantScaleUpTime := time .Now ()
582
+ clusterstate .RegisterScaleUp (ng , 1 , wantScaleUpTime )
583
+
584
+ gotScaleUpTime , err := clusterstate .NodeGroupScaleUpTime (ng )
585
+ assert .NoError (t , err )
586
+ assert .Equal (t , wantScaleUpTime , gotScaleUpTime )
587
+ }
588
+
558
589
func TestUpcomingNodes (t * testing.T ) {
559
590
provider := testprovider .NewTestCloudProviderBuilder ().Build ()
560
591
now := time .Now ()
0 commit comments