Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make deployments minreadyseconds test more tolerant to infra #16061

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion test/extended/deployments/deployments.go
Original file line number Diff line number Diff line change
Expand Up @@ -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())

Expand All @@ -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) {
Expand All @@ -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
Expand All @@ -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))
Expand Down
13 changes: 13 additions & 0 deletions test/extended/deployments/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down