Merge pull request #68820 from soltysh/cronjob_e2e_flake

Wait for events instead of just checking them in cronjob e2e
This commit is contained in:
k8s-ci-robot 2018-09-26 18:10:56 -07:00 committed by GitHub
commit 48689a9e3a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -180,8 +180,8 @@ var _ = SIGDescribe("CronJob", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
By("Ensuring no unexpected event has happened") By("Ensuring no unexpected event has happened")
err = checkNoEventWithReason(f.ClientSet, f.Namespace.Name, cronJob.Name, []string{"MissingJob", "UnexpectedJob"}) err = waitForEventWithReason(f.ClientSet, f.Namespace.Name, cronJob.Name, []string{"MissingJob", "UnexpectedJob"})
Expect(err).NotTo(HaveOccurred()) Expect(err).To(HaveOccurred())
By("Removing cronjob") By("Removing cronjob")
err = deleteCronJob(f.ClientSet, f.Namespace.Name, cronJob.Name) err = deleteCronJob(f.ClientSet, f.Namespace.Name, cronJob.Name)
@ -219,8 +219,8 @@ var _ = SIGDescribe("CronJob", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
By("Ensuring MissingJob event has occurred") By("Ensuring MissingJob event has occurred")
err = checkNoEventWithReason(f.ClientSet, f.Namespace.Name, cronJob.Name, []string{"MissingJob"}) err = waitForEventWithReason(f.ClientSet, f.Namespace.Name, cronJob.Name, []string{"MissingJob"})
Expect(err).To(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
By("Removing cronjob") By("Removing cronjob")
err = deleteCronJob(f.ClientSet, f.Namespace.Name, cronJob.Name) 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 // waitForEventWithReason waits for events with a reason within a list has occurred
func checkNoEventWithReason(c clientset.Interface, ns, cronJobName string, reasons []string) error { func waitForEventWithReason(c clientset.Interface, ns, cronJobName string, reasons []string) error {
sj, err := c.BatchV1beta1().CronJobs(ns).Get(cronJobName, metav1.GetOptions{}) return wait.Poll(framework.Poll, 30*time.Second, func() (bool, error) {
if err != nil { sj, err := c.BatchV1beta1().CronJobs(ns).Get(cronJobName, metav1.GetOptions{})
return fmt.Errorf("Error in getting cronjob %s/%s: %v", ns, cronJobName, err) if err != nil {
} return false, err
events, err := c.CoreV1().Events(ns).Search(legacyscheme.Scheme, sj) }
if err != nil { events, err := c.CoreV1().Events(ns).Search(legacyscheme.Scheme, sj)
return fmt.Errorf("Error in listing events: %s", err) if err != nil {
} return false, err
for _, e := range events.Items { }
for _, reason := range reasons { for _, e := range events.Items {
if e.Reason == reason { for _, reason := range reasons {
return fmt.Errorf("Found event with reason %s: %#v", reason, e) if e.Reason == reason {
return true, nil
}
} }
} }
} return false, nil
return nil })
} }
// filterNotDeletedJobs returns the job list without any jobs that are pending // filterNotDeletedJobs returns the job list without any jobs that are pending