diff --git a/test/e2e/deployment.go b/test/e2e/deployment.go index 13a0de3f91b..8642c12f788 100644 --- a/test/e2e/deployment.go +++ b/test/e2e/deployment.go @@ -454,12 +454,14 @@ func testRolloverDeployment(f *Framework) { Logf("error in waiting for pods to come up: %s", err) Expect(err).NotTo(HaveOccurred()) } + deploymentMinReadySeconds := 5 + err = waitForPodsReady(c, ns, podName, deploymentMinReadySeconds) + Expect(err).NotTo(HaveOccurred()) // Create a deployment to delete nginx pods and instead bring up redis-slave pods. deploymentName, deploymentImageName := "redis-deployment", "redis-slave" deploymentReplicas := 4 deploymentImage := "gcr.io/google_samples/gb-redisslave:v1" - deploymentMinReadySeconds := 5 deploymentStrategyType := extensions.RollingUpdateDeploymentStrategyType Logf("Creating deployment %s", deploymentName) newDeployment := newDeployment(deploymentName, deploymentReplicas, deploymentPodLabels, deploymentImageName, deploymentImage, deploymentStrategyType, nil) diff --git a/test/e2e/util.go b/test/e2e/util.go index 92f9272c0ca..506dbe23044 100644 --- a/test/e2e/util.go +++ b/test/e2e/util.go @@ -2144,6 +2144,23 @@ func waitForDeploymentStatus(c clientset.Interface, ns, deploymentName string, d }) } +func waitForPodsReady(c *clientset.Clientset, ns, name string, minReadySeconds int) error { + label := labels.SelectorFromSet(labels.Set(map[string]string{"name": name})) + options := api.ListOptions{LabelSelector: label} + return wait.Poll(poll, 5*time.Minute, func() (bool, error) { + pods, err := c.Pods(ns).List(options) + if err != nil { + return false, nil + } + for _, pod := range pods.Items { + if !deploymentutil.IsPodAvailable(&pod, minReadySeconds) { + return false, nil + } + } + return true, nil + }) +} + // Waits for the deployment to clean up old rcs. func waitForDeploymentOldRSsNum(c *clientset.Clientset, ns, deploymentName string, desiredRSNum int) error { return wait.Poll(poll, 5*time.Minute, func() (bool, error) {