From 447e95629380a3a8fb2b032c705ad3bffb501b5f Mon Sep 17 00:00:00 2001 From: Yang Le Date: Tue, 27 Jul 2021 11:05:48 +0800 Subject: [PATCH] add one more e2e test case Signed-off-by: Yang Le --- deploy/hub/clusterrole.yaml | 7 ++-- test/e2e/placement_test.go | 61 +++++++++++++++++++++++++++-------- test/integration/util/util.go | 5 +++ 3 files changed, 58 insertions(+), 15 deletions(-) diff --git a/deploy/hub/clusterrole.yaml b/deploy/hub/clusterrole.yaml index ecc26bc75..1b0d9aa17 100644 --- a/deploy/hub/clusterrole.yaml +++ b/deploy/hub/clusterrole.yaml @@ -17,8 +17,11 @@ rules: verbs: ["get", "list", "watch"] # Allow controller to manage placements/placementdecisions - apiGroups: ["cluster.open-cluster-management.io"] - resources: ["placements", "placementdecisions"] - verbs: ["get", "list", "watch", "create", "update", "patch"] + resources: ["placements"] + verbs: ["get", "list", "watch"] +- apiGroups: ["cluster.open-cluster-management.io"] + resources: ["placementdecisions"] + verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] - apiGroups: ["cluster.open-cluster-management.io"] resources: ["placements/status", "placementdecisions/status"] verbs: ["update", "patch"] diff --git a/test/e2e/placement_test.go b/test/e2e/placement_test.go index fc79ad3c2..bf1bd69e7 100644 --- a/test/e2e/placement_test.go +++ b/test/e2e/placement_test.go @@ -78,9 +78,6 @@ var _ = ginkgo.Describe("Placement", func() { if err != nil { return false } - if len(pdl.Items) == 0 { - return false - } actualNOD := 0 for _, pd := range pdl.Items { actualNOD += len(pd.Status.Decisions) @@ -96,19 +93,15 @@ var _ = ginkgo.Describe("Placement", func() { if err != nil { return false } - if satisfied && !util.HasCondition( - placement.Status.Conditions, - clusterapiv1alpha1.PlacementConditionSatisfied, - "AllDecisionsScheduled", - metav1.ConditionTrue, - ) { - return false + status := metav1.ConditionFalse + if satisfied { + status = metav1.ConditionTrue } - if !satisfied && !util.HasCondition( + if !util.HasCondition( placement.Status.Conditions, clusterapiv1alpha1.PlacementConditionSatisfied, - "NotAllDecisionsScheduled", - metav1.ConditionFalse, + "", + status, ) { return false } @@ -213,6 +206,48 @@ var _ = ginkgo.Describe("Placement", func() { return len(placementDecisions.Items) == 0 }, eventuallyTimeout*5, eventuallyInterval*5).Should(gomega.BeTrue()) }) + + ginkgo.It("Should delete placementdecision successfully", func() { + assertBindingClusterSet(clusterSet1Name) + assertCreatingClusters(clusterSet1Name, 1) + assertCreatingPlacement(placementName, nil, 1) + + ginkgo.By("Add cluster predicate") + placement, err := clusterClient.ClusterV1alpha1().Placements(namespace).Get(context.Background(), placementName, metav1.GetOptions{}) + gomega.Expect(err).ToNot(gomega.HaveOccurred()) + placement.Spec.Predicates = []clusterapiv1alpha1.ClusterPredicate{ + { + RequiredClusterSelector: clusterapiv1alpha1.ClusterSelector{ + LabelSelector: metav1.LabelSelector{ + MatchLabels: map[string]string{ + "a": "b", + }, + }, + }, + }, + } + placement, err = clusterClient.ClusterV1alpha1().Placements(namespace).Update(context.Background(), placement, metav1.UpdateOptions{}) + gomega.Expect(err).ToNot(gomega.HaveOccurred()) + + assertNumberOfDecisions(placementName, 0) + assertPlacementStatus(placementName, 0, false) + + ginkgo.By("Check if placementdecisions are deleted as well") + gomega.Eventually(func() bool { + placementDecisions, err := clusterClient.ClusterV1alpha1().PlacementDecisions(namespace).List(context.TODO(), metav1.ListOptions{ + LabelSelector: fmt.Sprintf("%s=%s", placementLabel, placementName), + }) + if err != nil { + return false + } + + return len(placementDecisions.Items) == 0 + }, eventuallyTimeout*5, eventuallyInterval*5).Should(gomega.BeTrue()) + + ginkgo.By("Delete placement") + err = clusterClient.ClusterV1alpha1().Placements(namespace).Delete(context.TODO(), placementName, metav1.DeleteOptions{}) + gomega.Expect(err).ToNot(gomega.HaveOccurred()) + }) }) func noc(n int) *int32 { diff --git a/test/integration/util/util.go b/test/integration/util/util.go index ee880ebd2..a06dadbe7 100644 --- a/test/integration/util/util.go +++ b/test/integration/util/util.go @@ -60,6 +60,11 @@ func HasCondition(conditions []metav1.Condition, expectedType, expectedReason st return false } + // skip checking reason + if len(expectedReason) == 0 { + return true + } + if condition.Reason != expectedReason { return false }