Commit ac5edc35 authored by Kubernetes Submit Queue's avatar Kubernetes Submit Queue Committed by GitHub

Merge pull request #36376 from kargakis/add-failure-trap

Automatic merge from submit-queue test: set failure traps for all deployment e2e tests @kubernetes/sig-apps-pr-reviews
parents d26bfda9 e18f6cb5
...@@ -43,6 +43,7 @@ import ( ...@@ -43,6 +43,7 @@ import (
"k8s.io/kubernetes/pkg/kubectl" "k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
testutil "k8s.io/kubernetes/test/utils"
) )
const ( const (
...@@ -60,10 +61,19 @@ var ( ...@@ -60,10 +61,19 @@ var (
) )
var _ = framework.KubeDescribe("Deployment", func() { var _ = framework.KubeDescribe("Deployment", func() {
var ns string
var c clientset.Interface
AfterEach(func() {
failureTrap(c, ns)
})
f := framework.NewDefaultFramework("deployment") f := framework.NewDefaultFramework("deployment")
// TODO: Add failure traps once we have JustAfterEach BeforeEach(func() {
// See https://github.com/onsi/ginkgo/issues/303 c = f.ClientSet
ns = f.Namespace.Name
})
It("deployment reaping should cascade to its replica sets and pods", func() { It("deployment reaping should cascade to its replica sets and pods", func() {
testDeleteDeployment(f) testDeleteDeployment(f)
...@@ -117,6 +127,30 @@ var _ = framework.KubeDescribe("Deployment", func() { ...@@ -117,6 +127,30 @@ var _ = framework.KubeDescribe("Deployment", func() {
// See https://github.com/kubernetes/kubernetes/issues/29229 // See https://github.com/kubernetes/kubernetes/issues/29229
}) })
func failureTrap(c clientset.Interface, ns string) {
deployments, err := c.Extensions().Deployments(ns).List(metav1.ListOptions{LabelSelector: labels.Everything().String()})
if err != nil {
framework.Logf("Could not list Deployments in namespace %q: %v", ns, err)
return
}
for i := range deployments.Items {
d := deployments.Items[i]
framework.Logf(spew.Sprintf("Deployment %q:\n%+v\n", d.Name, d))
_, allOldRSs, newRS, err := deploymentutil.GetAllReplicaSets(&d, c)
if err != nil {
framework.Logf("Could not list ReplicaSets for Deployment %q: %v", d.Name, err)
return
}
testutil.LogReplicaSetsOfDeployment(&d, allOldRSs, newRS, framework.Logf)
rsList := allOldRSs
if newRS != nil {
rsList = append(rsList, newRS)
}
testutil.LogPodsOfDeployment(c, &d, rsList, framework.Logf)
}
}
func intOrStrP(num int) *intstr.IntOrString { func intOrStrP(num int) *intstr.IntOrString {
intstr := intstr.FromInt(num) intstr := intstr.FromInt(num)
return &intstr return &intstr
......
...@@ -30,6 +30,7 @@ go_library( ...@@ -30,6 +30,7 @@ go_library(
"//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/controller/deployment/util:go_default_library", "//pkg/controller/deployment/util:go_default_library",
"//pkg/util/labels:go_default_library", "//pkg/util/labels:go_default_library",
"//vendor/github.com/davecgh/go-spew/spew:go_default_library",
"//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
......
...@@ -20,6 +20,8 @@ import ( ...@@ -20,6 +20,8 @@ import (
"fmt" "fmt"
"time" "time"
"github.com/davecgh/go-spew/spew"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/util/wait"
"k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/api/v1"
...@@ -34,15 +36,15 @@ type LogfFn func(format string, args ...interface{}) ...@@ -34,15 +36,15 @@ type LogfFn func(format string, args ...interface{})
func LogReplicaSetsOfDeployment(deployment *extensions.Deployment, allOldRSs []*extensions.ReplicaSet, newRS *extensions.ReplicaSet, logf LogfFn) { func LogReplicaSetsOfDeployment(deployment *extensions.Deployment, allOldRSs []*extensions.ReplicaSet, newRS *extensions.ReplicaSet, logf LogfFn) {
if newRS != nil { if newRS != nil {
logf("New ReplicaSet of Deployment %s:\n%+v", deployment.Name, *newRS) logf(spew.Sprintf("New ReplicaSet %q of Deployment %q:\n%+v", newRS.Name, deployment.Name, *newRS))
} else { } else {
logf("New ReplicaSet of Deployment %s is nil.", deployment.Name) logf("New ReplicaSet of Deployment %q is nil.", deployment.Name)
} }
if len(allOldRSs) > 0 { if len(allOldRSs) > 0 {
logf("All old ReplicaSets of Deployment %s:", deployment.Name) logf("All old ReplicaSets of Deployment %q:", deployment.Name)
} }
for i := range allOldRSs { for i := range allOldRSs {
logf("%+v", *allOldRSs[i]) logf(spew.Sprintf("%+v", *allOldRSs[i]))
} }
} }
...@@ -53,9 +55,8 @@ func LogPodsOfDeployment(c clientset.Interface, deployment *extensions.Deploymen ...@@ -53,9 +55,8 @@ func LogPodsOfDeployment(c clientset.Interface, deployment *extensions.Deploymen
} }
podList, err := deploymentutil.ListPods(deployment, rsList, podListFunc) podList, err := deploymentutil.ListPods(deployment, rsList, podListFunc)
if err != nil { if err != nil {
logf("Failed to list Pods of Deployment %s: %v", deployment.Name, err) logf("Failed to list Pods of Deployment %q: %v", deployment.Name, err)
return return
} }
for _, pod := range podList.Items { for _, pod := range podList.Items {
...@@ -63,7 +64,7 @@ func LogPodsOfDeployment(c clientset.Interface, deployment *extensions.Deploymen ...@@ -63,7 +64,7 @@ func LogPodsOfDeployment(c clientset.Interface, deployment *extensions.Deploymen
if podutil.IsPodAvailable(&pod, minReadySeconds, metav1.Now()) { if podutil.IsPodAvailable(&pod, minReadySeconds, metav1.Now()) {
availability = "available" availability = "available"
} }
logf("Pod %s is %s:\n%+v", pod.Name, availability, pod) logf(spew.Sprintf("Pod %q is %s:\n%+v", pod.Name, availability, pod))
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment