Skip to content

Commit 2ad3afe

Browse files
committed
e2e: Should ignore conflict when updating resources
Signed-off-by: zhzhuang-zju <[email protected]>
1 parent b0cb266 commit 2ad3afe

File tree

7 files changed

+80
-38
lines changed

7 files changed

+80
-38
lines changed

test/e2e/framework/clusterpropagationpolicy.go

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,23 +61,33 @@ func PatchClusterPropagationPolicy(client karmada.Interface, name string, patch
6161
// UpdateClusterPropagationPolicyWithSpec update PropagationSpec with karmada client.
6262
func UpdateClusterPropagationPolicyWithSpec(client karmada.Interface, name string, policySpec policyv1alpha1.PropagationSpec) {
6363
ginkgo.By(fmt.Sprintf("Updating ClusterPropagationPolicy(%s) spec", name), func() {
64-
newPolicy, err := client.PolicyV1alpha1().ClusterPropagationPolicies().Get(context.TODO(), name, metav1.GetOptions{})
65-
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
64+
gomega.Eventually(func(g gomega.Gomega) error {
65+
newPolicy, err := client.PolicyV1alpha1().ClusterPropagationPolicies().Get(context.TODO(), name, metav1.GetOptions{})
66+
g.Expect(err).NotTo(gomega.HaveOccurred())
6667

67-
newPolicy.Spec = policySpec
68-
_, err = client.PolicyV1alpha1().ClusterPropagationPolicies().Update(context.TODO(), newPolicy, metav1.UpdateOptions{})
69-
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
68+
newPolicy.Spec = policySpec
69+
_, err = client.PolicyV1alpha1().ClusterPropagationPolicies().Update(context.TODO(), newPolicy, metav1.UpdateOptions{})
70+
if err != nil && !apierrors.IsConflict(err) {
71+
g.Expect(err).NotTo(gomega.HaveOccurred())
72+
}
73+
return err
74+
}, PollTimeout, PollInterval).ShouldNot(gomega.HaveOccurred())
7075
})
7176
}
7277

7378
// UpdateClusterPropagationPolicy update ClusterPropagationPolicy resourceSelectors with karmada client.
7479
func UpdateClusterPropagationPolicy(client karmada.Interface, name string, resourceSelectors []policyv1alpha1.ResourceSelector) {
7580
ginkgo.By(fmt.Sprintf("Updating ClusterPropagationPolicy(%s)", name), func() {
76-
newPolicy, err := client.PolicyV1alpha1().ClusterPropagationPolicies().Get(context.TODO(), name, metav1.GetOptions{})
77-
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
81+
gomega.Eventually(func(g gomega.Gomega) error {
82+
newPolicy, err := client.PolicyV1alpha1().ClusterPropagationPolicies().Get(context.TODO(), name, metav1.GetOptions{})
83+
g.Expect(err).NotTo(gomega.HaveOccurred())
7884

79-
newPolicy.Spec.ResourceSelectors = resourceSelectors
80-
_, err = client.PolicyV1alpha1().ClusterPropagationPolicies().Update(context.TODO(), newPolicy, metav1.UpdateOptions{})
81-
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
85+
newPolicy.Spec.ResourceSelectors = resourceSelectors
86+
_, err = client.PolicyV1alpha1().ClusterPropagationPolicies().Update(context.TODO(), newPolicy, metav1.UpdateOptions{})
87+
if err != nil && !apierrors.IsConflict(err) {
88+
g.Expect(err).NotTo(gomega.HaveOccurred())
89+
}
90+
return err
91+
}, PollTimeout, PollInterval).ShouldNot(gomega.HaveOccurred())
8292
})
8393
}

test/e2e/framework/cronfederatedhpa.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222

2323
"github.com/onsi/ginkgo/v2"
2424
"github.com/onsi/gomega"
25+
apierrors "k8s.io/apimachinery/pkg/api/errors"
2526
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2627

2728
autoscalingv1alpha1 "github.com/karmada-io/karmada/pkg/apis/autoscaling/v1alpha1"
@@ -47,11 +48,16 @@ func RemoveCronFederatedHPA(client karmada.Interface, namespace, name string) {
4748
// UpdateCronFederatedHPAWithRule update CronFederatedHPA with karmada client.
4849
func UpdateCronFederatedHPAWithRule(client karmada.Interface, namespace, name string, rule []autoscalingv1alpha1.CronFederatedHPARule) {
4950
ginkgo.By(fmt.Sprintf("Updating CronFederatedHPA(%s/%s)", namespace, name), func() {
50-
newCronFederatedHPA, err := client.AutoscalingV1alpha1().CronFederatedHPAs(namespace).Get(context.TODO(), name, metav1.GetOptions{})
51-
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
52-
53-
newCronFederatedHPA.Spec.Rules = rule
54-
_, err = client.AutoscalingV1alpha1().CronFederatedHPAs(namespace).Update(context.TODO(), newCronFederatedHPA, metav1.UpdateOptions{})
55-
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
51+
gomega.Eventually(func(g gomega.Gomega) error {
52+
newCronFederatedHPA, err := client.AutoscalingV1alpha1().CronFederatedHPAs(namespace).Get(context.TODO(), name, metav1.GetOptions{})
53+
g.Expect(err).NotTo(gomega.HaveOccurred())
54+
55+
newCronFederatedHPA.Spec.Rules = rule
56+
_, err = client.AutoscalingV1alpha1().CronFederatedHPAs(namespace).Update(context.TODO(), newCronFederatedHPA, metav1.UpdateOptions{})
57+
if err != nil && !apierrors.IsConflict(err) {
58+
g.Expect(err).NotTo(gomega.HaveOccurred())
59+
}
60+
return err
61+
}, PollTimeout, PollInterval).ShouldNot(gomega.HaveOccurred())
5662
})
5763
}

test/e2e/framework/hpa.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"github.com/onsi/ginkgo/v2"
2424
"github.com/onsi/gomega"
2525
autoscalingv2 "k8s.io/api/autoscaling/v2"
26+
apierrors "k8s.io/apimachinery/pkg/api/errors"
2627
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2728
"k8s.io/client-go/kubernetes"
2829
)
@@ -46,11 +47,16 @@ func RemoveHPA(client kubernetes.Interface, namespace, name string) {
4647
// UpdateHPAWithMinReplicas update HPA with replicas.
4748
func UpdateHPAWithMinReplicas(client kubernetes.Interface, namespace, name string, minReplicas int32) {
4849
ginkgo.By(fmt.Sprintf("Updating HPA(%s/%s)", namespace, name), func() {
49-
newHPA, err := client.AutoscalingV2().HorizontalPodAutoscalers(namespace).Get(context.TODO(), name, metav1.GetOptions{})
50-
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
51-
52-
newHPA.Spec.MinReplicas = &minReplicas
53-
_, err = client.AutoscalingV2().HorizontalPodAutoscalers(namespace).Update(context.TODO(), newHPA, metav1.UpdateOptions{})
54-
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
50+
gomega.Eventually(func(g gomega.Gomega) error {
51+
newHPA, err := client.AutoscalingV2().HorizontalPodAutoscalers(namespace).Get(context.TODO(), name, metav1.GetOptions{})
52+
g.Expect(err).NotTo(gomega.HaveOccurred())
53+
54+
newHPA.Spec.MinReplicas = &minReplicas
55+
_, err = client.AutoscalingV2().HorizontalPodAutoscalers(namespace).Update(context.TODO(), newHPA, metav1.UpdateOptions{})
56+
if err != nil && !apierrors.IsConflict(err) {
57+
g.Expect(err).NotTo(gomega.HaveOccurred())
58+
}
59+
return err
60+
}, PollTimeout, PollInterval).ShouldNot(gomega.HaveOccurred())
5561
})
5662
}

test/e2e/framework/propagationpolicy.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,17 @@ func PatchPropagationPolicy(client karmada.Interface, namespace, name string, pa
7878
// UpdatePropagationPolicyWithSpec update PropagationSpec with karmada client.
7979
func UpdatePropagationPolicyWithSpec(client karmada.Interface, namespace, name string, policySpec policyv1alpha1.PropagationSpec) {
8080
ginkgo.By(fmt.Sprintf("Updating PropagationPolicy(%s/%s) spec", namespace, name), func() {
81-
newPolicy, err := client.PolicyV1alpha1().PropagationPolicies(namespace).Get(context.TODO(), name, metav1.GetOptions{})
82-
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
83-
84-
newPolicy.Spec = policySpec
85-
_, err = client.PolicyV1alpha1().PropagationPolicies(newPolicy.Namespace).Update(context.TODO(), newPolicy, metav1.UpdateOptions{})
86-
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
81+
gomega.Eventually(func(g gomega.Gomega) error {
82+
newPolicy, err := client.PolicyV1alpha1().PropagationPolicies(namespace).Get(context.TODO(), name, metav1.GetOptions{})
83+
g.Expect(err).NotTo(gomega.HaveOccurred())
84+
85+
newPolicy.Spec = policySpec
86+
_, err = client.PolicyV1alpha1().PropagationPolicies(newPolicy.Namespace).Update(context.TODO(), newPolicy, metav1.UpdateOptions{})
87+
if err != nil && !apierrors.IsConflict(err) {
88+
g.Expect(err).NotTo(gomega.HaveOccurred())
89+
}
90+
return err
91+
}, PollTimeout, PollInterval).ShouldNot(gomega.HaveOccurred())
8792
})
8893
}
8994

test/e2e/framework/resource/operator/karmada.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,17 @@ func CreateKarmadaInstance(operatorClient operator.Interface, karmada *operatorv
6767
// UpdateKarmadaInstanceWithSpec updates karmada instance with spec.
6868
func UpdateKarmadaInstanceWithSpec(client operator.Interface, namespace, name string, karmadaSpec operatorv1alpha1.KarmadaSpec) {
6969
ginkgo.By(fmt.Sprintf("Updating Karmada(%s/%s) spec", namespace, name), func() {
70-
karmada, err := client.OperatorV1alpha1().Karmadas(namespace).Get(context.TODO(), name, metav1.GetOptions{})
71-
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
70+
gomega.Eventually(func(g gomega.Gomega) error {
71+
karmada, err := client.OperatorV1alpha1().Karmadas(namespace).Get(context.TODO(), name, metav1.GetOptions{})
72+
g.Expect(err).NotTo(gomega.HaveOccurred())
7273

73-
karmada.Spec = karmadaSpec
74-
_, err = client.OperatorV1alpha1().Karmadas(namespace).Update(context.TODO(), karmada, metav1.UpdateOptions{})
75-
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
74+
karmada.Spec = karmadaSpec
75+
_, err = client.OperatorV1alpha1().Karmadas(namespace).Update(context.TODO(), karmada, metav1.UpdateOptions{})
76+
if err != nil && !apierrors.IsConflict(err) {
77+
g.Expect(err).NotTo(gomega.HaveOccurred())
78+
}
79+
return err
80+
}, framework.PollTimeout, framework.PollInterval).ShouldNot(gomega.HaveOccurred())
7681
})
7782
}
7883

test/e2e/framework/resourceregistry.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222

2323
"github.com/onsi/ginkgo/v2"
2424
"github.com/onsi/gomega"
25+
apierrors "k8s.io/apimachinery/pkg/api/errors"
2526
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2627

2728
searchv1alpha1 "github.com/karmada-io/karmada/pkg/apis/search/v1alpha1"
@@ -44,10 +45,19 @@ func RemoveResourceRegistry(client karmada.Interface, name string) {
4445
})
4546
}
4647

47-
// UpdateResourceRegistry patch ResourceRegistry with karmada client.
48-
func UpdateResourceRegistry(client karmada.Interface, rr *searchv1alpha1.ResourceRegistry) {
48+
// UpdateResourceRegistrySpec patch ResourceRegistry with karmada client.
49+
func UpdateResourceRegistrySpec(client karmada.Interface, rr *searchv1alpha1.ResourceRegistry) {
4950
ginkgo.By(fmt.Sprintf("Update ResourceRegistry(%s)", rr.Name), func() {
50-
_, err := client.SearchV1alpha1().ResourceRegistries().Update(context.TODO(), rr, metav1.UpdateOptions{})
51-
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
51+
gomega.Eventually(func(g gomega.Gomega) error {
52+
latestRR, err := client.SearchV1alpha1().ResourceRegistries().Get(context.TODO(), rr.Name, metav1.GetOptions{})
53+
g.Expect(err).NotTo(gomega.HaveOccurred())
54+
55+
latestRR.Spec = rr.Spec
56+
_, err = client.SearchV1alpha1().ResourceRegistries().Update(context.TODO(), latestRR, metav1.UpdateOptions{})
57+
if err != nil && !apierrors.IsConflict(err) {
58+
g.Expect(err).NotTo(gomega.HaveOccurred())
59+
}
60+
return err
61+
}, PollTimeout, PollInterval).ShouldNot(gomega.HaveOccurred())
5262
})
5363
}

test/e2e/suites/base/search_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ var _ = ginkgo.Describe("[karmada-search] karmada search testing", ginkgo.Ordere
326326
Kind: "ClusterRoleBinding",
327327
},
328328
}
329-
framework.UpdateResourceRegistry(karmadaClient, rr)
329+
framework.UpdateResourceRegistrySpec(karmadaClient, rr)
330330
searchObject(pathAllClusterRoleBindings, existsClusterRoleBindingName, true)
331331
})
332332
})

0 commit comments

Comments
 (0)