@@ -12,6 +12,7 @@ import (
12
12
corev1 "k8s.io/api/core/v1"
13
13
extensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
14
14
fakeextensionsapi "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/fake"
15
+ resource "k8s.io/apimachinery/pkg/api/resource"
15
16
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
16
17
"k8s.io/apimachinery/pkg/runtime/schema"
17
18
"k8s.io/client-go/kubernetes/fake"
@@ -125,65 +126,150 @@ func TestInitializeEmptyMapsInDeployment(t *testing.T) {
125
126
}
126
127
127
128
func TestMergeDeployments (t * testing.T ) {
128
- var replicas int32
129
- replicas = 10
130
- volumeMount := corev1.VolumeMount {
131
- Name : "foo" ,
132
- MountPath : "/bar" ,
133
- }
134
- container := corev1.Container {
135
- VolumeMounts : []corev1.VolumeMount {
136
- volumeMount ,
129
+ var dstReplicas int32
130
+ dstReplicas = 10
131
+ destinationDeployment := appsv1.Deployment {
132
+ ObjectMeta : metav1.ObjectMeta {
133
+ Annotations : map [string ]string {
134
+ "foo1-deploy" : "bar" ,
135
+ },
137
136
},
138
- }
139
- podSpec := corev1.PodSpec {
140
- Containers : []corev1.Container {
141
- container ,
137
+ Spec : appsv1.DeploymentSpec {
138
+ Replicas : & dstReplicas ,
139
+ Template : corev1.PodTemplateSpec {
140
+ Spec : corev1.PodSpec {
141
+ Containers : []corev1.Container {
142
+ {
143
+ VolumeMounts : []corev1.VolumeMount {
144
+ {
145
+ Name : "foo" ,
146
+ MountPath : "/bar" ,
147
+ },
148
+ },
149
+ Resources : corev1.ResourceRequirements {},
150
+ },
151
+ },
152
+ },
153
+ },
142
154
},
143
155
}
144
- template := corev1.PodTemplateSpec {
145
- Spec : podSpec ,
146
- }
147
156
148
- destinationDeployment := appsv1.Deployment {
157
+ var srcReplicas int32
158
+ srcReplicas = 8
159
+ sourceDeployment := appsv1.Deployment {
149
160
ObjectMeta : metav1.ObjectMeta {
150
161
Annotations : map [string ]string {
151
- "foo1-deploy" : "bar" ,
162
+ "foo2-deploy" : "bar" ,
163
+ },
164
+ },
165
+ Spec : appsv1.DeploymentSpec {
166
+ Replicas : & srcReplicas ,
167
+ Template : corev1.PodTemplateSpec {
168
+ Spec : corev1.PodSpec {
169
+ Containers : []corev1.Container {
170
+ {
171
+ VolumeMounts : []corev1.VolumeMount {
172
+ {
173
+ Name : "baz" ,
174
+ MountPath : "/qux" ,
175
+ },
176
+ },
177
+ Resources : corev1.ResourceRequirements {
178
+ Requests : corev1.ResourceList {
179
+ corev1 .ResourceName (corev1 .ResourceCPU ): resource .MustParse ("100m" ),
180
+ corev1 .ResourceName (corev1 .ResourceMemory ): resource .MustParse ("100Mi" ),
181
+ },
182
+ },
183
+ },
184
+ },
185
+ },
152
186
},
153
187
},
154
188
}
155
189
156
- sourceDeployment := appsv1.Deployment {
190
+ var expectedReplicas int32
191
+ expectedReplicas = 10
192
+ expectedDeployment := appsv1.Deployment {
157
193
ObjectMeta : metav1.ObjectMeta {
158
194
Annotations : map [string ]string {
195
+ "foo1-deploy" : "bar" ,
159
196
"foo2-deploy" : "bar" ,
160
197
},
161
198
},
162
199
Spec : appsv1.DeploymentSpec {
163
- Replicas : & replicas ,
164
- Template : template ,
200
+ Replicas : & expectedReplicas ,
201
+ Template : corev1.PodTemplateSpec {
202
+ Spec : corev1.PodSpec {
203
+ Containers : []corev1.Container {
204
+ {
205
+ VolumeMounts : []corev1.VolumeMount {
206
+ {
207
+ Name : "foo" ,
208
+ MountPath : "/bar" ,
209
+ },
210
+ {
211
+ Name : "baz" ,
212
+ MountPath : "/qux" ,
213
+ },
214
+ },
215
+ Resources : corev1.ResourceRequirements {
216
+ Requests : corev1.ResourceList {
217
+ corev1 .ResourceName (corev1 .ResourceCPU ): resource .MustParse ("100m" ),
218
+ corev1 .ResourceName (corev1 .ResourceMemory ): resource .MustParse ("100Mi" ),
219
+ },
220
+ },
221
+ },
222
+ },
223
+ },
224
+ },
165
225
},
166
226
}
167
227
168
228
MergeDeployments (& destinationDeployment , & sourceDeployment )
169
- expectedAnnotations := map [string ]string {
170
- "foo1-deploy" : "bar" ,
171
- "foo2-deploy" : "bar" ,
229
+
230
+ mergedContainerCount := len (destinationDeployment .Spec .Template .Spec .Containers )
231
+ if mergedContainerCount != 1 {
232
+ t .Fatalf ("Expecting 1 container but received %v" , mergedContainerCount )
172
233
}
173
- expectedVolumneMounts := len (destinationDeployment .Spec .Template .Spec .Containers [0 ].VolumeMounts )
174
- mergedVolumneMounts := len (sourceDeployment .Spec .Template .Spec .Containers [0 ].VolumeMounts )
234
+
235
+ expectedAnnotations := expectedDeployment .ObjectMeta .Annotations
236
+ mergedAnnotations := destinationDeployment .ObjectMeta .Annotations
175
237
for i := range expectedAnnotations {
176
- if destinationDeployment . ObjectMeta . Annotations [i ] != expectedAnnotations [i ] {
177
- t .Fatalf ("Expecting annotation %s but received %s" , destinationDeployment . ObjectMeta . Annotations [i ], expectedAnnotations [i ])
238
+ if mergedAnnotations [i ] != expectedAnnotations [i ] {
239
+ t .Fatalf ("Expecting annotation %s but received %s" , expectedAnnotations [i ], mergedAnnotations [i ])
178
240
}
179
241
}
180
- if * destinationDeployment .Spec .Replicas != replicas {
181
- t .Fatalf ("Expecting replicas as 10 but received %v" , * destinationDeployment .Spec .Replicas )
242
+
243
+ mergedReplicas := * destinationDeployment .Spec .Replicas
244
+ if mergedReplicas != expectedReplicas {
245
+ t .Fatalf ("Expecting 8 replicas but received %v" , * destinationDeployment .Spec .Replicas )
182
246
}
183
- if mergedVolumneMounts != expectedVolumneMounts {
184
- t .Fatalf ("Expecting %v volumeMounts but received %v" , expectedVolumneMounts , mergedVolumneMounts )
247
+
248
+ expectedVolumeMountCount := 2
249
+ mergedVolumeMountCount := len (destinationDeployment .Spec .Template .Spec .Containers [0 ].VolumeMounts )
250
+ if mergedVolumeMountCount != expectedVolumeMountCount {
251
+ t .Fatalf ("Expecting %v volumeMounts but received %v" , expectedVolumeMountCount , mergedVolumeMountCount )
185
252
}
186
253
254
+ expectedCPURequest := expectedDeployment .Spec .Template .Spec .Containers [0 ].Resources .Requests [corev1 .ResourceName (corev1 .ResourceCPU )]
255
+ mergedCPURequest := destinationDeployment .Spec .Template .Spec .Containers [0 ].Resources .Requests [corev1 .ResourceName (corev1 .ResourceCPU )]
256
+ if mergedCPURequest != expectedCPURequest {
257
+ t .Fatalf (
258
+ "Expecting %s cpu resource request but received %s" ,
259
+ expectedCPURequest .String (),
260
+ mergedCPURequest .String (),
261
+ )
262
+ }
263
+
264
+ expectedMemoryRequest := expectedDeployment .Spec .Template .Spec .Containers [0 ].Resources .Requests [corev1 .ResourceName (corev1 .ResourceMemory )]
265
+ mergedMemoryRequest := destinationDeployment .Spec .Template .Spec .Containers [0 ].Resources .Requests [corev1 .ResourceName (corev1 .ResourceMemory )]
266
+ if mergedMemoryRequest != expectedMemoryRequest {
267
+ t .Fatalf (
268
+ "Expecting %s memory resource request but received %s" ,
269
+ expectedMemoryRequest .String (),
270
+ mergedMemoryRequest .String (),
271
+ )
272
+ }
187
273
}
188
274
189
275
func TestGetAnnotationsFromCRD (t * testing.T ) {
0 commit comments