@@ -16,14 +16,9 @@ package controllers
1616import (
1717 "context"
1818 "errors"
19+ "strconv"
1920 "testing"
2021
21- mock_condition "github.com/aws/amazon-vpc-resource-controller-k8s/mocks/amazon-vcp-resource-controller-k8s/pkg/condition"
22- mock_k8s "github.com/aws/amazon-vpc-resource-controller-k8s/mocks/amazon-vcp-resource-controller-k8s/pkg/k8s"
23- mock_node "github.com/aws/amazon-vpc-resource-controller-k8s/mocks/amazon-vcp-resource-controller-k8s/pkg/node"
24- mock_manager "github.com/aws/amazon-vpc-resource-controller-k8s/mocks/amazon-vcp-resource-controller-k8s/pkg/node/manager"
25- "github.com/aws/amazon-vpc-resource-controller-k8s/pkg/config"
26- cooldown "github.com/aws/amazon-vpc-resource-controller-k8s/pkg/provider/branch/cooldown"
2722 "github.com/golang/mock/gomock"
2823 "github.com/stretchr/testify/assert"
2924 corev1 "k8s.io/api/core/v1"
@@ -35,18 +30,36 @@ import (
3530 fakeClient "sigs.k8s.io/controller-runtime/pkg/client/fake"
3631 "sigs.k8s.io/controller-runtime/pkg/log/zap"
3732 "sigs.k8s.io/controller-runtime/pkg/reconcile"
33+
34+ mock_condition "github.com/aws/amazon-vpc-resource-controller-k8s/mocks/amazon-vcp-resource-controller-k8s/pkg/condition"
35+ mock_k8s "github.com/aws/amazon-vpc-resource-controller-k8s/mocks/amazon-vcp-resource-controller-k8s/pkg/k8s"
36+ mock_node "github.com/aws/amazon-vpc-resource-controller-k8s/mocks/amazon-vcp-resource-controller-k8s/pkg/node"
37+ mock_manager "github.com/aws/amazon-vpc-resource-controller-k8s/mocks/amazon-vcp-resource-controller-k8s/pkg/node/manager"
38+ "github.com/aws/amazon-vpc-resource-controller-k8s/pkg/config"
39+ cooldown "github.com/aws/amazon-vpc-resource-controller-k8s/pkg/provider/branch/cooldown"
3840)
3941
4042var (
4143 mockConfigMap = & corev1.ConfigMap {
4244 TypeMeta : metav1.TypeMeta {},
4345 ObjectMeta : metav1.ObjectMeta {Name : config .VpcCniConfigMapName , Namespace : config .KubeSystemNamespace },
44- Data : map [string ]string {config .EnableWindowsIPAMKey : "true" , config .EnableWindowsPrefixDelegationKey : "true" },
46+ Data : map [string ]string {
47+ config .EnableWindowsIPAMKey : "true" ,
48+ config .EnableWindowsPrefixDelegationKey : "false" ,
49+ config .WinMinimumIPTarget : strconv .Itoa (config .IPv4DefaultWinMinIPTarget ),
50+ config .WinWarmIPTarget : strconv .Itoa (config .IPv4DefaultWinWarmIPTarget ),
51+ },
4552 }
4653 mockConfigMapPD = & corev1.ConfigMap {
4754 TypeMeta : metav1.TypeMeta {},
4855 ObjectMeta : metav1.ObjectMeta {Name : config .VpcCniConfigMapName , Namespace : config .KubeSystemNamespace },
49- Data : map [string ]string {config .EnableWindowsIPAMKey : "false" , config .EnableWindowsPrefixDelegationKey : "true" },
56+ Data : map [string ]string {
57+ config .EnableWindowsIPAMKey : "true" ,
58+ config .EnableWindowsPrefixDelegationKey : "true" ,
59+ config .WinMinimumIPTarget : strconv .Itoa (config .IPv4PDDefaultMinIPTargetSize ),
60+ config .WinWarmIPTarget : strconv .Itoa (config .IPv4PDDefaultWarmIPTargetSize ),
61+ config .WinWarmPrefixTarget : strconv .Itoa (config .IPv4PDDefaultWarmPrefixTargetSize ),
62+ },
5063 }
5164 mockConfigMapReq = reconcile.Request {
5265 NamespacedName : types.NamespacedName {
@@ -89,11 +102,13 @@ func NewConfigMapMock(ctrl *gomock.Controller, mockObjects ...client.Object) Con
89102 return ConfigMapMock {
90103 MockNodeManager : mockNodeManager ,
91104 ConfigMapReconciler : & ConfigMapReconciler {
92- Client : client ,
93- Log : zap .New (),
94- NodeManager : mockNodeManager ,
95- K8sAPI : mockK8sWrapper ,
96- Condition : mockCondition ,
105+ Client : client ,
106+ Log : zap .New (),
107+ NodeManager : mockNodeManager ,
108+ K8sAPI : mockK8sWrapper ,
109+ Condition : mockCondition ,
110+ curWinMinIPTarget : config .IPv4DefaultWinMinIPTarget ,
111+ curWinWarmIPTarget : config .IPv4DefaultWinWarmIPTarget ,
97112 },
98113 MockNode : mockNode ,
99114 MockK8sAPI : mockK8sWrapper ,
@@ -103,13 +118,13 @@ func NewConfigMapMock(ctrl *gomock.Controller, mockObjects ...client.Object) Con
103118 }
104119}
105120
106- func Test_Reconcile_ConfigMap_Updated (t * testing.T ) {
121+ func Test_Reconcile_ConfigMap_Updated_Secondary_IP (t * testing.T ) {
107122 ctrl := gomock .NewController (t )
108123 defer ctrl .Finish ()
109124
110125 mock := NewConfigMapMock (ctrl , mockConfigMap )
111126 mock .MockCondition .EXPECT ().IsWindowsIPAMEnabled ().Return (true )
112- mock .MockCondition .EXPECT ().IsWindowsPrefixDelegationEnabled ().Return (true )
127+ mock .MockCondition .EXPECT ().IsWindowsPrefixDelegationEnabled ().Return (false )
113128 mock .MockK8sAPI .EXPECT ().ListNodes ().Return (nodeList , nil )
114129 mock .MockNodeManager .EXPECT ().GetNode (mockNodeName ).Return (mock .MockNode , true )
115130 mock .MockNodeManager .EXPECT ().UpdateNode (mockNodeName ).Return (nil )
@@ -120,14 +135,32 @@ func Test_Reconcile_ConfigMap_Updated(t *testing.T) {
120135 res , err := mock .ConfigMapReconciler .Reconcile (context .TODO (), mockConfigMapReq )
121136 assert .NoError (t , err )
122137 assert .Equal (t , res , reconcile.Result {})
138+ }
123139
140+ func Test_Reconcile_ConfigMap_Updated_PD (t * testing.T ) {
141+ ctrl := gomock .NewController (t )
142+ defer ctrl .Finish ()
143+
144+ mock := NewConfigMapMock (ctrl , mockConfigMapPD )
145+ mock .MockCondition .EXPECT ().IsWindowsIPAMEnabled ().Return (true )
146+ mock .MockCondition .EXPECT ().IsWindowsPrefixDelegationEnabled ().Return (true )
147+ mock .MockK8sAPI .EXPECT ().ListNodes ().Return (nodeList , nil )
148+ mock .MockNodeManager .EXPECT ().GetNode (mockNodeName ).Return (mock .MockNode , true )
149+ mock .MockNodeManager .EXPECT ().UpdateNode (mockNodeName ).Return (nil )
150+
151+ mock .MockK8sAPI .EXPECT ().GetConfigMap (config .VpcCniConfigMapName , config .KubeSystemNamespace ).Return (createCoolDownMockCM ("30" ), nil ).AnyTimes ()
152+
153+ cooldown .InitCoolDownPeriod (mock .MockK8sAPI , zap .New (zap .UseDevMode (true )).WithName ("cooldown" ))
154+ res , err := mock .ConfigMapReconciler .Reconcile (context .TODO (), mockConfigMapReq )
155+ assert .NoError (t , err )
156+ assert .Equal (t , res , reconcile.Result {})
124157}
125158
126159func Test_Reconcile_ConfigMap_PD_Disabled_If_IPAM_Disabled (t * testing.T ) {
127160 ctrl := gomock .NewController (t )
128161 defer ctrl .Finish ()
129162
130- mock := NewConfigMapMock (ctrl , mockConfigMapPD )
163+ mock := NewConfigMapMock (ctrl , mockConfigMap )
131164 mock .MockCondition .EXPECT ().IsWindowsIPAMEnabled ().Return (false )
132165 mock .MockCondition .EXPECT ().IsWindowsPrefixDelegationEnabled ().Return (false )
133166 mock .MockK8sAPI .EXPECT ().GetConfigMap (config .VpcCniConfigMapName , config .KubeSystemNamespace ).Return (createCoolDownMockCM ("30" ), nil ).AnyTimes ()
0 commit comments