diff --git a/test/extended/deployments/deployments.go b/test/extended/deployments/deployments.go index 5b75d47e7dfe..a125b679ed41 100644 --- a/test/extended/deployments/deployments.go +++ b/test/extended/deployments/deployments.go @@ -907,6 +907,8 @@ var _ = g.Describe("deploymentconfigs", func() { // FIXME: remove when tests are migrated to the new client // (the old one incorrectly translates nil into an empty array) dc.Spec.Triggers = append(dc.Spec.Triggers, deployapi.DeploymentTriggerPolicy{Type: deployapi.DeploymentTriggerOnConfigChange}) + // This is the last place we can safely say that the time was taken before replicas became ready + startTime := time.Now() dc, err = oc.Client().DeploymentConfigs(namespace).Create(dc) o.Expect(err).NotTo(o.HaveOccurred()) @@ -927,6 +929,8 @@ var _ = g.Describe("deploymentconfigs", func() { }) o.Expect(err).NotTo(o.HaveOccurred()) o.Expect(rc1.Status.AvailableReplicas).To(o.BeZero()) + // We need to log here to have a timestamp to compare with master logs if something goes wrong + e2e.Logf("All replicas are ready.") g.By("verifying that the deployment is still running") if deployutil.IsTerminatedDeployment(rc1) { @@ -935,7 +939,7 @@ var _ = g.Describe("deploymentconfigs", func() { g.By("waiting for the deployment to finish") rc1, err = waitForRCModification(oc, namespace, rc1.Name, - deploymentChangeTimeout+time.Duration(dc.Spec.MinReadySeconds)*time.Second, + deploymentRunTimeout+time.Duration(dc.Spec.MinReadySeconds)*time.Second, rc1.GetResourceVersion(), func(rc *kapiv1.ReplicationController) (bool, error) { if rc.Status.AvailableReplicas == dc.Spec.Replicas { return true, nil @@ -947,7 +951,11 @@ var _ = g.Describe("deploymentconfigs", func() { } return false, nil }) + // We need to log here to have a timestamp to compare with master logs if something goes wrong + e2e.Logf("Finished waiting for deployment.") o.Expect(err).NotTo(o.HaveOccurred()) + o.Expect(time.Since(startTime)).To(o.BeNumerically(">=", time.Duration(dc.Spec.MinReadySeconds)*time.Second), + "Deployment shall not finish before MinReadySeconds elapse.") o.Expect(rc1.Status.AvailableReplicas).To(o.Equal(dc.Spec.Replicas)) // Deployment status can't be updated yet but should be right after o.Expect(deployutil.DeploymentStatusFor(rc1)).To(o.Equal(deployapi.DeploymentStatusRunning)) diff --git a/test/extended/deployments/util.go b/test/extended/deployments/util.go index d93d6aae8ca6..1716a498945f 100644 --- a/test/extended/deployments/util.go +++ b/test/extended/deployments/util.go @@ -522,6 +522,19 @@ func failureTrap(oc *exutil.CLI, name string, failed bool) { e2e.Logf("--- pod %s logs\n%s---\n", pod.Name, out) } } + + for _, pod := range pods { + if _, ok := pod.Labels[deployapi.DeployerPodForDeploymentLabel]; ok { + continue + } + + out, err := oc.Run("get").Args("pod/"+pod.Name, "-o", "yaml").Output() + if err != nil { + e2e.Logf("Error getting pod %s: %v", pod.Name, err) + return + } + e2e.Logf("\n%s\n", out) + } } func failureTrapForDetachedRCs(oc *exutil.CLI, dcName string, failed bool) {