@@ -16,14 +16,9 @@ package controllers
16
16
import (
17
17
"context"
18
18
"errors"
19
+ "strconv"
19
20
"testing"
20
21
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"
27
22
"github.com/golang/mock/gomock"
28
23
"github.com/stretchr/testify/assert"
29
24
corev1 "k8s.io/api/core/v1"
@@ -35,18 +30,36 @@ import (
35
30
fakeClient "sigs.k8s.io/controller-runtime/pkg/client/fake"
36
31
"sigs.k8s.io/controller-runtime/pkg/log/zap"
37
32
"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"
38
40
)
39
41
40
42
var (
41
43
mockConfigMap = & corev1.ConfigMap {
42
44
TypeMeta : metav1.TypeMeta {},
43
45
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
+ },
45
52
}
46
53
mockConfigMapPD = & corev1.ConfigMap {
47
54
TypeMeta : metav1.TypeMeta {},
48
55
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
+ },
50
63
}
51
64
mockConfigMapReq = reconcile.Request {
52
65
NamespacedName : types.NamespacedName {
@@ -89,11 +102,13 @@ func NewConfigMapMock(ctrl *gomock.Controller, mockObjects ...client.Object) Con
89
102
return ConfigMapMock {
90
103
MockNodeManager : mockNodeManager ,
91
104
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 ,
97
112
},
98
113
MockNode : mockNode ,
99
114
MockK8sAPI : mockK8sWrapper ,
@@ -103,13 +118,13 @@ func NewConfigMapMock(ctrl *gomock.Controller, mockObjects ...client.Object) Con
103
118
}
104
119
}
105
120
106
- func Test_Reconcile_ConfigMap_Updated (t * testing.T ) {
121
+ func Test_Reconcile_ConfigMap_Updated_Secondary_IP (t * testing.T ) {
107
122
ctrl := gomock .NewController (t )
108
123
defer ctrl .Finish ()
109
124
110
125
mock := NewConfigMapMock (ctrl , mockConfigMap )
111
126
mock .MockCondition .EXPECT ().IsWindowsIPAMEnabled ().Return (true )
112
- mock .MockCondition .EXPECT ().IsWindowsPrefixDelegationEnabled ().Return (true )
127
+ mock .MockCondition .EXPECT ().IsWindowsPrefixDelegationEnabled ().Return (false )
113
128
mock .MockK8sAPI .EXPECT ().ListNodes ().Return (nodeList , nil )
114
129
mock .MockNodeManager .EXPECT ().GetNode (mockNodeName ).Return (mock .MockNode , true )
115
130
mock .MockNodeManager .EXPECT ().UpdateNode (mockNodeName ).Return (nil )
@@ -120,14 +135,32 @@ func Test_Reconcile_ConfigMap_Updated(t *testing.T) {
120
135
res , err := mock .ConfigMapReconciler .Reconcile (context .TODO (), mockConfigMapReq )
121
136
assert .NoError (t , err )
122
137
assert .Equal (t , res , reconcile.Result {})
138
+ }
123
139
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 {})
124
157
}
125
158
126
159
func Test_Reconcile_ConfigMap_PD_Disabled_If_IPAM_Disabled (t * testing.T ) {
127
160
ctrl := gomock .NewController (t )
128
161
defer ctrl .Finish ()
129
162
130
- mock := NewConfigMapMock (ctrl , mockConfigMapPD )
163
+ mock := NewConfigMapMock (ctrl , mockConfigMap )
131
164
mock .MockCondition .EXPECT ().IsWindowsIPAMEnabled ().Return (false )
132
165
mock .MockCondition .EXPECT ().IsWindowsPrefixDelegationEnabled ().Return (false )
133
166
mock .MockK8sAPI .EXPECT ().GetConfigMap (config .VpcCniConfigMapName , config .KubeSystemNamespace ).Return (createCoolDownMockCM ("30" ), nil ).AnyTimes ()
0 commit comments