diff --git a/hack/verify-flags/known-flags.txt b/hack/verify-flags/known-flags.txt index d3696c3d6ad..ca0fc828aa4 100644 --- a/hack/verify-flags/known-flags.txt +++ b/hack/verify-flags/known-flags.txt @@ -59,6 +59,7 @@ cpu-percent default-container-cpu-limit default-container-mem-limit delay-shutdown +delete-namespace deleting-pods-burst deleting-pods-qps deployment-label-key diff --git a/test/e2e/e2e_test.go b/test/e2e/e2e_test.go index f92b0f49181..40acec4bf8b 100644 --- a/test/e2e/e2e_test.go +++ b/test/e2e/e2e_test.go @@ -82,6 +82,7 @@ func init() { flag.StringVar(&testContext.UpgradeTarget, "upgrade-target", "ci/latest", "Version to upgrade to (e.g. 'release/stable', 'release/latest', 'ci/latest', '0.19.1', '0.19.1-669-gabac8c8') if doing an upgrade test.") flag.StringVar(&testContext.PrometheusPushGateway, "prom-push-gateway", "", "The URL to prometheus gateway, so that metrics can be pushed during e2es and scraped by prometheus. Typically something like 127.0.0.1:9091.") flag.BoolVar(&testContext.VerifyServiceAccount, "e2e-verify-service-account", true, "If true tests will verify the service account before running.") + flag.BoolVar(&testContext.DeleteNamespace, "delete-namespace", true, "If true tests will delete namespace after completion. It is only designed to make debugging easier, DO NOT turn it off by default.") } func TestE2E(t *testing.T) { diff --git a/test/e2e/framework.go b/test/e2e/framework.go index 1ae57ff14eb..7f6a598e39d 100644 --- a/test/e2e/framework.go +++ b/test/e2e/framework.go @@ -100,14 +100,18 @@ func (f *Framework) afterEach() { Failf("All nodes should be ready after test, %v", err) } - By(fmt.Sprintf("Destroying namespace %q for this suite.", f.Namespace.Name)) + if testContext.DeleteNamespace { + By(fmt.Sprintf("Destroying namespace %q for this suite.", f.Namespace.Name)) - 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) + 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) + } + } else { + Logf("Found DeleteNamespace=false, skipping namespace deletion!") } // Paranoia-- prevent reuse! f.Namespace = nil diff --git a/test/e2e/util.go b/test/e2e/util.go index 9ee36c4900e..0ef3f57cbd1 100644 --- a/test/e2e/util.go +++ b/test/e2e/util.go @@ -120,6 +120,7 @@ type TestContextType struct { UpgradeTarget string PrometheusPushGateway string VerifyServiceAccount bool + DeleteNamespace bool } var testContext TestContextType