@@ -17,6 +17,7 @@ import (
17
17
18
18
"k8s.io/utils/ptr"
19
19
20
+ "k8s.io/apimachinery/pkg/types"
20
21
"k8s.io/apimachinery/pkg/util/intstr"
21
22
22
23
. "github.com/onsi/ginkgo/v2"
@@ -30,7 +31,6 @@ import (
30
31
apierrors "k8s.io/apimachinery/pkg/api/errors"
31
32
k8sresource "k8s.io/apimachinery/pkg/api/resource"
32
33
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
33
- "k8s.io/apimachinery/pkg/types"
34
34
runtimeClient "sigs.k8s.io/controller-runtime/pkg/client"
35
35
)
36
36
@@ -60,18 +60,10 @@ var _ = Describe("RabbitmqClusterController", func() {
60
60
waitForClusterCreation (ctx , cluster , client )
61
61
})
62
62
63
- AfterEach (func () {
64
- Expect (client .Delete (ctx , cluster )).To (Succeed ())
65
- Eventually (func () bool {
66
- err := client .Get (ctx , types.NamespacedName {Name : cluster .Name , Namespace : cluster .Namespace }, cluster )
67
- return apierrors .IsNotFound (err )
68
- }, 5 ).Should (BeTrue ())
69
- })
70
-
71
63
It ("works" , func () {
72
64
By ("populating the image spec with the default image" , func () {
73
65
fetchedCluster := & rabbitmqv1beta1.RabbitmqCluster {}
74
- Expect (client .Get (ctx , types. NamespacedName { Name : "rabbitmq-one" , Namespace : defaultNamespace } , fetchedCluster )).To (Succeed ())
66
+ Expect (client .Get (ctx , runtimeClient . ObjectKeyFromObject ( cluster ) , fetchedCluster )).To (Succeed ())
75
67
Expect (fetchedCluster .Spec .Image ).To (Equal (defaultRabbitmqImage ))
76
68
})
77
69
@@ -81,7 +73,7 @@ var _ = Describe("RabbitmqClusterController", func() {
81
73
82
74
Expect (sts .Name ).To (Equal (cluster .ChildResourceName ("server" )))
83
75
84
- Expect (len ( sts .Spec .VolumeClaimTemplates )) .To (Equal (1 ))
76
+ Expect (sts .Spec .VolumeClaimTemplates ).To (HaveLen (1 ))
85
77
Expect (sts .Spec .VolumeClaimTemplates [0 ].Spec .StorageClassName ).To (BeNil ())
86
78
})
87
79
@@ -199,10 +191,6 @@ var _ = Describe("RabbitmqClusterController", func() {
199
191
waitForClusterCreation (ctx , cluster , client )
200
192
})
201
193
202
- AfterEach (func () {
203
- Expect (client .Delete (ctx , cluster )).To (Succeed ())
204
- })
205
-
206
194
It ("adds annotations to child resources" , func () {
207
195
headlessSvc := service (ctx , cluster , "nodes" )
208
196
Expect (headlessSvc .Annotations ).Should (HaveKeyWithValue ("my-annotation" , "this-annotation" ))
@@ -234,10 +222,6 @@ var _ = Describe("RabbitmqClusterController", func() {
234
222
waitForClusterCreation (ctx , cluster , client )
235
223
})
236
224
237
- AfterEach (func () {
238
- Expect (client .Delete (ctx , cluster )).To (Succeed ())
239
- })
240
-
241
225
It ("applies the Vault configuration" , func () {
242
226
By ("not exposing DefaultUser or its Binding as status" )
243
227
Expect (cluster ).NotTo (BeNil ())
@@ -246,7 +230,7 @@ var _ = Describe("RabbitmqClusterController", func() {
246
230
Expect (cluster .Status .Binding ).To (BeNil ())
247
231
By ("setting the default user updater image to the controller default" )
248
232
fetchedCluster := & rabbitmqv1beta1.RabbitmqCluster {}
249
- Expect (client .Get (ctx , types. NamespacedName { Name : "rabbitmq-vault" , Namespace : defaultNamespace } , fetchedCluster )).To (Succeed ())
233
+ Expect (client .Get (ctx , runtimeClient . ObjectKeyFromObject ( cluster ) , fetchedCluster )).To (Succeed ())
250
234
Expect (fetchedCluster .Spec .SecretBackend .Vault .DefaultUserUpdaterImage ).To (PointTo (Equal (defaultUserUpdaterImage )))
251
235
})
252
236
})
@@ -267,10 +251,6 @@ var _ = Describe("RabbitmqClusterController", func() {
267
251
waitForClusterCreation (ctx , cluster , client )
268
252
})
269
253
270
- AfterEach (func () {
271
- Expect (client .Delete (ctx , cluster )).To (Succeed ())
272
- })
273
-
274
254
It ("configures the imagePullSecret on sts correctly" , func () {
275
255
By ("using the instance spec secret" , func () {
276
256
sts := statefulSet (ctx , cluster )
@@ -307,10 +287,6 @@ var _ = Describe("RabbitmqClusterController", func() {
307
287
Expect (client .Create (ctx , cluster )).To (Succeed ())
308
288
})
309
289
310
- AfterEach (func () {
311
- Expect (client .Delete (ctx , cluster )).To (Succeed ())
312
- })
313
-
314
290
It ("adds the affinity rules to pod spec" , func () {
315
291
sts := statefulSet (ctx , cluster )
316
292
podSpecAffinity := sts .Spec .Template .Spec .Affinity
@@ -319,11 +295,6 @@ var _ = Describe("RabbitmqClusterController", func() {
319
295
})
320
296
321
297
Context ("Service configurations" , func () {
322
- AfterEach (func () {
323
- Expect (client .Delete (ctx , cluster )).To (Succeed ())
324
- Expect (clientSet .CoreV1 ().Services (cluster .Namespace ).Delete (ctx , cluster .ChildResourceName ("" ), metav1.DeleteOptions {}))
325
- })
326
-
327
298
It ("creates the service type and annotations as configured in instance spec" , func () {
328
299
cluster = & rabbitmqv1beta1.RabbitmqCluster {
329
300
ObjectMeta : metav1.ObjectMeta {
@@ -360,10 +331,6 @@ var _ = Describe("RabbitmqClusterController", func() {
360
331
})
361
332
362
333
Context ("Resource requirements configurations" , func () {
363
- AfterEach (func () {
364
- Expect (client .Delete (ctx , cluster )).To (Succeed ())
365
- })
366
-
367
334
It ("uses resource requirements from instance spec when provided" , func () {
368
335
cluster = & rabbitmqv1beta1.RabbitmqCluster {
369
336
ObjectMeta : metav1.ObjectMeta {
@@ -400,10 +367,6 @@ var _ = Describe("RabbitmqClusterController", func() {
400
367
})
401
368
402
369
Context ("Persistence configurations" , func () {
403
- AfterEach (func () {
404
- Expect (client .Delete (ctx , cluster )).To (Succeed ())
405
- })
406
-
407
370
It ("creates the RabbitmqCluster with the specified storage from instance spec" , func () {
408
371
cluster = & rabbitmqv1beta1.RabbitmqCluster {
409
372
ObjectMeta : metav1.ObjectMeta {
@@ -419,18 +382,18 @@ var _ = Describe("RabbitmqClusterController", func() {
419
382
420
383
sts := statefulSet (ctx , cluster )
421
384
422
- Expect (len ( sts .Spec .VolumeClaimTemplates )) .To (Equal (1 ))
385
+ Expect (sts .Spec .VolumeClaimTemplates ).To (HaveLen (1 ))
423
386
Expect (* sts .Spec .VolumeClaimTemplates [0 ].Spec .StorageClassName ).To (Equal ("my-storage-class" ))
424
387
actualStorageCapacity := sts .Spec .VolumeClaimTemplates [0 ].Spec .Resources .Requests [corev1 .ResourceStorage ]
425
388
Expect (actualStorageCapacity ).To (Equal (k8sresource .MustParse ("100Gi" )))
426
389
})
427
390
})
428
391
429
- Context ("Custom Resource updates" , func () {
392
+ Context ("Custom Resource updates" , FlakeAttempts ( 3 ), func () {
430
393
BeforeEach (func () {
431
394
cluster = & rabbitmqv1beta1.RabbitmqCluster {
432
395
ObjectMeta : metav1.ObjectMeta {
433
- Name : "rabbitmq- cr-update" ,
396
+ Name : fmt . Sprintf ( " cr-update-%d-%d" , GinkgoParallelProcess (), time . Now (). Unix ()) ,
434
397
Namespace : defaultNamespace ,
435
398
},
436
399
}
@@ -439,11 +402,6 @@ var _ = Describe("RabbitmqClusterController", func() {
439
402
waitForClusterCreation (ctx , cluster , client )
440
403
})
441
404
442
- AfterEach (func () {
443
- Expect (client .Delete (ctx , cluster )).To (Succeed ())
444
- waitForClusterDeletion (ctx , cluster , client )
445
- })
446
-
447
405
It ("the service annotations are updated" , func () {
448
406
Expect (updateWithRetry (cluster , func (r * rabbitmqv1beta1.RabbitmqCluster ) {
449
407
r .Spec .Service .Annotations = map [string ]string {"test-key" : "test-value" }
@@ -488,8 +446,12 @@ var _ = Describe("RabbitmqClusterController", func() {
488
446
Expect (resourceRequirements .Limits ).To (HaveKeyWithValue (corev1 .ResourceMemory , expectedRequirements .Limits [corev1 .ResourceMemory ]))
489
447
490
448
// verify that SuccessfulUpdate event is recorded for the StatefulSet
491
- Expect (aggregateEventMsgs (ctx , cluster , "SuccessfulUpdate" )).To (
492
- ContainSubstring ("updated resource %s of Type *v1.StatefulSet" , cluster .ChildResourceName ("server" )))
449
+ Eventually (func () string {
450
+ return aggregateEventMsgs (ctx , cluster , "SuccessfulUpdate" )
451
+ }).
452
+ Within (5 * time .Second ).
453
+ WithPolling (time .Second ).
454
+ Should (ContainSubstring ("updated resource %s of Type *v1.StatefulSet" , cluster .ChildResourceName ("server" )))
493
455
})
494
456
495
457
It ("the rabbitmq image is updated" , func () {
@@ -863,11 +825,6 @@ var _ = Describe("RabbitmqClusterController", func() {
863
825
waitForClusterCreation (ctx , cluster , client )
864
826
})
865
827
866
- AfterEach (func () {
867
- Expect (client .Delete (ctx , cluster )).To (Succeed ())
868
- waitForClusterDeletion (ctx , cluster , client )
869
- })
870
-
871
828
It ("creates a StatefulSet with the override applied" , func () {
872
829
sts := statefulSet (ctx , cluster )
873
830
myStorage := k8sresource .MustParse ("100Gi" )
@@ -885,7 +842,7 @@ var _ = Describe("RabbitmqClusterController", func() {
885
842
"app.kubernetes.io/name" : "rabbitmq-sts-override" + suffix ,
886
843
}))
887
844
888
- Expect (len ( sts .Spec .VolumeClaimTemplates )) .To (Equal (2 ))
845
+ Expect (sts .Spec .VolumeClaimTemplates ).To (HaveLen (2 ))
889
846
890
847
Expect (sts .Spec .VolumeClaimTemplates [0 ].ObjectMeta .Name ).To (Equal ("persistence" ))
891
848
Expect (sts .Spec .VolumeClaimTemplates [0 ].ObjectMeta .Namespace ).To (Equal ("default" ))
@@ -1077,11 +1034,13 @@ var _ = Describe("RabbitmqClusterController", func() {
1077
1034
})
1078
1035
1079
1036
Context ("Service Override" , func () {
1080
-
1037
+ var clusterName string
1081
1038
BeforeEach (func () {
1039
+ suffix = fmt .Sprintf ("-%d" , time .Now ().UnixNano ())
1040
+ clusterName = "svc-override" + suffix
1082
1041
cluster = & rabbitmqv1beta1.RabbitmqCluster {
1083
1042
ObjectMeta : metav1.ObjectMeta {
1084
- Name : "svc-override" ,
1043
+ Name : clusterName ,
1085
1044
Namespace : defaultNamespace ,
1086
1045
},
1087
1046
Spec : rabbitmqv1beta1.RabbitmqClusterSpec {
@@ -1114,11 +1073,6 @@ var _ = Describe("RabbitmqClusterController", func() {
1114
1073
waitForClusterCreation (ctx , cluster , client )
1115
1074
})
1116
1075
1117
- AfterEach (func () {
1118
- Expect (client .Delete (ctx , cluster )).To (Succeed ())
1119
- waitForClusterDeletion (ctx , cluster , client )
1120
- })
1121
-
1122
1076
It ("creates a Service with the override applied" , func () {
1123
1077
amqpTargetPort := intstr.IntOrString {IntVal : int32 (5672 )}
1124
1078
managementTargetPort := intstr.IntOrString {IntVal : int32 (15672 )}
@@ -1155,7 +1109,7 @@ var _ = Describe("RabbitmqClusterController", func() {
1155
1109
TargetPort : additionalTargetPort ,
1156
1110
},
1157
1111
))
1158
- Expect (svc .Spec .Selector ).To (Equal (map [string ]string {"a-selector" : "a-label" , "app.kubernetes.io/name" : "svc-override" }))
1112
+ Expect (svc .Spec .Selector ).To (Equal (map [string ]string {"a-selector" : "a-label" , "app.kubernetes.io/name" : clusterName }))
1159
1113
Expect (svc .Spec .SessionAffinity ).To (Equal (corev1 .ServiceAffinityClientIP ))
1160
1114
Expect (svc .Spec .PublishNotReadyAddresses ).To (BeFalse ())
1161
1115
})
@@ -1184,10 +1138,6 @@ var _ = Describe("RabbitmqClusterController", func() {
1184
1138
waitForClusterCreation (ctx , cluster , client )
1185
1139
})
1186
1140
1187
- AfterEach (func () {
1188
- Expect (client .Delete (ctx , cluster )).To (Succeed ())
1189
- })
1190
-
1191
1141
It ("works" , func () {
1192
1142
By ("skipping reconciling if label is set to true" , func () {
1193
1143
Expect (updateWithRetry (cluster , func (r * rabbitmqv1beta1.RabbitmqCluster ) {
@@ -1362,7 +1312,7 @@ func waitForClusterDeletion(ctx context.Context, rabbitmqCluster *rabbitmqv1beta
1362
1312
& rabbitmqClusterCreated ,
1363
1313
)
1364
1314
return apierrors .IsNotFound (err )
1365
- }, ClusterDeletionTimeout , 1 * time .Second ).Should (BeTrue ())
1315
+ }, ClusterDeletionTimeout , 1 * time .Second ).Should (BeTrue (), "expected to delete cluster '%s' but it still exists" , rabbitmqCluster . Name )
1366
1316
1367
1317
}
1368
1318
0 commit comments