From ddf6785672bc0ce2929205441022ce87df452c3d Mon Sep 17 00:00:00 2001 From: r0hansaxena Date: Tue, 7 Apr 2026 09:30:55 +0530 Subject: [PATCH 1/2] add cronjob fallback cases Signed-off-by: r0hansaxena --- pkg/utils/kubeclient/cronjob_test.go | 60 ++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/pkg/utils/kubeclient/cronjob_test.go b/pkg/utils/kubeclient/cronjob_test.go index a8f127050fc..71dfda19dad 100644 --- a/pkg/utils/kubeclient/cronjob_test.go +++ b/pkg/utils/kubeclient/cronjob_test.go @@ -25,6 +25,8 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" batchv1 "k8s.io/api/batch/v1" + batchv1beta1 "k8s.io/api/batch/v1beta1" + corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" @@ -64,6 +66,7 @@ var _ = Describe("GetCronJobStatus", func() { testCronJobs = append(testCronJobs, cj.DeepCopy()) } + _ = batchv1beta1.AddToScheme(testScheme) client = fake.NewFakeClientWithScheme(testScheme, testCronJobs...) // Apply gomonkey patch @@ -106,4 +109,61 @@ var _ = Describe("GetCronJobStatus", func() { Expect(got).To(BeNil()) }) }) + + Context("when batchv1 CronJob is not supported and batchv1beta1 CronJob exists", func() { + It("should return converted status from batchv1beta1", func() { + key := types.NamespacedName{ + Namespace: namespace, + Name: "test-beta", + } + betaCronJob := &batchv1beta1.CronJob{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test-beta", + Namespace: namespace, + }, + Status: batchv1beta1.CronJobStatus{ + Active: []corev1.ObjectReference{ + {Name: "pod-0"}, + }, + LastScheduleTime: &testDate, + LastSuccessfulTime: &testDate, + }, + } + betaClient := fake.NewFakeClientWithScheme(testScheme, betaCronJob.DeepCopy()) + + patch.Reset() + patch = gomonkey.ApplyFunc(compatibility.IsBatchV1CronJobSupported, func() bool { + return false + }) + + got, err := GetCronJobStatus(betaClient, key) + + Expect(err).NotTo(HaveOccurred()) + Expect(got).NotTo(BeNil()) + Expect(got.LastScheduleTime).To(Equal(&testDate)) + Expect(got.LastSuccessfulTime).To(Equal(&testDate)) + Expect(got.Active).To(HaveLen(1)) + Expect(got.Active[0].Name).To(Equal("pod-0")) + }) + }) + + Context("when batchv1 CronJob is not supported and batchv1beta1 CronJob does not exist", func() { + It("should return an error", func() { + key := types.NamespacedName{ + Namespace: namespace, + Name: "test-beta-notexist", + } + emptyClient := fake.NewFakeClientWithScheme(testScheme) + + patch.Reset() + patch = gomonkey.ApplyFunc(compatibility.IsBatchV1CronJobSupported, func() bool { + return false + }) + + got, err := GetCronJobStatus(emptyClient, key) + + Expect(err).To(HaveOccurred()) + Expect(got).To(BeNil()) + }) + }) }) From 921602e146d7991d5861235844dbe376a08ac9ee Mon Sep 17 00:00:00 2001 From: r0hansaxena Date: Tue, 7 Apr 2026 09:50:42 +0530 Subject: [PATCH 2/2] clean up fallback setup Signed-off-by: r0hansaxena --- pkg/utils/kubeclient/cronjob_test.go | 30 ++++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/pkg/utils/kubeclient/cronjob_test.go b/pkg/utils/kubeclient/cronjob_test.go index 71dfda19dad..be16119899a 100644 --- a/pkg/utils/kubeclient/cronjob_test.go +++ b/pkg/utils/kubeclient/cronjob_test.go @@ -17,6 +17,7 @@ limitations under the License. package kubeclient import ( + "sync" "time" "github.com/agiledragon/gomonkey/v2" @@ -42,6 +43,8 @@ var _ = Describe("GetCronJobStatus", func() { testCronJobs []runtime.Object client client.Client patch *gomonkey.Patches + addSchemeOnce sync.Once + addSchemeErr error ) BeforeEach(func() { @@ -66,7 +69,10 @@ var _ = Describe("GetCronJobStatus", func() { testCronJobs = append(testCronJobs, cj.DeepCopy()) } - _ = batchv1beta1.AddToScheme(testScheme) + addSchemeOnce.Do(func() { + addSchemeErr = batchv1beta1.AddToScheme(testScheme) + }) + Expect(addSchemeErr).To(Succeed()) client = fake.NewFakeClientWithScheme(testScheme, testCronJobs...) // Apply gomonkey patch @@ -110,7 +116,14 @@ var _ = Describe("GetCronJobStatus", func() { }) }) - Context("when batchv1 CronJob is not supported and batchv1beta1 CronJob exists", func() { + Context("when batchv1 CronJob is not supported", func() { + BeforeEach(func() { + patch.Reset() + patch = gomonkey.ApplyFunc(compatibility.IsBatchV1CronJobSupported, func() bool { + return false + }) + }) + It("should return converted status from batchv1beta1", func() { key := types.NamespacedName{ Namespace: namespace, @@ -131,11 +144,6 @@ var _ = Describe("GetCronJobStatus", func() { } betaClient := fake.NewFakeClientWithScheme(testScheme, betaCronJob.DeepCopy()) - patch.Reset() - patch = gomonkey.ApplyFunc(compatibility.IsBatchV1CronJobSupported, func() bool { - return false - }) - got, err := GetCronJobStatus(betaClient, key) Expect(err).NotTo(HaveOccurred()) @@ -145,9 +153,6 @@ var _ = Describe("GetCronJobStatus", func() { Expect(got.Active).To(HaveLen(1)) Expect(got.Active[0].Name).To(Equal("pod-0")) }) - }) - - Context("when batchv1 CronJob is not supported and batchv1beta1 CronJob does not exist", func() { It("should return an error", func() { key := types.NamespacedName{ Namespace: namespace, @@ -155,11 +160,6 @@ var _ = Describe("GetCronJobStatus", func() { } emptyClient := fake.NewFakeClientWithScheme(testScheme) - patch.Reset() - patch = gomonkey.ApplyFunc(compatibility.IsBatchV1CronJobSupported, func() bool { - return false - }) - got, err := GetCronJobStatus(emptyClient, key) Expect(err).To(HaveOccurred())