diff --git a/test/e2e/deployment.go b/test/e2e/deployment.go index 984c125447d..67ab373aabc 100644 --- a/test/e2e/deployment.go +++ b/test/e2e/deployment.go @@ -255,6 +255,7 @@ func testRollingUpdateDeploymentEvents(f *Framework) { // Verify that the pods were scaled up and down as expected. We use events to verify that. deployment, err := c.Deployments(ns).Get(deploymentName) Expect(err).NotTo(HaveOccurred()) + waitForEvents(c, ns, deployment, 2) events, err := c.Events(ns).Search(deployment) if err != nil { Logf("error in listing events: %s", err) diff --git a/test/e2e/util.go b/test/e2e/util.go index fac2dd90322..625314bae95 100644 --- a/test/e2e/util.go +++ b/test/e2e/util.go @@ -1652,6 +1652,25 @@ func waitForDeploymentStatus(c *client.Client, ns, deploymentName string, desire }) } +// Waits for the number of events on the given object to reach a desired count. +func waitForEvents(c *client.Client, ns string, objOrRef runtime.Object, desiredEventsCount int) error { + return wait.Poll(poll, 5*time.Minute, func() (bool, error) { + events, err := c.Events(ns).Search(objOrRef) + if err != nil { + return false, fmt.Errorf("error in listing events: %s", err) + } + eventsCount := len(events.Items) + if eventsCount == desiredEventsCount { + return true, nil + } + if eventsCount < desiredEventsCount { + return false, nil + } + // Number of events has exceeded the desired count. + return false, fmt.Errorf("number of events has exceeded the desired count, eventsCount: %d, desiredCount: %d", eventsCount, desiredEventsCount) + }) +} + // Convenient wrapper around listing nodes supporting retries. func listNodes(c *client.Client, label labels.Selector, field fields.Selector) (*api.NodeList, error) { var nodes *api.NodeList