From ecce9492cc48bd98479c9fb49cb4c3c55913d0af Mon Sep 17 00:00:00 2001 From: Janet Kuo Date: Mon, 22 Feb 2016 18:36:39 -0800 Subject: [PATCH] Wait for pods to become available before rolling over in deployment e2e test --- test/e2e/deployment.go | 4 +++- test/e2e/util.go | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/test/e2e/deployment.go b/test/e2e/deployment.go index 8c149b97a45..df4eb60b1e6 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 75012ebf77d..10d16a0d17d 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) {