From 5c33898843bc0b374178d8694cb504221a0c78aa Mon Sep 17 00:00:00 2001 From: Maciej Szulik Date: Wed, 19 Sep 2018 11:03:11 +0200 Subject: [PATCH] Wait for events instead of just checking them in cronjob e2e --- test/e2e/apps/cronjob.go | 42 +++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/test/e2e/apps/cronjob.go b/test/e2e/apps/cronjob.go index e7df3761cb9..31c541711fe 100644 --- a/test/e2e/apps/cronjob.go +++ b/test/e2e/apps/cronjob.go @@ -180,8 +180,8 @@ var _ = SIGDescribe("CronJob", func() { Expect(err).NotTo(HaveOccurred()) By("Ensuring no unexpected event has happened") - err = checkNoEventWithReason(f.ClientSet, f.Namespace.Name, cronJob.Name, []string{"MissingJob", "UnexpectedJob"}) - Expect(err).NotTo(HaveOccurred()) + err = waitForEventWithReason(f.ClientSet, f.Namespace.Name, cronJob.Name, []string{"MissingJob", "UnexpectedJob"}) + Expect(err).To(HaveOccurred()) By("Removing cronjob") err = deleteCronJob(f.ClientSet, f.Namespace.Name, cronJob.Name) @@ -219,8 +219,8 @@ var _ = SIGDescribe("CronJob", func() { Expect(err).NotTo(HaveOccurred()) By("Ensuring MissingJob event has occurred") - err = checkNoEventWithReason(f.ClientSet, f.Namespace.Name, cronJob.Name, []string{"MissingJob"}) - Expect(err).To(HaveOccurred()) + err = waitForEventWithReason(f.ClientSet, f.Namespace.Name, cronJob.Name, []string{"MissingJob"}) + Expect(err).NotTo(HaveOccurred()) By("Removing cronjob") err = deleteCronJob(f.ClientSet, f.Namespace.Name, cronJob.Name) @@ -426,24 +426,26 @@ func waitForAnyFinishedJob(c clientset.Interface, ns string) error { }) } -// checkNoEventWithReason checks no events with a reason within a list has occurred -func checkNoEventWithReason(c clientset.Interface, ns, cronJobName string, reasons []string) error { - sj, err := c.BatchV1beta1().CronJobs(ns).Get(cronJobName, metav1.GetOptions{}) - if err != nil { - return fmt.Errorf("Error in getting cronjob %s/%s: %v", ns, cronJobName, err) - } - events, err := c.CoreV1().Events(ns).Search(legacyscheme.Scheme, sj) - if err != nil { - return fmt.Errorf("Error in listing events: %s", err) - } - for _, e := range events.Items { - for _, reason := range reasons { - if e.Reason == reason { - return fmt.Errorf("Found event with reason %s: %#v", reason, e) +// waitForEventWithReason waits for events with a reason within a list has occurred +func waitForEventWithReason(c clientset.Interface, ns, cronJobName string, reasons []string) error { + return wait.Poll(framework.Poll, 30*time.Second, func() (bool, error) { + sj, err := c.BatchV1beta1().CronJobs(ns).Get(cronJobName, metav1.GetOptions{}) + if err != nil { + return false, err + } + events, err := c.CoreV1().Events(ns).Search(legacyscheme.Scheme, sj) + if err != nil { + return false, err + } + for _, e := range events.Items { + for _, reason := range reasons { + if e.Reason == reason { + return true, nil + } } } - } - return nil + return false, nil + }) } // filterNotDeletedJobs returns the job list without any jobs that are pending