Skip to content

Commit 87a1938

Browse files
add e2e for remedy
Signed-off-by: changzhen <[email protected]>
1 parent 26abce8 commit 87a1938

File tree

1 file changed

+101
-16
lines changed

1 file changed

+101
-16
lines changed

test/e2e/remedy_test.go

Lines changed: 101 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,25 +18,27 @@ package e2e
1818

1919
import (
2020
"context"
21+
"fmt"
2122

2223
"github.com/onsi/ginkgo/v2"
2324
"github.com/onsi/gomega"
2425
"k8s.io/apimachinery/pkg/api/meta"
2526
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2627
"k8s.io/apimachinery/pkg/util/rand"
28+
"k8s.io/apimachinery/pkg/util/sets"
2729

2830
clusterv1alpha1 "github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
2931
remedyv1alpha1 "github.com/karmada-io/karmada/pkg/apis/remedy/v1alpha1"
3032
"github.com/karmada-io/karmada/test/e2e/framework"
3133
karmadaresource "github.com/karmada-io/karmada/test/e2e/framework/resource/karmada"
3234
)
3335

34-
var _ = ginkgo.Describe("remedy testing", func() {
35-
ginkgo.Context("remedy.spec.decisionMatches is not empty", func() {
36-
var remedyName string
37-
var remedy *remedyv1alpha1.Remedy
38-
var targetCluster string
36+
var _ = framework.SerialDescribe("remedy testing", func() {
37+
var remedyName string
38+
var remedy *remedyv1alpha1.Remedy
39+
var targetCluster string
3940

41+
ginkgo.Context("remedy.spec.decisionMatches is not empty", func() {
4042
ginkgo.BeforeEach(func() {
4143
targetCluster = framework.ClusterNames()[0]
4244
remedyName = remedyNamePrefix + rand.String(RandomStrLength)
@@ -59,8 +61,8 @@ var _ = ginkgo.Describe("remedy testing", func() {
5961
karmadaresource.CreateRemedy(karmadaClient, remedy)
6062
})
6163

62-
ginkgo.It("The domain name resolution function of the cluster encounters an exception and recover", func() {
63-
ginkgo.By("update cluster ServiceDomainNameResolutionReady condition to false", func() {
64+
ginkgo.It("Cluster domain name resolution function encounters an exception and recover", func() {
65+
ginkgo.By(fmt.Sprintf("update Cluster(%s) %s condition to false", targetCluster, remedyv1alpha1.ServiceDomainNameResolutionReady), func() {
6466
clusterObj, err := karmadaClient.ClusterV1alpha1().Clusters().Get(context.TODO(), targetCluster, metav1.GetOptions{})
6567
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
6668

@@ -74,32 +76,115 @@ var _ = ginkgo.Describe("remedy testing", func() {
7476

7577
ginkgo.By("wait cluster status has TrafficControl RemedyAction", func() {
7678
framework.WaitClusterFitWith(controlPlaneClient, targetCluster, func(cluster *clusterv1alpha1.Cluster) bool {
77-
for _, action := range cluster.Status.RemedyActions {
78-
if action == string(remedyv1alpha1.TrafficControl) {
79-
return true
80-
}
81-
}
82-
return false
79+
actions := sets.NewString(cluster.Status.RemedyActions...)
80+
return actions.Has(string(remedyv1alpha1.TrafficControl))
8381
})
8482
})
8583

86-
ginkgo.By("recover cluster ServiceDomainNameResolutionReady to true", func() {
84+
ginkgo.By(fmt.Sprintf("recover Cluster(%s) %s condition to true", targetCluster, remedyv1alpha1.ServiceDomainNameResolutionReady), func() {
8785
clusterObj, err := karmadaClient.ClusterV1alpha1().Clusters().Get(context.TODO(), targetCluster, metav1.GetOptions{})
8886
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
8987

9088
meta.SetStatusCondition(&clusterObj.Status.Conditions, metav1.Condition{
9189
Type: string(remedyv1alpha1.ServiceDomainNameResolutionReady),
92-
Status: metav1.ConditionFalse,
90+
Status: metav1.ConditionTrue,
9391
})
9492
_, err = karmadaClient.ClusterV1alpha1().Clusters().UpdateStatus(context.TODO(), clusterObj, metav1.UpdateOptions{})
9593
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
9694
})
95+
96+
ginkgo.By("wait cluster status doesn't has TrafficControl RemedyAction", func() {
97+
framework.WaitClusterFitWith(controlPlaneClient, targetCluster, func(cluster *clusterv1alpha1.Cluster) bool {
98+
actions := sets.NewString(cluster.Status.RemedyActions...)
99+
return !actions.Has(string(remedyv1alpha1.TrafficControl))
100+
})
101+
})
102+
103+
ginkgo.By("cleanup: remove Remedy resource", func() {
104+
karmadaresource.RemoveRemedy(karmadaClient, remedyName)
105+
})
97106
})
98107

99-
ginkgo.It("The domain name resolution function of the cluster encounters an exception, then remove the remedy resource", func() {})
108+
ginkgo.It("Cluster domain name resolution function encounters an exception, then remove the remedy resource", func() {
109+
ginkgo.By(fmt.Sprintf("update Cluster(%s) %s condition to false", targetCluster, remedyv1alpha1.ServiceDomainNameResolutionReady), func() {
110+
clusterObj, err := karmadaClient.ClusterV1alpha1().Clusters().Get(context.TODO(), targetCluster, metav1.GetOptions{})
111+
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
112+
113+
meta.SetStatusCondition(&clusterObj.Status.Conditions, metav1.Condition{
114+
Type: string(remedyv1alpha1.ServiceDomainNameResolutionReady),
115+
Status: metav1.ConditionFalse,
116+
})
117+
_, err = karmadaClient.ClusterV1alpha1().Clusters().UpdateStatus(context.TODO(), clusterObj, metav1.UpdateOptions{})
118+
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
119+
})
120+
121+
ginkgo.By("wait cluster status has TrafficControl RemedyAction", func() {
122+
framework.WaitClusterFitWith(controlPlaneClient, targetCluster, func(cluster *clusterv1alpha1.Cluster) bool {
123+
actions := sets.NewString(cluster.Status.RemedyActions...)
124+
return actions.Has(string(remedyv1alpha1.TrafficControl))
125+
})
126+
})
127+
128+
ginkgo.By("remove Remedy resource", func() {
129+
karmadaresource.RemoveRemedy(karmadaClient, remedyName)
130+
})
131+
132+
ginkgo.By("wait cluster status doesn't has TrafficControl RemedyAction", func() {
133+
framework.WaitClusterFitWith(controlPlaneClient, targetCluster, func(cluster *clusterv1alpha1.Cluster) bool {
134+
actions := sets.NewString(cluster.Status.RemedyActions...)
135+
return !actions.Has(string(remedyv1alpha1.TrafficControl))
136+
})
137+
})
138+
139+
ginkgo.By(fmt.Sprintf("cleanup: recover Cluster(%s) %s to true", targetCluster, remedyv1alpha1.ServiceDomainNameResolutionReady), func() {
140+
clusterObj, err := karmadaClient.ClusterV1alpha1().Clusters().Get(context.TODO(), targetCluster, metav1.GetOptions{})
141+
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
142+
143+
meta.SetStatusCondition(&clusterObj.Status.Conditions, metav1.Condition{
144+
Type: string(remedyv1alpha1.ServiceDomainNameResolutionReady),
145+
Status: metav1.ConditionTrue,
146+
})
147+
_, err = karmadaClient.ClusterV1alpha1().Clusters().UpdateStatus(context.TODO(), clusterObj, metav1.UpdateOptions{})
148+
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
149+
})
150+
})
100151
})
101152

102153
ginkgo.Context("test with nil decision matches remedy", func() {
154+
ginkgo.BeforeEach(func() {
155+
targetCluster = framework.ClusterNames()[0]
156+
remedyName = remedyNamePrefix + rand.String(RandomStrLength)
157+
remedy = &remedyv1alpha1.Remedy{
158+
ObjectMeta: metav1.ObjectMeta{Name: remedyName},
159+
Spec: remedyv1alpha1.RemedySpec{
160+
Actions: []remedyv1alpha1.RemedyAction{remedyv1alpha1.TrafficControl},
161+
},
162+
}
163+
164+
})
165+
166+
ginkgo.It("Create an immediately type remedy, then remove it", func() {
167+
ginkgo.By("create Remedy resource", func() {
168+
karmadaresource.CreateRemedy(karmadaClient, remedy)
169+
})
170+
171+
ginkgo.By("wait cluster status has TrafficControl RemedyAction", func() {
172+
framework.WaitClusterFitWith(controlPlaneClient, targetCluster, func(cluster *clusterv1alpha1.Cluster) bool {
173+
actions := sets.NewString(cluster.Status.RemedyActions...)
174+
return actions.Has(string(remedyv1alpha1.TrafficControl))
175+
})
176+
})
177+
178+
ginkgo.By("remove Remedy resource", func() {
179+
karmadaresource.RemoveRemedy(karmadaClient, remedyName)
180+
})
103181

182+
ginkgo.By("wait cluster status doesn't has TrafficControl RemedyAction", func() {
183+
framework.WaitClusterFitWith(controlPlaneClient, targetCluster, func(cluster *clusterv1alpha1.Cluster) bool {
184+
actions := sets.NewString(cluster.Status.RemedyActions...)
185+
return !actions.Has(string(remedyv1alpha1.TrafficControl))
186+
})
187+
})
188+
})
104189
})
105190
})

0 commit comments

Comments
 (0)