From 08407d653624b1649ef1d6aa075c68b41f9938ef Mon Sep 17 00:00:00 2001 From: Monokaix Date: Wed, 11 Dec 2024 18:07:45 +0800 Subject: [PATCH] RB suspension: e2e test Signed-off-by: Monokaix --- test/e2e/clusterpropagationpolicy_test.go | 36 ++++++++++++++++++++++ test/e2e/propagationpolicy_test.go | 37 +++++++++++++++++++++++ 2 files changed, 73 insertions(+) diff --git a/test/e2e/clusterpropagationpolicy_test.go b/test/e2e/clusterpropagationpolicy_test.go index 3aa0266b9c1f..d9b8a2dd714d 100644 --- a/test/e2e/clusterpropagationpolicy_test.go +++ b/test/e2e/clusterpropagationpolicy_test.go @@ -24,6 +24,7 @@ import ( "github.com/onsi/ginkgo/v2" "github.com/onsi/gomega" appsv1 "k8s.io/api/apps/v1" + corev1 "k8s.io/api/core/v1" rbacv1 "k8s.io/api/rbac/v1" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" "k8s.io/apimachinery/pkg/api/meta" @@ -37,6 +38,8 @@ import ( policyv1alpha1 "github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1" workv1alpha1 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha1" workv1alpha2 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha2" + "github.com/karmada-io/karmada/pkg/controllers/binding" + "github.com/karmada-io/karmada/pkg/events" "github.com/karmada-io/karmada/pkg/util/helper" "github.com/karmada-io/karmada/pkg/util/names" "github.com/karmada-io/karmada/test/e2e/framework" @@ -1150,4 +1153,37 @@ var _ = ginkgo.Describe("[Suspension] ClusterPropagationPolicy testing", func() }, pollTimeout, pollInterval).Should(gomega.Equal(true)) }) }) + + ginkgo.It("suspend the CPP scheduling", func() { + ginkgo.By("update the cpp suspension scheduling to true", func() { + policy.Spec.Suspension = &policyv1alpha1.Suspension{ + Scheduling: ptr.To(true), + } + framework.UpdateClusterPropagationPolicyWithSpec(karmadaClient, policy.Name, policy.Spec) + }) + + ginkgo.By("check CRB suspension spec", func() { + framework.WaitClusterResourceBindingFitWith(karmadaClient, resourceBindingName, func(binding *workv1alpha2.ClusterResourceBinding) bool { + return binding.Spec.Suspension != nil && ptr.Deref(binding.Spec.Suspension.Scheduling, false) + }) + }) + + ginkgo.By("check Work Scheduling status condition", func() { + gomega.Eventually(func() bool { + crb, err := karmadaClient.WorkV1alpha2().ClusterResourceBindings().Get(context.TODO(), resourceBindingName, metav1.GetOptions{}) + if err != nil { + return false + } + return crb != nil && meta.IsStatusConditionPresentAndEqual(crb.Status.Conditions, workv1alpha2.Suspended, metav1.ConditionTrue) + }, pollTimeout, pollInterval).Should(gomega.Equal(true)) + }) + + ginkgo.By("check scheduling event", func() { + framework.WaitEventFitWith(kubeClient, "", resourceBindingName, + func(event corev1.Event) bool { + return event.Reason == events.EventReasonBindingScheduling && + event.Message == binding.SuspendedSchedulingConditionMessage + }) + }) + }) }) diff --git a/test/e2e/propagationpolicy_test.go b/test/e2e/propagationpolicy_test.go index 3440d8949ac7..8f68fd041397 100644 --- a/test/e2e/propagationpolicy_test.go +++ b/test/e2e/propagationpolicy_test.go @@ -44,6 +44,7 @@ import ( policyv1alpha1 "github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1" workv1alpha1 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha1" workv1alpha2 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha2" + "github.com/karmada-io/karmada/pkg/controllers/binding" "github.com/karmada-io/karmada/pkg/controllers/execution" "github.com/karmada-io/karmada/pkg/events" "github.com/karmada-io/karmada/pkg/util/helper" @@ -1246,6 +1247,42 @@ var _ = ginkgo.Describe("[Suspension] PropagationPolicy testing", func() { }) }) + ginkgo.It("suspend the PP scheduling", func() { + ginkgo.By("update the pp suspension scheduling to true", func() { + policy.Spec.Suspension = &policyv1alpha1.Suspension{ + Scheduling: ptr.To(true), + } + framework.UpdatePropagationPolicyWithSpec(karmadaClient, policy.Namespace, policy.Name, policy.Spec) + }) + + ginkgo.By("check RB suspension spec", func() { + framework.WaitResourceBindingFitWith(karmadaClient, deployment.Namespace, names.GenerateBindingName(deployment.Kind, deployment.Name), + func(binding *workv1alpha2.ResourceBinding) bool { + return binding.Spec.Suspension != nil && ptr.Deref(binding.Spec.Suspension.Scheduling, false) + }) + }) + + ginkgo.By("check RB Scheduling status condition", func() { + rbName := names.GenerateBindingName(deployment.Kind, deployment.Name) + gomega.Eventually(func() bool { + rb, err := karmadaClient.WorkV1alpha2().ResourceBindings(testNamespace).Get(context.TODO(), rbName, metav1.GetOptions{}) + if err != nil { + return false + } + return rb != nil && meta.IsStatusConditionPresentAndEqual(rb.Status.Conditions, workv1alpha2.Suspended, metav1.ConditionTrue) + }, pollTimeout, pollInterval).Should(gomega.Equal(true)) + }) + + ginkgo.By("check scheduling event", func() { + rbName := names.GenerateBindingName(deployment.Kind, deployment.Name) + framework.WaitEventFitWith(kubeClient, testNamespace, rbName, + func(event corev1.Event) bool { + return event.Reason == events.EventReasonBindingScheduling && + event.Message == binding.SuspendedSchedulingConditionMessage + }) + }) + }) + ginkgo.It("suspension resume", func() { ginkgo.By("update deployment replicas", func() { framework.UpdateDeploymentReplicas(kubeClient, deployment, updateDeploymentReplicas)