Skip to content

Commit 5e20a42

Browse files
authored
sort drift/diff placement and fix UT (#994)
1 parent 3bb2656 commit 5e20a42

File tree

2 files changed

+35
-15
lines changed

2 files changed

+35
-15
lines changed

pkg/controllers/workgenerator/controller.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -805,6 +805,10 @@ func setBindingStatus(works map[string]*fleetv1beta1.Work, resourceBinding *flee
805805

806806
// cut the list to keep only the max limit
807807
if len(diffedResourcePlacements) > maxDiffedResourcePlacementLimit {
808+
// Sort the slice
809+
sort.Slice(diffedResourcePlacements, func(i, j int) bool {
810+
return utils.LessFuncDiffedResourcePlacements(diffedResourcePlacements[i], diffedResourcePlacements[j])
811+
})
808812
diffedResourcePlacements = diffedResourcePlacements[0:maxDiffedResourcePlacementLimit]
809813
}
810814
if len(diffedResourcePlacements) > 0 {
@@ -814,6 +818,10 @@ func setBindingStatus(works map[string]*fleetv1beta1.Work, resourceBinding *flee
814818

815819
// cut the list to keep only the max limit
816820
if len(driftedResourcePlacements) > maxDriftedResourcePlacementLimit {
821+
// Sort the slice
822+
sort.Slice(driftedResourcePlacements, func(i, j int) bool {
823+
return utils.LessFuncDriftedResourcePlacements(driftedResourcePlacements[i], driftedResourcePlacements[j])
824+
})
817825
driftedResourcePlacements = driftedResourcePlacements[0:maxDriftedResourcePlacementLimit]
818826
}
819827
if len(driftedResourcePlacements) > 0 {

pkg/controllers/workgenerator/controller_test.go

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1323,18 +1323,18 @@ func TestSetBindingStatus(t *testing.T) {
13231323
ResourceIdentifier: fleetv1beta1.ResourceIdentifier{
13241324
Group: "",
13251325
Version: "v1",
1326-
Kind: "Service",
1327-
Name: "svc-name",
1328-
Namespace: "svc-namespace",
1326+
Kind: "ConfigMap",
1327+
Name: "config-name-1",
1328+
Namespace: "config-namespace",
13291329
},
13301330
ObservationTime: metav1.NewTime(timeNow),
13311331
TargetClusterObservedGeneration: 2,
1332-
FirstDriftedObservedTime: metav1.NewTime(timeNow.Add(-time.Hour)),
1332+
FirstDriftedObservedTime: metav1.NewTime(timeNow.Add(-time.Second)),
13331333
ObservedDrifts: []fleetv1beta1.PatchDetail{
13341334
{
1335-
Path: "/spec/ports/0/port",
1336-
ValueInHub: "80",
1337-
ValueInMember: "90",
1335+
Path: "/metadata/labels/label1",
1336+
ValueInHub: "key1",
1337+
ValueInMember: "key2",
13381338
},
13391339
},
13401340
},
@@ -1437,13 +1437,25 @@ func TestSetBindingStatus(t *testing.T) {
14371437
Conditions: []metav1.Condition{
14381438
{
14391439
Type: fleetv1beta1.WorkConditionTypeApplied,
1440-
Status: metav1.ConditionTrue,
1440+
Status: metav1.ConditionFalse,
14411441
},
14421442
},
14431443
},
14441444
},
14451445
},
14461446
wantFailedResourcePlacements: []fleetv1beta1.FailedResourcePlacement{
1447+
{
1448+
ResourceIdentifier: fleetv1beta1.ResourceIdentifier{
1449+
Version: "v1",
1450+
Kind: "ConfigMap",
1451+
Name: "config-name-1",
1452+
Namespace: "config-namespace",
1453+
},
1454+
Condition: metav1.Condition{
1455+
Type: fleetv1beta1.WorkConditionTypeApplied,
1456+
Status: metav1.ConditionFalse,
1457+
},
1458+
},
14471459
{
14481460
ResourceIdentifier: fleetv1beta1.ResourceIdentifier{
14491461
Version: "v1",
@@ -1463,18 +1475,18 @@ func TestSetBindingStatus(t *testing.T) {
14631475
ResourceIdentifier: fleetv1beta1.ResourceIdentifier{
14641476
Group: "",
14651477
Version: "v1",
1466-
Kind: "Service",
1467-
Name: "svc-name",
1468-
Namespace: "svc-namespace",
1478+
Kind: "ConfigMap",
1479+
Name: "config-name-1",
1480+
Namespace: "config-namespace",
14691481
},
14701482
ObservationTime: metav1.NewTime(timeNow),
14711483
TargetClusterObservedGeneration: ptr.To(int64(2)),
1472-
FirstDiffedObservedTime: metav1.NewTime(timeNow.Add(-time.Hour)),
1484+
FirstDiffedObservedTime: metav1.NewTime(timeNow.Add(-time.Second)),
14731485
ObservedDiffs: []fleetv1beta1.PatchDetail{
14741486
{
1475-
Path: "/spec/ports/1/port",
1476-
ValueInHub: "80",
1477-
ValueInMember: "90",
1487+
Path: "/metadata/labels/label1",
1488+
ValueInHub: "key1",
1489+
ValueInMember: "key2",
14781490
},
14791491
},
14801492
},

0 commit comments

Comments
 (0)