Skip to content

Commit f680d1c

Browse files
committed
add integration tests
1 parent ff4ec69 commit f680d1c

File tree

3 files changed

+590
-108
lines changed

3 files changed

+590
-108
lines changed

pkg/controllers/workgenerator/controller.go

Lines changed: 33 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -761,16 +761,26 @@ func setBindingStatus(works map[string]*fleetv1beta1.Work, resourceBinding *flee
761761
resourceBinding.SetConditions(availableCond)
762762
}
763763
resourceBinding.Status.FailedPlacements = nil
764+
resourceBinding.Status.DiffedPlacements = nil
765+
resourceBinding.Status.DriftedPlacements = nil
764766
// collect and set the failed resource placements to the binding if not all the works are available
765767
if appliedCond.Status != metav1.ConditionTrue || availableCond.Status != metav1.ConditionTrue {
766-
failedResourcePlacements := make([]fleetv1beta1.FailedResourcePlacement, 0, maxFailedResourcePlacementLimit) // preallocate the memory
768+
failedResourcePlacements := make([]fleetv1beta1.FailedResourcePlacement, 0, maxFailedResourcePlacementLimit) // preallocate the memory
769+
diffedResourcePlacements := make([]fleetv1beta1.DiffedResourcePlacement, 0, maxDiffedResourcePlacementLimit) // preallocate the memory
770+
driftedResourcePlacements := make([]fleetv1beta1.DriftedResourcePlacement, 0, maxDriftedResourcePlacementLimit) // preallocate the memory
767771
for _, w := range works {
768772
if w.DeletionTimestamp != nil {
769773
klog.V(2).InfoS("Ignoring the deleting work", "clusterResourceBinding", bindingRef, "work", klog.KObj(w))
770774
continue // ignore the deleting work
771775
}
772776
failedManifests := extractFailedResourcePlacementsFromWork(w)
773777
failedResourcePlacements = append(failedResourcePlacements, failedManifests...)
778+
779+
diffedManifests := extractDiffedResourcePlacementsFromWork(w)
780+
diffedResourcePlacements = append(diffedResourcePlacements, diffedManifests...)
781+
782+
driftedManifests := extractDriftedResourcePlacementsFromWork(w)
783+
driftedResourcePlacements = append(driftedResourcePlacements, driftedManifests...)
774784
}
775785
// cut the list to keep only the max limit
776786
if len(failedResourcePlacements) > maxFailedResourcePlacementLimit {
@@ -780,39 +790,26 @@ func setBindingStatus(works map[string]*fleetv1beta1.Work, resourceBinding *flee
780790
if len(failedResourcePlacements) > 0 {
781791
klog.V(2).InfoS("Populated failed manifests", "clusterResourceBinding", bindingRef, "numberOfFailedPlacements", len(failedResourcePlacements))
782792
}
783-
}
784793

785-
resourceBinding.Status.DriftedPlacements = nil
786-
resourceBinding.Status.DiffedPlacements = nil
787-
driftedResourcePlacements := make([]fleetv1beta1.DriftedResourcePlacement, 0, maxDriftedResourcePlacementLimit) // preallocate the memory
788-
diffedResourcePlacements := make([]fleetv1beta1.DiffedResourcePlacement, 0, maxDiffedResourcePlacementLimit) // preallocate the memory
789-
for _, w := range works {
790-
if w.DeletionTimestamp != nil {
791-
klog.V(2).InfoS("Ignoring the deleting work", "clusterResourceBinding", bindingRef, "work", klog.KObj(w))
792-
continue // ignore the deleting work
794+
// cut the list to keep only the max limit
795+
if len(diffedResourcePlacements) > maxDiffedResourcePlacementLimit {
796+
diffedResourcePlacements = diffedResourcePlacements[0:maxDiffedResourcePlacementLimit]
793797
}
794-
driftedManifests := extractDriftedResourcePlacementsFromWork(w)
795-
driftedResourcePlacements = append(driftedResourcePlacements, driftedManifests...)
796-
797-
diffedManifests := extractDiffedResourcePlacementsFromWork(w)
798-
diffedResourcePlacements = append(diffedResourcePlacements, diffedManifests...)
799-
}
800-
// cut the list to keep only the max limit
801-
if len(driftedResourcePlacements) > maxDriftedResourcePlacementLimit {
802-
driftedResourcePlacements = driftedResourcePlacements[0:maxDriftedResourcePlacementLimit]
803-
}
804-
if len(driftedResourcePlacements) > 0 {
805-
resourceBinding.Status.DriftedPlacements = driftedResourcePlacements
806-
klog.V(2).InfoS("Populated drifted manifests", "clusterResourceBinding", bindingRef, "numberOfDriftedPlacements", len(driftedResourcePlacements))
807-
}
808798

809-
// cut the list to keep only the max limit
810-
if len(diffedResourcePlacements) > maxDiffedResourcePlacementLimit {
811-
diffedResourcePlacements = diffedResourcePlacements[0:maxDiffedResourcePlacementLimit]
812-
}
813-
if len(diffedResourcePlacements) > 0 {
814799
resourceBinding.Status.DiffedPlacements = diffedResourcePlacements
815-
klog.V(2).InfoS("Populated diffed manifests", "clusterResourceBinding", bindingRef, "numberOfDiffedPlacements", len(diffedResourcePlacements))
800+
if len(diffedResourcePlacements) > 0 {
801+
klog.V(2).InfoS("Populated diffed manifests", "clusterResourceBinding", bindingRef, "numberOfDiffedPlacements", len(diffedResourcePlacements))
802+
}
803+
804+
// cut the list to keep only the max limit
805+
if len(driftedResourcePlacements) > maxDriftedResourcePlacementLimit {
806+
driftedResourcePlacements = driftedResourcePlacements[0:maxDriftedResourcePlacementLimit]
807+
}
808+
809+
resourceBinding.Status.DriftedPlacements = driftedResourcePlacements
810+
if len(driftedResourcePlacements) > 0 {
811+
klog.V(2).InfoS("Populated drifted manifests", "clusterResourceBinding", bindingRef, "numberOfDriftedPlacements", len(driftedResourcePlacements))
812+
}
816813
}
817814
}
818815

@@ -1160,8 +1157,12 @@ func (r *Reconciler) SetupWithManager(mgr controllerruntime.Manager) error {
11601157
// we need to compare the failed placement if the work is not applied or available
11611158
oldFailedPlacements := extractFailedResourcePlacementsFromWork(oldWork)
11621159
newFailedPlacements := extractFailedResourcePlacementsFromWork(newWork)
1163-
if utils.IsFailedResourcePlacementsEqual(oldFailedPlacements, newFailedPlacements) {
1164-
klog.V(2).InfoS("The failed placement list didn't change on failed work, no need to reconcile", "oldWork", klog.KObj(oldWork), "newWork", klog.KObj(newWork))
1160+
oldDiffedPlacements := extractDiffedResourcePlacementsFromWork(oldWork)
1161+
newDiffedPlacements := extractDiffedResourcePlacementsFromWork(newWork)
1162+
oldDriftedPlacements := extractDriftedResourcePlacementsFromWork(oldWork)
1163+
newDriftedPlacements := extractDriftedResourcePlacementsFromWork(newWork)
1164+
if utils.IsDriftedResourcePlacementsEqual(oldDriftedPlacements, newDriftedPlacements) && utils.IsDiffedResourcePlacementsEqual(oldDiffedPlacements, newDiffedPlacements) && utils.IsFailedResourcePlacementsEqual(oldFailedPlacements, newFailedPlacements) {
1165+
klog.V(2).InfoS("The placement lists didn't change on failed work, no need to reconcile", "oldWork", klog.KObj(oldWork), "newWork", klog.KObj(newWork))
11651166
return
11661167
}
11671168
} else {

0 commit comments

Comments
 (0)