[e2e] add wait for proxy ready

Signed-off-by: yingjinhui <yingjinhui@didiglobal.com>
This commit is contained in:
yingjinhui 2022-09-08 18:11:25 +08:00
parent 665af6916a
commit 93a1448556
1 changed files with 43 additions and 25 deletions

View File

@ -346,6 +346,7 @@ var _ = ginkgo.Describe("[karmada-search] karmada search testing", ginkgo.Ordere
ginkgo.Describe("karmada proxy testing", ginkgo.Ordered, func() {
var (
pollTimeout, pollInterval = time.Second * 10, time.Second
m1Client, m2Client, proxyClient kubernetes.Interface
m1Dynamic, m2Dynamic dynamic.Interface
nodeGVR = corev1.SchemeGroupVersion.WithResource("nodes")
@ -439,7 +440,7 @@ var _ = ginkgo.Describe("[karmada-search] karmada search testing", ginkgo.Ordere
list, err := proxyClient.CoreV1().Pods(testNamespace).List(context.TODO(), metav1.ListOptions{})
g.Expect(err).ShouldNot(gomega.HaveOccurred())
g.Expect(list.Items).Should(gomega.BeEmpty())
}, time.Second*10).Should(gomega.Succeed())
}, pollTimeout, pollInterval).Should(gomega.Succeed())
})
ginkgo.By("should not list nodes", func() {
@ -447,7 +448,7 @@ var _ = ginkgo.Describe("[karmada-search] karmada search testing", ginkgo.Ordere
list, err := proxyClient.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
g.Expect(err).ShouldNot(gomega.HaveOccurred())
g.Expect(list.Items).Should(gomega.BeEmpty())
}, time.Second*10).Should(gomega.Succeed())
}, pollTimeout, pollInterval).Should(gomega.Succeed())
})
})
@ -459,7 +460,7 @@ var _ = ginkgo.Describe("[karmada-search] karmada search testing", ginkgo.Ordere
list, err := proxyClient.CoreV1().Pods(testNamespace).List(context.TODO(), metav1.ListOptions{})
g.Expect(err).ShouldNot(gomega.HaveOccurred())
g.Expect(list.Items).Should(gomega.BeEmpty())
}, time.Second*10).Should(gomega.Succeed())
}, pollTimeout, pollInterval).Should(gomega.Succeed())
})
ginkgo.By("should list nodes", func() {
@ -467,7 +468,7 @@ var _ = ginkgo.Describe("[karmada-search] karmada search testing", ginkgo.Ordere
list, err := proxyClient.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
g.Expect(err).ShouldNot(gomega.HaveOccurred())
g.Expect(list.Items).ShouldNot(gomega.BeEmpty())
}, time.Second*10).Should(gomega.Succeed())
}, pollTimeout, pollInterval).Should(gomega.Succeed())
})
})
@ -479,7 +480,7 @@ var _ = ginkgo.Describe("[karmada-search] karmada search testing", ginkgo.Ordere
list, err := proxyClient.CoreV1().Pods(testNamespace).List(context.TODO(), metav1.ListOptions{})
g.Expect(err).ShouldNot(gomega.HaveOccurred())
g.Expect(list.Items).ShouldNot(gomega.BeEmpty())
}, time.Second*10).Should(gomega.Succeed())
}, pollTimeout, pollInterval).Should(gomega.Succeed())
})
ginkgo.By("should list nodes", func() {
@ -487,7 +488,7 @@ var _ = ginkgo.Describe("[karmada-search] karmada search testing", ginkgo.Ordere
list, err := proxyClient.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
g.Expect(err).ShouldNot(gomega.HaveOccurred())
g.Expect(list.Items).ShouldNot(gomega.BeEmpty())
}, time.Second*10).Should(gomega.Succeed())
}, pollTimeout, pollInterval).Should(gomega.Succeed())
})
})
@ -500,7 +501,7 @@ var _ = ginkgo.Describe("[karmada-search] karmada search testing", ginkgo.Ordere
list, err := proxyClient.CoreV1().Pods(testNamespace).List(context.TODO(), metav1.ListOptions{})
g.Expect(err).ShouldNot(gomega.HaveOccurred())
g.Expect(list.Items).Should(gomega.BeEmpty())
}, time.Second*10).Should(gomega.Succeed())
}, pollTimeout, pollInterval).Should(gomega.Succeed())
})
ginkgo.By("should not list nodes", func() {
@ -508,7 +509,7 @@ var _ = ginkgo.Describe("[karmada-search] karmada search testing", ginkgo.Ordere
list, err := proxyClient.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
g.Expect(err).ShouldNot(gomega.HaveOccurred())
g.Expect(list.Items).Should(gomega.BeEmpty())
}, time.Second*10).Should(gomega.Succeed())
}, pollTimeout, pollInterval).Should(gomega.Succeed())
})
})
})
@ -552,8 +553,13 @@ var _ = ginkgo.Describe("[karmada-search] karmada search testing", ginkgo.Ordere
ginkgo.It("could get node", func() {
testObject := framework.GetAnyResourceOrFail(m1Dynamic.Resource(nodeGVR))
get, err := proxyClient.CoreV1().Nodes().Get(context.TODO(), testObject.GetName(), metav1.GetOptions{})
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
var get *corev1.Node
gomega.Eventually(func(g gomega.Gomega) {
var err error
get, err = proxyClient.CoreV1().Nodes().Get(context.TODO(), testObject.GetName(), metav1.GetOptions{})
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
}, pollTimeout, pollInterval).Should(gomega.Succeed())
gomega.Expect(get.Annotations[clusterv1alpha1.CacheSourceAnnotationKey]).Should(gomega.Equal(member1))
})
@ -575,7 +581,7 @@ var _ = ginkgo.Describe("[karmada-search] karmada search testing", ginkgo.Ordere
fromProxy.Insert(item.Name)
}
g.Expect(fromProxy).Should(gomega.Equal(fromMembers))
}, time.Second*10).Should(gomega.Succeed())
}, pollTimeout, pollInterval).Should(gomega.Succeed())
// assert cache source annotation
groupM1, groupM2 := sets.NewString(), sets.NewString()
@ -599,19 +605,23 @@ var _ = ginkgo.Describe("[karmada-search] karmada search testing", ginkgo.Ordere
fromM2, err := m2Client.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
total := len(fromM1.Items) + len(fromM2.Items)
ginkgo.By(fmt.Sprintf("list %v nodes from member2", len(fromM2.Items)))
list1, err := proxyClient.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{Limit: 1})
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
gomega.Expect(list1.Items).Should(gomega.HaveLen(1))
if list1.Continue == "" {
ginkgo.By("No more nodes remains")
gomega.Expect(list1.Items).Should(gomega.HaveLen(total))
ginkgo.Skip("No more nodes remains")
total := len(fromM1.Items) + len(fromM2.Items)
if total < 2 {
ginkgo.Skip(fmt.Sprintf("Total nodes %v, less than 2", total))
}
var list1 *corev1.NodeList
gomega.Eventually(func(g gomega.Gomega) {
list1, err = proxyClient.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{Limit: 1})
g.Expect(err).ShouldNot(gomega.HaveOccurred())
g.Expect(list1.Items).ShouldNot(gomega.BeEmpty())
}, pollTimeout, pollInterval).Should(gomega.Succeed())
gomega.Expect(list1.Items).Should(gomega.HaveLen(1))
gomega.Expect(list1.Continue).ShouldNot(gomega.BeEmpty())
list2, err := proxyClient.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{
Limit: 999999999999,
Continue: list1.Continue,
@ -621,8 +631,13 @@ var _ = ginkgo.Describe("[karmada-search] karmada search testing", ginkgo.Ordere
})
ginkgo.It("could list & watch nodes", func() {
listObj, err := proxyClient.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
var listObj *corev1.NodeList
gomega.Eventually(func(g gomega.Gomega) {
var err error
listObj, err = proxyClient.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
g.Expect(err).ShouldNot(gomega.HaveOccurred())
g.Expect(listObj.Items).ShouldNot(gomega.BeEmpty())
}, pollTimeout, pollInterval).Should(gomega.Succeed())
watcher, err := proxyClient.CoreV1().Nodes().Watch(context.TODO(), metav1.ListOptions{ResourceVersion: listObj.ResourceVersion})
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
@ -657,8 +672,11 @@ var _ = ginkgo.Describe("[karmada-search] karmada search testing", ginkgo.Ordere
anno := "proxy-ann-" + rand.String(RandomStrLength)
data := []byte(`{"metadata": {"annotations": {"` + anno + `": "true"}}}`)
_, err := proxyClient.CoreV1().Nodes().Patch(context.TODO(), testObject.GetName(), types.StrategicMergePatchType, data, metav1.PatchOptions{})
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
gomega.Eventually(func() error {
_, err := proxyClient.CoreV1().Nodes().Patch(context.TODO(), testObject.GetName(), types.StrategicMergePatchType, data, metav1.PatchOptions{})
return err
}, pollTimeout, pollInterval).Should(gomega.Succeed())
defer func() {
deleteAnnotationAfterTest(m1Client, testObject.GetName(), anno)
}()
@ -680,7 +698,7 @@ var _ = ginkgo.Describe("[karmada-search] karmada search testing", ginkgo.Ordere
metav1.SetMetaDataAnnotation(&node.ObjectMeta, anno, "true")
_, err = proxyClient.CoreV1().Nodes().Update(context.TODO(), node, metav1.UpdateOptions{})
g.Expect(err).ShouldNot(gomega.HaveOccurred())
}, time.Second*10, 0).Should(gomega.Succeed())
}, pollTimeout, pollInterval).Should(gomega.Succeed())
defer func() {
deleteAnnotationAfterTest(m2Client, testObject.GetName(), anno)
}()