From 1459a1523f04a45d14f2e2cf7302448c2236e2dc Mon Sep 17 00:00:00 2001 From: gmarek Date: Thu, 24 Sep 2015 10:02:07 +0200 Subject: [PATCH] Add an option to modify timeout for namespace duration in e2e Framework --- test/e2e/density.go | 2 +- test/e2e/docker_containers.go | 4 +++- test/e2e/examples.go | 4 ++-- test/e2e/framework.go | 11 ++++++++--- test/e2e/host_path.go | 3 ++- test/e2e/kubectl.go | 2 +- test/e2e/load.go | 2 +- test/e2e/persistent_volumes.go | 2 +- test/e2e/resize_nodes.go | 2 +- test/e2e/scheduler_predicates.go | 2 +- test/e2e/service.go | 2 +- test/e2e/util.go | 4 ++-- test/e2e/volumes.go | 2 +- 13 files changed, 25 insertions(+), 17 deletions(-) diff --git a/test/e2e/density.go b/test/e2e/density.go index bdbb64b5b67..524a51ba2fe 100644 --- a/test/e2e/density.go +++ b/test/e2e/density.go @@ -82,7 +82,7 @@ var _ = Describe("Density", func() { var additionalPodsPrefix string var ns string var uuid string - framework := Framework{BaseName: "density"} + framework := Framework{BaseName: "density", NamespaceDeletionTimeout: time.Hour} BeforeEach(func() { framework.beforeEach() diff --git a/test/e2e/docker_containers.go b/test/e2e/docker_containers.go index cae777a9842..7c349c9787a 100644 --- a/test/e2e/docker_containers.go +++ b/test/e2e/docker_containers.go @@ -17,6 +17,8 @@ limitations under the License. package e2e import ( + "time" + "k8s.io/kubernetes/pkg/api" client "k8s.io/kubernetes/pkg/client/unversioned" "k8s.io/kubernetes/pkg/util" @@ -39,7 +41,7 @@ var _ = Describe("Docker Containers", func() { }) AfterEach(func() { - if err := deleteNS(c, ns); err != nil { + if err := deleteNS(c, ns, 5*time.Minute /* namespace deletion timeout */); err != nil { Failf("Couldn't delete ns %s", err) } }) diff --git a/test/e2e/examples.go b/test/e2e/examples.go index 0c2efba36ef..88a60df10a5 100644 --- a/test/e2e/examples.go +++ b/test/e2e/examples.go @@ -63,7 +63,7 @@ var _ = Describe("Examples e2e", func() { AfterEach(func() { By(fmt.Sprintf("Destroying namespace for this suite %v", ns)) - if err := deleteNS(c, ns); err != nil { + if err := deleteNS(c, ns, 5*time.Minute /* namespace deletion timeout */); err != nil { Failf("Couldn't delete ns %s", err) } }) @@ -458,7 +458,7 @@ var _ = Describe("Examples e2e", func() { var err error namespaces[i], err = createTestingNS(fmt.Sprintf("dnsexample%d", i), c) if namespaces[i] != nil { - defer deleteNS(c, namespaces[i].Name) + defer deleteNS(c, namespaces[i].Name, 5*time.Minute /* namespace deletion timeout */) } Expect(err).NotTo(HaveOccurred()) } diff --git a/test/e2e/framework.go b/test/e2e/framework.go index ae5e506cada..8dcfc9c9335 100644 --- a/test/e2e/framework.go +++ b/test/e2e/framework.go @@ -36,8 +36,9 @@ import ( type Framework struct { BaseName string - Namespace *api.Namespace - Client *client.Client + Namespace *api.Namespace + Client *client.Client + NamespaceDeletionTimeout time.Duration } // NewFramework makes a new framework and sets up a BeforeEach/AfterEach for @@ -101,7 +102,11 @@ func (f *Framework) afterEach() { By(fmt.Sprintf("Destroying namespace %q for this suite.", f.Namespace.Name)) - if err := deleteNS(f.Client, f.Namespace.Name); err != nil { + timeout := 5 * time.Minute + if f.NamespaceDeletionTimeout != 0 { + timeout = f.NamespaceDeletionTimeout + } + if err := deleteNS(f.Client, f.Namespace.Name, timeout); err != nil { Failf("Couldn't delete ns %q: %s", f.Namespace.Name, err) } // Paranoia-- prevent reuse! diff --git a/test/e2e/host_path.go b/test/e2e/host_path.go index 4c5502d45a9..c9047cadd47 100644 --- a/test/e2e/host_path.go +++ b/test/e2e/host_path.go @@ -20,6 +20,7 @@ import ( "fmt" "os" "path" + "time" "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/latest" @@ -53,7 +54,7 @@ var _ = Describe("hostPath", func() { AfterEach(func() { By(fmt.Sprintf("Destroying namespace for this suite %v", namespace.Name)) - if err := deleteNS(c, namespace.Name); err != nil { + if err := deleteNS(c, namespace.Name, 5*time.Minute /* namespace deletion timeout */); err != nil { Failf("Couldn't delete ns %s", err) } }) diff --git a/test/e2e/kubectl.go b/test/e2e/kubectl.go index 82fe45e62be..447ee1984ec 100644 --- a/test/e2e/kubectl.go +++ b/test/e2e/kubectl.go @@ -81,7 +81,7 @@ var _ = Describe("Kubectl client", func() { AfterEach(func() { By(fmt.Sprintf("Destroying namespace for this suite %v", ns)) - if err := deleteNS(c, ns); err != nil { + if err := deleteNS(c, ns, 5*time.Minute /* namespace deletion timeout */); err != nil { Failf("Couldn't delete ns %s", err) } }) diff --git a/test/e2e/load.go b/test/e2e/load.go index f9d15cdae1f..f71ee5b5d71 100644 --- a/test/e2e/load.go +++ b/test/e2e/load.go @@ -53,7 +53,7 @@ var _ = Describe("Load capacity", func() { var nodeCount int var ns string var configs []*RCConfig - framework := Framework{BaseName: "density"} + framework := Framework{BaseName: "load", NamespaceDeletionTimeout: time.Hour} BeforeEach(func() { framework.beforeEach() diff --git a/test/e2e/persistent_volumes.go b/test/e2e/persistent_volumes.go index e2cd160c512..639dd2521c0 100644 --- a/test/e2e/persistent_volumes.go +++ b/test/e2e/persistent_volumes.go @@ -47,7 +47,7 @@ var _ = Describe("[Skipped] persistentVolumes", func() { AfterEach(func() { By(fmt.Sprintf("Destroying namespace for this suite %v", ns)) - if err := deleteNS(c, ns); err != nil { + if err := deleteNS(c, ns, 5*time.Minute /* namespace deletion timeout */); err != nil { Failf("Couldn't delete ns %s", err) } }) diff --git a/test/e2e/resize_nodes.go b/test/e2e/resize_nodes.go index e8ededae954..87cdf58c62d 100644 --- a/test/e2e/resize_nodes.go +++ b/test/e2e/resize_nodes.go @@ -402,7 +402,7 @@ var _ = Describe("Nodes", func() { Failf("Not all nodes are ready: %v", err) } By(fmt.Sprintf("destroying namespace for this suite %s", ns)) - if err := deleteNS(c, ns); err != nil { + if err := deleteNS(c, ns, 5*time.Minute /* namespace deletion timeout */); err != nil { Failf("Couldn't delete namespace '%s', %v", ns, err) } if err := checkTestingNSDeletedExcept(c, ""); err != nil { diff --git a/test/e2e/scheduler_predicates.go b/test/e2e/scheduler_predicates.go index 599ea0b8639..a690c7c8d5b 100644 --- a/test/e2e/scheduler_predicates.go +++ b/test/e2e/scheduler_predicates.go @@ -171,7 +171,7 @@ var _ = Describe("SchedulerPredicates", func() { } By(fmt.Sprintf("Destroying namespace for this suite %v", ns)) - if err := deleteNS(c, ns); err != nil { + if err := deleteNS(c, ns, 10*time.Minute /* namespace deletion timeout */); err != nil { Failf("Couldn't delete ns %s", err) } }) diff --git a/test/e2e/service.go b/test/e2e/service.go index 948a9b3c3ee..e6ae07a0fd2 100644 --- a/test/e2e/service.go +++ b/test/e2e/service.go @@ -65,7 +65,7 @@ var _ = Describe("Services", func() { AfterEach(func() { for _, ns := range namespaces { By(fmt.Sprintf("Destroying namespace %v", ns)) - if err := deleteNS(c, ns); err != nil { + if err := deleteNS(c, ns, 5*time.Minute /* namespace deletion timeout */); err != nil { Failf("Couldn't delete namespace %s: %s", ns, err) } } diff --git a/test/e2e/util.go b/test/e2e/util.go index a3ddbe87121..0ff0ae3e6b5 100644 --- a/test/e2e/util.go +++ b/test/e2e/util.go @@ -531,12 +531,12 @@ func checkTestingNSDeletedExcept(c *client.Client, skip string) error { // deleteNS deletes the provided namespace, waits for it to be completely deleted, and then checks // whether there are any pods remaining in a non-terminating state. -func deleteNS(c *client.Client, namespace string) error { +func deleteNS(c *client.Client, namespace string, timeout time.Duration) error { if err := c.Namespaces().Delete(namespace); err != nil { return err } - err := wait.Poll(5*time.Second, 5*time.Minute, func() (bool, error) { + err := wait.Poll(5*time.Second, timeout, func() (bool, error) { if _, err := c.Namespaces().Get(namespace); err != nil { if apierrs.IsNotFound(err) { return true, nil diff --git a/test/e2e/volumes.go b/test/e2e/volumes.go index 03925f65873..062bbbc3832 100644 --- a/test/e2e/volumes.go +++ b/test/e2e/volumes.go @@ -236,7 +236,7 @@ var _ = Describe("Volumes", func() { AfterEach(func() { if clean { - if err := deleteNS(c, namespace.Name); err != nil { + if err := deleteNS(c, namespace.Name, 5*time.Minute /* namespace deletion timeout */); err != nil { Failf("Couldn't delete ns %s", err) } }