E2E SSR test add retry mechanism and logs

Signed-off-by: Ming <mqiu@vmware.com>
pull/4594/head
Ming 2022-01-28 14:13:10 +08:00
parent 764143da8d
commit 1d656a0aec
2 changed files with 24 additions and 9 deletions

View File

@ -0,0 +1 @@
E2E SSR test add retry mechanism and logs

View File

@ -73,16 +73,30 @@ func SSRTest() {
fmt.Sprintf("Failed to create an ssr object in %s namespace", VeleroCfg.VeleroNamespace))
ssrListResp := new(v1.ServerStatusRequestList)
By(fmt.Sprintf("Check ssr object in %s namespace", VeleroCfg.VeleroNamespace))
Expect(client.Kubebuilder.List(ctx, ssrListResp, &kbclient.ListOptions{Namespace: VeleroCfg.VeleroNamespace})).To(Succeed(),
fmt.Sprintf("Failed to list ssr object in %s namespace", VeleroCfg.VeleroNamespace))
Expect(len(ssrListResp.Items)).To(BeNumerically("==", 1),
fmt.Sprintf("Count of ssr object in %s namespace is not 1", VeleroCfg.VeleroNamespace))
Expect(ssrListResp.Items[0].Status.ServerVersion).NotTo(BeEmpty(),
fmt.Sprintf("ServerVersion of ssr object in %s namespace should not empty", VeleroCfg.VeleroNamespace))
Expect(ssrListResp.Items[0].Status.Phase == "Processed").To(BeTrue(),
fmt.Sprintf("Phase of ssr object in %s namespace should be Processed", VeleroCfg.VeleroNamespace))
err = waitutil.PollImmediate(5*time.Second, time.Minute,
func() (bool, error) {
if err = client.Kubebuilder.List(ctx, ssrListResp, &kbclient.ListOptions{Namespace: VeleroCfg.VeleroNamespace}); err != nil {
return false, fmt.Errorf("failed to list ssr object in %s namespace with err %v", VeleroCfg.VeleroNamespace, err)
}
if len(ssrListResp.Items) != 1 {
return false, fmt.Errorf("count of ssr object in %s namespace is not 1", VeleroCfg.VeleroNamespace)
}
if ssrListResp.Items[0].Status.ServerVersion == "" {
fmt.Printf("ServerVersion of ssr object in %s namespace should not empty, current response result %v\n", VeleroCfg.VeleroNamespace, ssrListResp)
return false, nil
}
if ssrListResp.Items[0].Status.Phase != "Processed" {
return false, fmt.Errorf("phase of ssr object in %s namespace should be Processed but got phase %s", VeleroCfg.VeleroNamespace, ssrListResp.Items[0].Status.Phase)
}
return true, nil
})
if err == waitutil.ErrWaitTimeout {
fmt.Printf("exceed test case deadline and failed to check ssr object in %s namespace", VeleroCfg.VeleroNamespace)
}
Expect(err).To(Succeed(), fmt.Sprintf("Failed to check ssr object in %s namespace", VeleroCfg.VeleroNamespace))
By(fmt.Sprintf("Check ssr object in %s namespace", testNS))
Expect(client.Kubebuilder.List(ctx, ssrListResp, &kbclient.ListOptions{Namespace: testNS})).To(Succeed(),