From 911cc449749b01390a99117b5f9262acc2b74fb8 Mon Sep 17 00:00:00 2001 From: changzhen Date: Fri, 7 Jun 2024 11:37:06 +0800 Subject: [PATCH] remove pp/cpp name length limit Signed-off-by: changzhen --- pkg/util/validation/validation.go | 3 - .../clusterpropagationpolicy/mutating.go | 6 - pkg/webhook/propagationpolicy/mutating.go | 5 - test/e2e/clusterpropagationpolicy_test.go | 94 +++++++++++---- test/e2e/propagationpolicy_test.go | 114 ++++++++++++------ 5 files changed, 148 insertions(+), 74 deletions(-) diff --git a/pkg/util/validation/validation.go b/pkg/util/validation/validation.go index 084cae023..3c3cfc8ae 100644 --- a/pkg/util/validation/validation.go +++ b/pkg/util/validation/validation.go @@ -31,9 +31,6 @@ import ( "github.com/karmada-io/karmada/pkg/util" ) -// LabelValueMaxLength is a label's max length -const LabelValueMaxLength int = 63 - // ValidatePropagationSpec validates a PropagationSpec before creation or update. func ValidatePropagationSpec(spec policyv1alpha1.PropagationSpec) field.ErrorList { var allErrs field.ErrorList diff --git a/pkg/webhook/clusterpropagationpolicy/mutating.go b/pkg/webhook/clusterpropagationpolicy/mutating.go index 2905637d1..5c89e8479 100644 --- a/pkg/webhook/clusterpropagationpolicy/mutating.go +++ b/pkg/webhook/clusterpropagationpolicy/mutating.go @@ -19,7 +19,6 @@ package clusterpropagationpolicy import ( "context" "encoding/json" - "fmt" "net/http" "github.com/google/uuid" @@ -30,7 +29,6 @@ import ( policyv1alpha1 "github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1" "github.com/karmada-io/karmada/pkg/util" "github.com/karmada-io/karmada/pkg/util/helper" - "github.com/karmada-io/karmada/pkg/util/validation" ) // MutatingAdmission mutates API request if necessary. @@ -67,10 +65,6 @@ func (a *MutatingAdmission) Handle(_ context.Context, req admission.Request) adm helper.AddTolerations(&policy.Spec.Placement, helper.NewNotReadyToleration(a.DefaultNotReadyTolerationSeconds), helper.NewUnreachableToleration(a.DefaultUnreachableTolerationSeconds)) - if len(policy.Name) > validation.LabelValueMaxLength { - return admission.Errored(http.StatusBadRequest, fmt.Errorf("ClusterPropagationPolicy's name should be no more than %d characters", validation.LabelValueMaxLength)) - } - if helper.ContainsServiceImport(policy.Spec.ResourceSelectors) { policy.Spec.PropagateDeps = true } diff --git a/pkg/webhook/propagationpolicy/mutating.go b/pkg/webhook/propagationpolicy/mutating.go index 98d8185dd..9393ebfb3 100644 --- a/pkg/webhook/propagationpolicy/mutating.go +++ b/pkg/webhook/propagationpolicy/mutating.go @@ -19,7 +19,6 @@ package propagationpolicy import ( "context" "encoding/json" - "fmt" "net/http" "github.com/google/uuid" @@ -31,7 +30,6 @@ import ( policyv1alpha1 "github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1" "github.com/karmada-io/karmada/pkg/util" "github.com/karmada-io/karmada/pkg/util/helper" - "github.com/karmada-io/karmada/pkg/util/validation" ) // MutatingAdmission mutates API request if necessary. @@ -75,9 +73,6 @@ func (a *MutatingAdmission) Handle(_ context.Context, req admission.Request) adm } } - if len(policy.Name) > validation.LabelValueMaxLength { - return admission.Errored(http.StatusBadRequest, fmt.Errorf("PropagationPolicy's name should be no more than %d characters", validation.LabelValueMaxLength)) - } // Set default spread constraints if both 'SpreadByField' and 'SpreadByLabel' not set. helper.SetDefaultSpreadConstraints(policy.Spec.Placement.SpreadConstraints) helper.AddTolerations(&policy.Spec.Placement, helper.NewNotReadyToleration(a.DefaultNotReadyTolerationSeconds), diff --git a/test/e2e/clusterpropagationpolicy_test.go b/test/e2e/clusterpropagationpolicy_test.go index c019c9480..913dbf3d6 100644 --- a/test/e2e/clusterpropagationpolicy_test.go +++ b/test/e2e/clusterpropagationpolicy_test.go @@ -43,13 +43,22 @@ import ( testhelper "github.com/karmada-io/karmada/test/helper" ) -var _ = ginkgo.Describe("[BasicClusterPropagation] propagation testing", func() { +var _ = ginkgo.Describe("[BasicCase] ClusterPropagationPolicy testing", func() { + var policyName string + var policy *policyv1alpha1.ClusterPropagationPolicy + + ginkgo.JustBeforeEach(func() { + framework.CreateClusterPropagationPolicy(karmadaClient, policy) + ginkgo.DeferCleanup(func() { + framework.RemoveClusterPropagationPolicy(karmadaClient, policy.Name) + }) + }) + ginkgo.Context("CustomResourceDefinition propagation testing", func() { var crdGroup string var randStr string var crdSpecNames apiextensionsv1.CustomResourceDefinitionNames var crd *apiextensionsv1.CustomResourceDefinition - var crdPolicy *policyv1alpha1.ClusterPropagationPolicy ginkgo.BeforeEach(func() { crdGroup = fmt.Sprintf("example-%s.karmada.io", rand.String(RandomStrLength)) @@ -61,7 +70,8 @@ var _ = ginkgo.Describe("[BasicClusterPropagation] propagation testing", func() Singular: fmt.Sprintf("foo%s", randStr), } crd = testhelper.NewCustomResourceDefinition(crdGroup, crdSpecNames, apiextensionsv1.NamespaceScoped) - crdPolicy = testhelper.NewClusterPropagationPolicy(crd.Name, []policyv1alpha1.ResourceSelector{ + policyName = crd.Name + policy = testhelper.NewClusterPropagationPolicy(policyName, []policyv1alpha1.ResourceSelector{ { APIVersion: crd.APIVersion, Kind: crd.Kind, @@ -75,10 +85,8 @@ var _ = ginkgo.Describe("[BasicClusterPropagation] propagation testing", func() }) ginkgo.BeforeEach(func() { - framework.CreateClusterPropagationPolicy(karmadaClient, crdPolicy) framework.CreateCRD(dynamicClient, crd) ginkgo.DeferCleanup(func() { - framework.RemoveClusterPropagationPolicy(karmadaClient, crdPolicy.Name) framework.RemoveCRD(dynamicClient, crd.Name) framework.WaitCRDDisappearedOnClusters(framework.ClusterNames(), crd.Name) }) @@ -94,8 +102,6 @@ var _ = ginkgo.Describe("[BasicClusterPropagation] propagation testing", func() ginkgo.Context("ClusterRole propagation testing", func() { var ( clusterRoleName string - policyName string - policy *policyv1alpha1.ClusterPropagationPolicy clusterRole *rbacv1.ClusterRole ) @@ -118,10 +124,8 @@ var _ = ginkgo.Describe("[BasicClusterPropagation] propagation testing", func() }) ginkgo.BeforeEach(func() { - framework.CreateClusterPropagationPolicy(karmadaClient, policy) framework.CreateClusterRole(kubeClient, clusterRole) ginkgo.DeferCleanup(func() { - framework.RemoveClusterPropagationPolicy(karmadaClient, policy.Name) framework.RemoveClusterRole(kubeClient, clusterRole.Name) framework.WaitClusterRoleDisappearOnClusters(framework.ClusterNames(), clusterRole.Name) }) @@ -138,8 +142,6 @@ var _ = ginkgo.Describe("[BasicClusterPropagation] propagation testing", func() ginkgo.Context("ClusterRoleBinding propagation testing", func() { var ( clusterRoleBindingName string - policyName string - policy *policyv1alpha1.ClusterPropagationPolicy clusterRoleBinding *rbacv1.ClusterRoleBinding ) @@ -162,10 +164,8 @@ var _ = ginkgo.Describe("[BasicClusterPropagation] propagation testing", func() }) ginkgo.BeforeEach(func() { - framework.CreateClusterPropagationPolicy(karmadaClient, policy) framework.CreateClusterRoleBinding(kubeClient, clusterRoleBinding) ginkgo.DeferCleanup(func() { - framework.RemoveClusterPropagationPolicy(karmadaClient, policy.Name) framework.RemoveClusterRoleBinding(kubeClient, clusterRoleBinding.Name) framework.WaitClusterRoleBindingDisappearOnClusters(framework.ClusterNames(), clusterRoleBinding.Name) }) @@ -180,13 +180,12 @@ var _ = ginkgo.Describe("[BasicClusterPropagation] propagation testing", func() }) ginkgo.Context("Deployment propagation testing", func() { - var policy *policyv1alpha1.ClusterPropagationPolicy var deployment *appsv1.Deployment var targetMember string ginkgo.BeforeEach(func() { targetMember = framework.ClusterNames()[0] - policyName := cppNamePrefix + rand.String(RandomStrLength) + policyName = cppNamePrefix + rand.String(RandomStrLength) deploymentName := deploymentNamePrefix + rand.String(RandomStrLength) deployment = testhelper.NewDeployment(testNamespace, deploymentName) @@ -204,10 +203,8 @@ var _ = ginkgo.Describe("[BasicClusterPropagation] propagation testing", func() }) ginkgo.BeforeEach(func() { - framework.CreateClusterPropagationPolicy(karmadaClient, policy) framework.CreateDeployment(kubeClient, deployment) ginkgo.DeferCleanup(func() { - framework.RemoveClusterPropagationPolicy(karmadaClient, policy.Name) framework.RemoveDeployment(kubeClient, deployment.Namespace, deployment.Name) }) }) @@ -227,7 +224,62 @@ var _ = ginkgo.Describe("[BasicClusterPropagation] propagation testing", func() }) }) -var _ = ginkgo.Describe("[AdvancedClusterPropagation] propagation testing", func() { +var _ = ginkgo.Describe("[CornerCase] ClusterPropagationPolicy testing", func() { + var policyName string + var policy *policyv1alpha1.ClusterPropagationPolicy + + ginkgo.JustBeforeEach(func() { + framework.CreateClusterPropagationPolicy(karmadaClient, policy) + ginkgo.DeferCleanup(func() { + framework.RemoveClusterPropagationPolicy(karmadaClient, policy.Name) + }) + }) + + ginkgo.Context("Deployment propagation testing", func() { + var deployment *appsv1.Deployment + var targetMember string + + ginkgo.BeforeEach(func() { + targetMember = framework.ClusterNames()[0] + policyName = cppNamePrefix + rand.String(RandomStrLength) + deploymentName := deploymentNamePrefix + rand.String(RandomStrLength) + + deployment = testhelper.NewDeployment(testNamespace, deploymentName) + policy = testhelper.NewClusterPropagationPolicy(policyName, []policyv1alpha1.ResourceSelector{ + { + APIVersion: deployment.APIVersion, + Kind: deployment.Kind, + Name: deployment.Name, + }}, policyv1alpha1.Placement{ + ClusterAffinity: &policyv1alpha1.ClusterAffinity{ + ClusterNames: []string{targetMember}, + }, + }) + }) + + ginkgo.BeforeEach(func() { + framework.CreateDeployment(kubeClient, deployment) + ginkgo.DeferCleanup(func() { + framework.RemoveDeployment(kubeClient, deployment.Namespace, deployment.Name) + }) + }) + + ginkgo.It("deployment propagation testing", func() { + framework.WaitDeploymentPresentOnClusterFitWith(targetMember, deployment.Namespace, deployment.Name, + func(d *appsv1.Deployment) bool { + return *d.Spec.Replicas == *deployment.Spec.Replicas + }) + + framework.UpdateDeploymentReplicas(kubeClient, deployment, updateDeploymentReplicas) + framework.WaitDeploymentPresentOnClusterFitWith(targetMember, deployment.Namespace, deployment.Name, + func(deployment *appsv1.Deployment) bool { + return *deployment.Spec.Replicas == updateDeploymentReplicas + }) + }) + }) +}) + +var _ = ginkgo.Describe("[AdvancedCase] ClusterPropagationPolicy testing", func() { ginkgo.Context("Edit ClusterPropagationPolicy ResourceSelectors", func() { ginkgo.When("propagate namespace scope resource", func() { var policy *policyv1alpha1.ClusterPropagationPolicy @@ -552,7 +604,7 @@ var _ = ginkgo.Describe("[AdvancedClusterPropagation] propagation testing", func // ImplicitPriority more than one PP matches the object, we should choose the most suitable one. // Set it to run sequentially to avoid affecting other test cases. -var _ = framework.SerialDescribe("[ImplicitPriority] propagation testing", func() { +var _ = framework.SerialDescribe("[ImplicitPriority] ClusterPropagationPolicy testing", func() { ginkgo.Context("priorityMatchName/priorityMatchLabel/priorityMatchAll propagation testing", func() { var priorityMatchName, priorityMatchLabelSelector, priorityMatchAll string var deploymentNamespace, deploymentName string @@ -652,7 +704,7 @@ var _ = framework.SerialDescribe("[ImplicitPriority] propagation testing", func( // ExplicitPriority more than one CPP matches the object, we should select the one with the highest explicit priority, if the // explicit priority is same, select the one with the highest implicit priority. -var _ = ginkgo.Describe("[ExplicitPriority] propagation testing", func() { +var _ = ginkgo.Describe("[ExplicitPriority] ClusterPropagationPolicy testing", func() { ginkgo.Context("high explicit/low priority/implicit priority ClusterPropagationPolicy propagation testing", func() { var higherPriorityLabelSelector, lowerPriorityMatchName, implicitPriorityMatchName string var deploymentNamespace, deploymentName string @@ -809,7 +861,7 @@ var _ = ginkgo.Describe("[ExplicitPriority] propagation testing", func() { // Delete when delete a clusterPropagationPolicy, and no more clusterPropagationPolicy matches the object, something like // labels should be cleaned. -var _ = ginkgo.Describe("[Delete] clusterPropagation testing", func() { +var _ = ginkgo.Describe("[DeleteCase] ClusterPropagationPolicy testing", func() { ginkgo.Context("delete clusterPropagation and remove the labels and annotations from the resource template and reference binding", func() { var policy *policyv1alpha1.ClusterPropagationPolicy var deployment *appsv1.Deployment diff --git a/test/e2e/propagationpolicy_test.go b/test/e2e/propagationpolicy_test.go index 7c7f7c85e..2927e7e9f 100644 --- a/test/e2e/propagationpolicy_test.go +++ b/test/e2e/propagationpolicy_test.go @@ -53,12 +53,20 @@ import ( ) // BasicPropagation focus on basic propagation functionality testing. -var _ = ginkgo.Describe("[BasicPropagation] propagation testing", func() { +var _ = ginkgo.Describe("[BasicCase] PropagationPolicy testing", func() { + var policyNamespace, policyName string + var policy *policyv1alpha1.PropagationPolicy + + ginkgo.JustBeforeEach(func() { + framework.CreatePropagationPolicy(karmadaClient, policy) + ginkgo.DeferCleanup(func() { + framework.RemovePropagationPolicy(karmadaClient, policy.Namespace, policy.Name) + }) + }) + ginkgo.Context("Deployment propagation testing", func() { - var policyNamespace, policyName string var deploymentNamespace, deploymentName string var deployment *appsv1.Deployment - var policy *policyv1alpha1.PropagationPolicy ginkgo.BeforeEach(func() { policyNamespace = testNamespace @@ -81,10 +89,8 @@ var _ = ginkgo.Describe("[BasicPropagation] propagation testing", func() { }) ginkgo.BeforeEach(func() { - framework.CreatePropagationPolicy(karmadaClient, policy) framework.CreateDeployment(kubeClient, deployment) ginkgo.DeferCleanup(func() { - framework.RemovePropagationPolicy(karmadaClient, policy.Namespace, policy.Name) framework.RemoveDeployment(kubeClient, deployment.Namespace, deployment.Name) framework.WaitDeploymentDisappearOnClusters(framework.ClusterNames(), deployment.Namespace, deployment.Name) }) @@ -114,10 +120,8 @@ var _ = ginkgo.Describe("[BasicPropagation] propagation testing", func() { }) ginkgo.Context("Service propagation testing", func() { - var policyNamespace, policyName string var serviceNamespace, serviceName string var service *corev1.Service - var policy *policyv1alpha1.PropagationPolicy ginkgo.BeforeEach(func() { policyNamespace = testNamespace @@ -140,10 +144,8 @@ var _ = ginkgo.Describe("[BasicPropagation] propagation testing", func() { }) ginkgo.BeforeEach(func() { - framework.CreatePropagationPolicy(karmadaClient, policy) framework.CreateService(kubeClient, service) ginkgo.DeferCleanup(func() { - framework.RemovePropagationPolicy(karmadaClient, policy.Namespace, policy.Name) framework.RemoveService(kubeClient, service.Namespace, service.Name) framework.WaitServiceDisappearOnClusters(framework.ClusterNames(), service.Namespace, service.Name) }) @@ -166,10 +168,8 @@ var _ = ginkgo.Describe("[BasicPropagation] propagation testing", func() { }) ginkgo.Context("Pod propagation testing", func() { - var policyNamespace, policyName string var podNamespace, podName string var pod *corev1.Pod - var policy *policyv1alpha1.PropagationPolicy ginkgo.BeforeEach(func() { policyNamespace = testNamespace policyName = podNamePrefix + rand.String(RandomStrLength) @@ -191,10 +191,8 @@ var _ = ginkgo.Describe("[BasicPropagation] propagation testing", func() { }) ginkgo.BeforeEach(func() { - framework.CreatePropagationPolicy(karmadaClient, policy) framework.CreatePod(kubeClient, pod) ginkgo.DeferCleanup(func() { - framework.RemovePropagationPolicy(karmadaClient, policy.Namespace, policy.Name) framework.RemovePod(kubeClient, pod.Namespace, pod.Name) framework.WaitPodDisappearOnClusters(framework.ClusterNames(), pod.Namespace, pod.Name) }) @@ -226,7 +224,6 @@ var _ = ginkgo.Describe("[BasicPropagation] propagation testing", func() { var crGVR schema.GroupVersionResource var crAPIVersion string var cr *unstructured.Unstructured - var crPolicy *policyv1alpha1.PropagationPolicy ginkgo.BeforeEach(func() { crdGroup = fmt.Sprintf("example-%s.karmada.io", rand.String(RandomStrLength)) @@ -256,7 +253,7 @@ var _ = ginkgo.Describe("[BasicPropagation] propagation testing", func() { crAPIVersion = fmt.Sprintf("%s/%s", crd.Spec.Group, "v1alpha1") cr = testhelper.NewCustomResource(crAPIVersion, crd.Spec.Names.Kind, crNamespace, crName) - crPolicy = testhelper.NewPropagationPolicy(crNamespace, crName, []policyv1alpha1.ResourceSelector{ + policy = testhelper.NewPropagationPolicy(crNamespace, crName, []policyv1alpha1.ResourceSelector{ { APIVersion: crAPIVersion, Kind: crd.Spec.Names.Kind, @@ -272,6 +269,8 @@ var _ = ginkgo.Describe("[BasicPropagation] propagation testing", func() { ginkgo.BeforeEach(func() { framework.CreateClusterPropagationPolicy(karmadaClient, crdPolicy) framework.CreateCRD(dynamicClient, crd) + framework.WaitCRDPresentOnClusters(karmadaClient, framework.ClusterNames(), + fmt.Sprintf("%s/%s", crd.Spec.Group, "v1alpha1"), crd.Spec.Names.Kind) ginkgo.DeferCleanup(func() { framework.RemoveClusterPropagationPolicy(karmadaClient, crdPolicy.Name) framework.RemoveCRD(dynamicClient, crd.Name) @@ -279,15 +278,6 @@ var _ = ginkgo.Describe("[BasicPropagation] propagation testing", func() { }) ginkgo.It("namespaceScoped cr propagation testing", func() { - framework.GetCRD(dynamicClient, crd.Name) - framework.WaitCRDPresentOnClusters(karmadaClient, framework.ClusterNames(), - fmt.Sprintf("%s/%s", crd.Spec.Group, "v1alpha1"), crd.Spec.Names.Kind) - - framework.CreatePropagationPolicy(karmadaClient, crPolicy) - ginkgo.DeferCleanup(func() { - framework.RemovePropagationPolicy(karmadaClient, crPolicy.Namespace, crPolicy.Name) - }) - ginkgo.By(fmt.Sprintf("creating cr(%s/%s)", crNamespace, crName), func() { _, err := dynamicClient.Resource(crGVR).Namespace(crNamespace).Create(context.TODO(), cr, metav1.CreateOptions{}) gomega.Expect(err).ShouldNot(gomega.HaveOccurred()) @@ -383,10 +373,8 @@ var _ = ginkgo.Describe("[BasicPropagation] propagation testing", func() { }) ginkgo.Context("Job propagation testing", func() { - var policyNamespace, policyName string var jobNamespace, jobName string var job *batchv1.Job - var policy *policyv1alpha1.PropagationPolicy ginkgo.BeforeEach(func() { policyNamespace = testNamespace @@ -409,10 +397,8 @@ var _ = ginkgo.Describe("[BasicPropagation] propagation testing", func() { }) ginkgo.BeforeEach(func() { - framework.CreatePropagationPolicy(karmadaClient, policy) framework.CreateJob(kubeClient, job) ginkgo.DeferCleanup(func() { - framework.RemovePropagationPolicy(karmadaClient, policy.Namespace, policy.Name) framework.RemoveJob(kubeClient, job.Namespace, job.Name) framework.WaitJobDisappearOnClusters(framework.ClusterNames(), job.Namespace, job.Name) }) @@ -439,8 +425,6 @@ var _ = ginkgo.Describe("[BasicPropagation] propagation testing", func() { ginkgo.Context("Role propagation testing", func() { var ( roleNamespace, roleName string - policyName string - policy *policyv1alpha1.PropagationPolicy role *rbacv1.Role ) @@ -464,10 +448,8 @@ var _ = ginkgo.Describe("[BasicPropagation] propagation testing", func() { }) ginkgo.BeforeEach(func() { - framework.CreatePropagationPolicy(karmadaClient, policy) framework.CreateRole(kubeClient, role) ginkgo.DeferCleanup(func() { - framework.RemovePropagationPolicy(karmadaClient, policy.Namespace, policy.Name) framework.RemoveRole(kubeClient, role.Namespace, role.Name) framework.WaitRoleDisappearOnClusters(framework.ClusterNames(), role.Namespace, role.Name) }) @@ -484,8 +466,6 @@ var _ = ginkgo.Describe("[BasicPropagation] propagation testing", func() { ginkgo.Context("RoleBinding propagation testing", func() { var ( roleBindingNamespace, roleBindingName string - policyName string - policy *policyv1alpha1.PropagationPolicy roleBinding *rbacv1.RoleBinding ) @@ -509,10 +489,8 @@ var _ = ginkgo.Describe("[BasicPropagation] propagation testing", func() { }) ginkgo.BeforeEach(func() { - framework.CreatePropagationPolicy(karmadaClient, policy) framework.CreateRoleBinding(kubeClient, roleBinding) ginkgo.DeferCleanup(func() { - framework.RemovePropagationPolicy(karmadaClient, policy.Namespace, policy.Name) framework.RemoveRoleBinding(kubeClient, roleBinding.Namespace, roleBinding.Name) framework.WaitRoleBindingDisappearOnClusters(framework.ClusterNames(), roleBinding.Namespace, roleBinding.Name) }) @@ -527,9 +505,67 @@ var _ = ginkgo.Describe("[BasicPropagation] propagation testing", func() { }) }) +var _ = ginkgo.Describe("[CornerCase] PropagationPolicy testing", func() { + var policyNamespace, policyName string + var policy *policyv1alpha1.PropagationPolicy + + ginkgo.JustBeforeEach(func() { + framework.CreatePropagationPolicy(karmadaClient, policy) + ginkgo.DeferCleanup(func() { + framework.RemovePropagationPolicy(karmadaClient, policy.Namespace, policy.Name) + }) + }) + + ginkgo.Context("Propagate Deployment with long pp name (exceed 63 character)", func() { + var deploymentNamespace, deploymentName string + var deployment *appsv1.Deployment + + ginkgo.BeforeEach(func() { + policyNamespace = testNamespace + policyName = deploymentNamePrefix + "-longname-longname-longname-longname-longname-longname-" + rand.String(RandomStrLength) + deploymentNamespace = testNamespace + deploymentName = policyName + + deployment = testhelper.NewDeployment(deploymentNamespace, deploymentName) + policy = testhelper.NewPropagationPolicy(policyNamespace, policyName, []policyv1alpha1.ResourceSelector{ + { + APIVersion: deployment.APIVersion, + Kind: deployment.Kind, + Name: deployment.Name, + }, + }, policyv1alpha1.Placement{ + ClusterAffinity: &policyv1alpha1.ClusterAffinity{ + ClusterNames: framework.ClusterNames(), + }, + }) + }) + + ginkgo.BeforeEach(func() { + framework.CreateDeployment(kubeClient, deployment) + ginkgo.DeferCleanup(func() { + framework.RemoveDeployment(kubeClient, deployment.Namespace, deployment.Name) + framework.WaitDeploymentDisappearOnClusters(framework.ClusterNames(), deployment.Namespace, deployment.Name) + }) + }) + + ginkgo.It("deployment propagation testing", func() { + framework.WaitDeploymentPresentOnClustersFitWith(framework.ClusterNames(), deployment.Namespace, deployment.Name, + func(*appsv1.Deployment) bool { + return true + }) + + framework.UpdateDeploymentReplicas(kubeClient, deployment, updateDeploymentReplicas) + framework.WaitDeploymentPresentOnClustersFitWith(framework.ClusterNames(), deployment.Namespace, deployment.Name, + func(deployment *appsv1.Deployment) bool { + return *deployment.Spec.Replicas == updateDeploymentReplicas + }) + }) + }) +}) + // ImplicitPriority more than one PP matches the object, we should choose the most suitable one. // Set it to run sequentially to avoid affecting other test cases. -var _ = framework.SerialDescribe("[ImplicitPriority] propagation testing", func() { +var _ = framework.SerialDescribe("[ImplicitPriority] PropagationPolicy testing", func() { ginkgo.Context("priorityMatchName propagation testing", func() { var policyNamespace, priorityMatchName, priorityMatchLabelSelector, priorityMatchAll string var deploymentNamespace, deploymentName string @@ -621,7 +657,7 @@ var _ = framework.SerialDescribe("[ImplicitPriority] propagation testing", func( // ExplicitPriority more than one PP matches the object, we should select the one with the highest explicit priority, if the // explicit priority is same, select the one with the highest implicit priority. -var _ = ginkgo.Describe("[ExplicitPriority] propagation testing", func() { +var _ = ginkgo.Describe("[ExplicitPriority] PropagationPolicy testing", func() { ginkgo.Context("high explicit/low priority/implicit priority PropagationPolicy propagation testing", func() { var policyNamespace, higherPriorityLabelSelector, lowerPriorityMatchName, implicitPriorityMatchName string var deploymentNamespace, deploymentName string @@ -781,7 +817,7 @@ var _ = ginkgo.Describe("[ExplicitPriority] propagation testing", func() { }) // AdvancedPropagation focus on some advanced propagation testing. -var _ = ginkgo.Describe("[AdvancedPropagation] propagation testing", func() { +var _ = ginkgo.Describe("[AdvancedCase] PropagationPolicy testing", func() { ginkgo.Context("Edit PropagationPolicy ResourceSelectors", func() { var policy *policyv1alpha1.PropagationPolicy var deployment01, deployment02 *appsv1.Deployment