Skip to content

Commit e88d0bf

Browse files
fix: fix the override e2e flakiness by waiting for the override snapshot to appear (#30)
1 parent 376572c commit e88d0bf

File tree

2 files changed

+122
-95
lines changed

2 files changed

+122
-95
lines changed

test/e2e/placement_cro_test.go

Lines changed: 49 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import (
3737
var _ = Context("creating clusterResourceOverride (selecting all clusters) to override all resources under the namespace", Ordered, func() {
3838
crpName := fmt.Sprintf(crpNameTemplate, GinkgoParallelProcess())
3939
croName := fmt.Sprintf(croNameTemplate, GinkgoParallelProcess())
40+
croSnapShotName := fmt.Sprintf(placementv1alpha1.OverrideSnapshotNameFmt, croName, 0)
4041

4142
BeforeAll(func() {
4243
By("creating work resources")
@@ -69,21 +70,14 @@ var _ = Context("creating clusterResourceOverride (selecting all clusters) to ov
6970
}
7071
By(fmt.Sprintf("creating clusterResourceOverride %s", croName))
7172
Expect(hubClient.Create(ctx, cro)).To(Succeed(), "Failed to create clusterResourceOverride %s", croName)
73+
//this is to make sure the cro snapshot is created before the CRP
74+
Eventually(func() error {
75+
croSnap := &placementv1alpha1.ClusterResourceOverrideSnapshot{}
76+
return hubClient.Get(ctx, types.NamespacedName{Name: croSnapShotName}, croSnap)
77+
}, eventuallyDuration, eventuallyInterval).Should(Succeed(), "Failed to update ro as expected", crpName)
7278

7379
// Create the CRP.
74-
crp := &placementv1beta1.ClusterResourcePlacement{
75-
ObjectMeta: metav1.ObjectMeta{
76-
Name: crpName,
77-
// Add a custom finalizer; this would allow us to better observe
78-
// the behavior of the controllers.
79-
Finalizers: []string{customDeletionBlockerFinalizer},
80-
},
81-
Spec: placementv1beta1.ClusterResourcePlacementSpec{
82-
ResourceSelectors: workResourceSelector(),
83-
},
84-
}
85-
By(fmt.Sprintf("creating placement %s", crpName))
86-
Expect(hubClient.Create(ctx, crp)).To(Succeed(), "Failed to create CRP %s", crpName)
80+
createCRP(crpName)
8781
})
8882

8983
AfterAll(func() {
@@ -95,7 +89,7 @@ var _ = Context("creating clusterResourceOverride (selecting all clusters) to ov
9589
})
9690

9791
It("should update CRP status as expected", func() {
98-
wantCRONames := []string{fmt.Sprintf(placementv1alpha1.OverrideSnapshotNameFmt, croName, 0)}
92+
wantCRONames := []string{croSnapShotName}
9993
crpStatusUpdatedActual := crpStatusWithOverrideUpdatedActual(workResourceIdentifiers(), allMemberClusterNames, "0", wantCRONames, nil)
10094
Eventually(crpStatusUpdatedActual, eventuallyDuration, eventuallyInterval).Should(Succeed(), "Failed to update CRP %s status as expected", crpName)
10195
})
@@ -213,6 +207,7 @@ var _ = Context("creating clusterResourceOverride (selecting all clusters) to ov
213207
var _ = Context("creating clusterResourceOverride with multiple jsonPatchOverrides", Ordered, func() {
214208
crpName := fmt.Sprintf(crpNameTemplate, GinkgoParallelProcess())
215209
croName := fmt.Sprintf(croNameTemplate, GinkgoParallelProcess())
210+
croSnapShotName := fmt.Sprintf(placementv1alpha1.OverrideSnapshotNameFmt, croName, 0)
216211

217212
BeforeAll(func() {
218213
By("creating work resources")
@@ -251,20 +246,14 @@ var _ = Context("creating clusterResourceOverride with multiple jsonPatchOverrid
251246
By(fmt.Sprintf("creating clusterResourceOverride %s", croName))
252247
Expect(hubClient.Create(ctx, cro)).To(Succeed(), "Failed to create clusterResourceOverride %s", croName)
253248

249+
//this is to make sure the cro snapshot is created before the CRP
250+
Eventually(func() error {
251+
croSnap := &placementv1alpha1.ClusterResourceOverrideSnapshot{}
252+
return hubClient.Get(ctx, types.NamespacedName{Name: croSnapShotName}, croSnap)
253+
}, eventuallyDuration, eventuallyInterval).Should(Succeed(), "Failed to update ro as expected", crpName)
254+
254255
// Create the CRP.
255-
crp := &placementv1beta1.ClusterResourcePlacement{
256-
ObjectMeta: metav1.ObjectMeta{
257-
Name: crpName,
258-
// Add a custom finalizer; this would allow us to better observe
259-
// the behavior of the controllers.
260-
Finalizers: []string{customDeletionBlockerFinalizer},
261-
},
262-
Spec: placementv1beta1.ClusterResourcePlacementSpec{
263-
ResourceSelectors: workResourceSelector(),
264-
},
265-
}
266-
By(fmt.Sprintf("creating placement %s", crpName))
267-
Expect(hubClient.Create(ctx, crp)).To(Succeed(), "Failed to create CRP %s", crpName)
256+
createCRP(crpName)
268257
})
269258

270259
AfterAll(func() {
@@ -276,7 +265,7 @@ var _ = Context("creating clusterResourceOverride with multiple jsonPatchOverrid
276265
})
277266

278267
It("should update CRP status as expected", func() {
279-
wantCRONames := []string{fmt.Sprintf(placementv1alpha1.OverrideSnapshotNameFmt, croName, 0)}
268+
wantCRONames := []string{croSnapShotName}
280269
crpStatusUpdatedActual := crpStatusWithOverrideUpdatedActual(workResourceIdentifiers(), allMemberClusterNames, "0", wantCRONames, nil)
281270
Eventually(crpStatusUpdatedActual, eventuallyDuration, eventuallyInterval).Should(Succeed(), "Failed to update CRP %s status as expected", crpName)
282271
})
@@ -312,6 +301,7 @@ var _ = Context("creating clusterResourceOverride with multiple jsonPatchOverrid
312301
var _ = Context("creating clusterResourceOverride with different rules for each cluster", Ordered, func() {
313302
crpName := fmt.Sprintf(crpNameTemplate, GinkgoParallelProcess())
314303
croName := fmt.Sprintf(croNameTemplate, GinkgoParallelProcess())
304+
croSnapShotName := fmt.Sprintf(placementv1alpha1.OverrideSnapshotNameFmt, croName, 0)
315305

316306
BeforeAll(func() {
317307
By("creating work resources")
@@ -387,20 +377,14 @@ var _ = Context("creating clusterResourceOverride with different rules for each
387377
By(fmt.Sprintf("creating clusterResourceOverride %s", croName))
388378
Expect(hubClient.Create(ctx, cro)).To(Succeed(), "Failed to create clusterResourceOverride %s", croName)
389379

380+
//this is to make sure the cro snapshot is created before the CRP
381+
Eventually(func() error {
382+
croSnap := &placementv1alpha1.ClusterResourceOverrideSnapshot{}
383+
return hubClient.Get(ctx, types.NamespacedName{Name: croSnapShotName}, croSnap)
384+
}, eventuallyDuration, eventuallyInterval).Should(Succeed(), "Failed to update ro as expected", crpName)
385+
390386
// Create the CRP.
391-
crp := &placementv1beta1.ClusterResourcePlacement{
392-
ObjectMeta: metav1.ObjectMeta{
393-
Name: crpName,
394-
// Add a custom finalizer; this would allow us to better observe
395-
// the behavior of the controllers.
396-
Finalizers: []string{customDeletionBlockerFinalizer},
397-
},
398-
Spec: placementv1beta1.ClusterResourcePlacementSpec{
399-
ResourceSelectors: workResourceSelector(),
400-
},
401-
}
402-
By(fmt.Sprintf("creating placement %s", crpName))
403-
Expect(hubClient.Create(ctx, crp)).To(Succeed(), "Failed to create CRP %s", crpName)
387+
createCRP(crpName)
404388
})
405389

406390
AfterAll(func() {
@@ -412,7 +396,7 @@ var _ = Context("creating clusterResourceOverride with different rules for each
412396
})
413397

414398
It("should update CRP status as expected", func() {
415-
wantCRONames := []string{fmt.Sprintf(placementv1alpha1.OverrideSnapshotNameFmt, croName, 0)}
399+
wantCRONames := []string{croSnapShotName}
416400
crpStatusUpdatedActual := crpStatusWithOverrideUpdatedActual(workResourceIdentifiers(), allMemberClusterNames, "0", wantCRONames, nil)
417401
Eventually(crpStatusUpdatedActual, eventuallyDuration, eventuallyInterval).Should(Succeed(), "Failed to update CRP %s status as expected", crpName)
418402
})
@@ -429,7 +413,7 @@ var _ = Context("creating clusterResourceOverride with different rules for each
429413
})
430414
})
431415

432-
var _ = Context("creating clusterResourceOverride with different rules for each cluster", Ordered, func() {
416+
var _ = Context("creating clusterResourceOverride with different rules for each cluster that is attached to a CRP", Ordered, func() {
433417
crpName := fmt.Sprintf(crpNameTemplate, GinkgoParallelProcess())
434418
croName := fmt.Sprintf(croNameTemplate, GinkgoParallelProcess())
435419

@@ -507,6 +491,7 @@ var _ = Context("creating clusterResourceOverride with different rules for each
507491
var _ = Context("creating clusterResourceOverride with incorrect path", Ordered, func() {
508492
crpName := fmt.Sprintf(crpNameTemplate, GinkgoParallelProcess())
509493
croName := fmt.Sprintf(croNameTemplate, GinkgoParallelProcess())
494+
croSnapShotName := fmt.Sprintf(placementv1alpha1.OverrideSnapshotNameFmt, croName, 0)
510495

511496
BeforeAll(func() {
512497
By("creating work resources")
@@ -540,20 +525,14 @@ var _ = Context("creating clusterResourceOverride with incorrect path", Ordered,
540525
By(fmt.Sprintf("creating clusterResourceOverride %s", croName))
541526
Expect(hubClient.Create(ctx, cro)).To(Succeed(), "Failed to create clusterResourceOverride %s", croName)
542527

528+
//this is to make sure the cro snapshot is created before the CRP
529+
Eventually(func() error {
530+
croSnap := &placementv1alpha1.ClusterResourceOverrideSnapshot{}
531+
return hubClient.Get(ctx, types.NamespacedName{Name: croSnapShotName}, croSnap)
532+
}, eventuallyDuration, eventuallyInterval).Should(Succeed(), "Failed to update ro as expected", crpName)
533+
543534
// Create the CRP.
544-
crp := &placementv1beta1.ClusterResourcePlacement{
545-
ObjectMeta: metav1.ObjectMeta{
546-
Name: crpName,
547-
// Add a custom finalizer; this would allow us to better observe
548-
// the behavior of the controllers.
549-
Finalizers: []string{customDeletionBlockerFinalizer},
550-
},
551-
Spec: placementv1beta1.ClusterResourcePlacementSpec{
552-
ResourceSelectors: workResourceSelector(),
553-
},
554-
}
555-
By(fmt.Sprintf("creating placement %s", crpName))
556-
Expect(hubClient.Create(ctx, crp)).To(Succeed(), "Failed to create CRP %s", crpName)
535+
createCRP(crpName)
557536
})
558537

559538
AfterAll(func() {
@@ -565,7 +544,7 @@ var _ = Context("creating clusterResourceOverride with incorrect path", Ordered,
565544
})
566545

567546
It("should update CRP status as expected", func() {
568-
wantCRONames := []string{fmt.Sprintf(placementv1alpha1.OverrideSnapshotNameFmt, croName, 0)}
547+
wantCRONames := []string{croSnapShotName}
569548
crpStatusUpdatedActual := crpStatusWithOverrideUpdatedFailedActual(workResourceIdentifiers(), allMemberClusterNames, "0", wantCRONames, nil)
570549
Eventually(crpStatusUpdatedActual, eventuallyDuration, eventuallyInterval).Should(Succeed(), "Failed to update CRP %s status as expected", crpName)
571550
})
@@ -577,6 +556,7 @@ var _ = Context("creating clusterResourceOverride with incorrect path", Ordered,
577556
var _ = Context("creating clusterResourceOverride with and resource becomes invalid after override", Ordered, func() {
578557
crpName := fmt.Sprintf(crpNameTemplate, GinkgoParallelProcess())
579558
croName := fmt.Sprintf(croNameTemplate, GinkgoParallelProcess())
559+
croSnapShotName := fmt.Sprintf(placementv1alpha1.OverrideSnapshotNameFmt, croName, 0)
580560

581561
BeforeAll(func() {
582562
By("creating work resources")
@@ -610,20 +590,14 @@ var _ = Context("creating clusterResourceOverride with and resource becomes inva
610590
By(fmt.Sprintf("creating clusterResourceOverride %s", croName))
611591
Expect(hubClient.Create(ctx, cro)).To(Succeed(), "Failed to create clusterResourceOverride %s", croName)
612592

593+
//this is to make sure the cro snapshot is created before the CRP
594+
Eventually(func() error {
595+
croSnap := &placementv1alpha1.ClusterResourceOverrideSnapshot{}
596+
return hubClient.Get(ctx, types.NamespacedName{Name: croSnapShotName}, croSnap)
597+
}, eventuallyDuration, eventuallyInterval).Should(Succeed(), "Failed to update ro as expected", crpName)
598+
613599
// Create the CRP.
614-
crp := &placementv1beta1.ClusterResourcePlacement{
615-
ObjectMeta: metav1.ObjectMeta{
616-
Name: crpName,
617-
// Add a custom finalizer; this would allow us to better observe
618-
// the behavior of the controllers.
619-
Finalizers: []string{customDeletionBlockerFinalizer},
620-
},
621-
Spec: placementv1beta1.ClusterResourcePlacementSpec{
622-
ResourceSelectors: workResourceSelector(),
623-
},
624-
}
625-
By(fmt.Sprintf("creating placement %s", crpName))
626-
Expect(hubClient.Create(ctx, crp)).To(Succeed(), "Failed to create CRP %s", crpName)
600+
createCRP(crpName)
627601
})
628602

629603
AfterAll(func() {
@@ -635,7 +609,7 @@ var _ = Context("creating clusterResourceOverride with and resource becomes inva
635609
})
636610

637611
It("should update CRP status as expected", func() {
638-
wantCRONames := []string{fmt.Sprintf(placementv1alpha1.OverrideSnapshotNameFmt, croName, 0)}
612+
wantCRONames := []string{croSnapShotName}
639613
crpStatusUpdatedActual := crpStatusWithWorkSynchronizedUpdatedFailedActual(workResourceIdentifiers(), allMemberClusterNames, "0", wantCRONames, nil)
640614
Eventually(crpStatusUpdatedActual, eventuallyDuration, eventuallyInterval).Should(Succeed(), "Failed to update CRP %s status as expected", crpName)
641615
})
@@ -658,6 +632,9 @@ var _ = Context("creating clusterResourceOverride with delete rules for one clus
658632
Name: croName,
659633
},
660634
Spec: placementv1alpha1.ClusterResourceOverrideSpec{
635+
Placement: &placementv1alpha1.PlacementRef{
636+
Name: crpName, // assigned CRP name
637+
},
661638
ClusterResourceSelectors: workResourceSelector(),
662639
Policy: &placementv1alpha1.OverridePolicy{
663640
OverrideRules: []placementv1alpha1.OverrideRule{
@@ -700,19 +677,7 @@ var _ = Context("creating clusterResourceOverride with delete rules for one clus
700677
Expect(hubClient.Create(ctx, cro)).To(Succeed(), "Failed to create clusterResourceOverride %s", croName)
701678

702679
// Create the CRP.
703-
crp := &placementv1beta1.ClusterResourcePlacement{
704-
ObjectMeta: metav1.ObjectMeta{
705-
Name: crpName,
706-
// Add a custom finalizer; this would allow us to better observe
707-
// the behavior of the controllers.
708-
Finalizers: []string{customDeletionBlockerFinalizer},
709-
},
710-
Spec: placementv1beta1.ClusterResourcePlacementSpec{
711-
ResourceSelectors: workResourceSelector(),
712-
},
713-
}
714-
By(fmt.Sprintf("creating placement %s", crpName))
715-
Expect(hubClient.Create(ctx, crp)).To(Succeed(), "Failed to create CRP %s", crpName)
680+
createCRP(crpName)
716681
})
717682

718683
AfterAll(func() {

0 commit comments

Comments
 (0)