From 4ccccdddf898dd62642bafc042a02e00c8dae980 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=88=E5=95=B8=E6=A5=A0?= Date: Mon, 23 Dec 2024 20:12:58 +0800 Subject: [PATCH 1/2] fix: correctly set compareWith when requesting app refresh with delay Signed-off-by: Xiaonan Shen --- controller/appcontroller.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controller/appcontroller.go b/controller/appcontroller.go index a9c44facb6586..a5c9eb73633e4 100644 --- a/controller/appcontroller.go +++ b/controller/appcontroller.go @@ -940,7 +940,7 @@ func (ctrl *ApplicationController) requestAppRefresh(appName string, compareWith key := ctrl.toAppKey(appName) if compareWith != nil && after != nil { - ctrl.appComparisonTypeRefreshQueue.AddAfter(fmt.Sprintf("%s/%d", key, compareWith), *after) + ctrl.appComparisonTypeRefreshQueue.AddAfter(fmt.Sprintf("%s/%d", key, *compareWith), *after) } else { if compareWith != nil { ctrl.refreshRequestedAppsMutex.Lock() From 540664d482f41ec42d5b9c24cabafca1d46f7a55 Mon Sep 17 00:00:00 2001 From: Xiaonan Shen Date: Mon, 23 Dec 2024 20:44:11 +0800 Subject: [PATCH 2/2] test: add UT Signed-off-by: Xiaonan Shen --- controller/appcontroller_test.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/controller/appcontroller_test.go b/controller/appcontroller_test.go index 8c4c3b4d88341..e5d63801dbeaf 100644 --- a/controller/appcontroller_test.go +++ b/controller/appcontroller_test.go @@ -1409,6 +1409,25 @@ func TestNeedRefreshAppStatus(t *testing.T) { assert.Equal(t, CompareWithRecent, compareWith) }) + t.Run("requesting refresh with delay gives correct compression level", func(t *testing.T) { + needRefresh, _, _ := ctrl.needRefreshAppStatus(app, 1*time.Hour, 2*time.Hour) + assert.False(t, needRefresh) + + // use a one-off controller so other tests don't have a manual refresh request + ctrl := newFakeController(&fakeData{apps: []runtime.Object{}}, nil) + + // refresh app with a non-nil delay + // use zero-second delay to test the add later logic without waiting in the test + delay := time.Duration(0) + ctrl.requestAppRefresh(app.Name, CompareWithRecent.Pointer(), &delay) + + ctrl.processAppComparisonTypeQueueItem() + needRefresh, refreshType, compareWith := ctrl.needRefreshAppStatus(app, 1*time.Hour, 2*time.Hour) + assert.True(t, needRefresh) + assert.Equal(t, v1alpha1.RefreshTypeNormal, refreshType) + assert.Equal(t, CompareWithRecent, compareWith) + }) + t.Run("refresh application which status is not reconciled using latest commit", func(t *testing.T) { app := app.DeepCopy() needRefresh, _, _ := ctrl.needRefreshAppStatus(app, 1*time.Hour, 2*time.Hour)