diff --git a/test/e2e/Makefile b/test/e2e/Makefile index 79af0d571..152f6674a 100644 --- a/test/e2e/Makefile +++ b/test/e2e/Makefile @@ -84,6 +84,7 @@ ADDITIONAL_BSL_PREFIX ?= ADDITIONAL_BSL_CONFIG ?= FEATURES ?= +DEBUG_E2E_TEST ?= false .PHONY:ginkgo ginkgo: # Make sure ginkgo is in $GOPATH/bin @@ -121,7 +122,8 @@ run: ginkgo -features=$(FEATURES) \ -install-velero=$(INSTALL_VELERO) \ -registry-credential-file=$(REGISTRY_CREDENTIAL_FILE) \ - -kibishii-directory=$(KIBISHII_DIRECTORY) + -kibishii-directory=$(KIBISHII_DIRECTORY) \ + -debug-e2e-test=$(DEBUG_E2E_TEST) build: ginkgo mkdir -p $(OUTPUT_DIR) diff --git a/test/e2e/backup/backup.go b/test/e2e/backup/backup.go index 730f6abf9..757c2e589 100644 --- a/test/e2e/backup/backup.go +++ b/test/e2e/backup/backup.go @@ -60,12 +60,11 @@ func BackupRestoreTest(useVolumeSnapshots bool) { }) AfterEach(func() { - DeleteNamespace(context.Background(), client, kibishiiNamespace, true) - Expect(err).To(Succeed(), fmt.Sprintf("failed to delete the namespace %q", kibishiiNamespace)) - if VeleroCfg.InstallVelero { - err = VeleroUninstall(context.Background(), VeleroCfg.VeleroCLI, VeleroCfg.VeleroNamespace) - Expect(err).To(Succeed()) + if !VeleroCfg.Debug { + err = VeleroUninstall(context.Background(), VeleroCfg.VeleroCLI, VeleroCfg.VeleroNamespace) + Expect(err).To(Succeed()) + } } }) diff --git a/test/e2e/backups/deletion.go b/test/e2e/backups/deletion.go index a1d7a0cc3..69c8bd355 100644 --- a/test/e2e/backups/deletion.go +++ b/test/e2e/backups/deletion.go @@ -67,8 +67,10 @@ func backup_deletion_test(useVolumeSnapshots bool) { AfterEach(func() { if VeleroCfg.InstallVelero { - err = VeleroUninstall(context.Background(), VeleroCfg.VeleroCLI, VeleroCfg.VeleroNamespace) - Expect(err).To(Succeed()) + if !VeleroCfg.Debug { + err = VeleroUninstall(context.Background(), VeleroCfg.VeleroCLI, VeleroCfg.VeleroNamespace) + Expect(err).To(Succeed()) + } } }) diff --git a/test/e2e/backups/sync_backups.go b/test/e2e/backups/sync_backups.go index a329b5114..8d1eb3d16 100644 --- a/test/e2e/backups/sync_backups.go +++ b/test/e2e/backups/sync_backups.go @@ -67,7 +67,9 @@ func BackupsSyncTest() { AfterEach(func() { if VeleroCfg.InstallVelero { - Expect(VeleroUninstall(context.Background(), VeleroCfg.VeleroCLI, VeleroCfg.VeleroNamespace)).To(Succeed()) + if !VeleroCfg.Debug { + Expect(VeleroUninstall(context.Background(), VeleroCfg.VeleroCLI, VeleroCfg.VeleroNamespace)).To(Succeed()) + } } }) diff --git a/test/e2e/basic/enable_api_group_versions.go b/test/e2e/basic/enable_api_group_versions.go index 46a7aeb26..1eac63b02 100644 --- a/test/e2e/basic/enable_api_group_versions.go +++ b/test/e2e/basic/enable_api_group_versions.go @@ -76,8 +76,10 @@ func APIGropuVersionsTest() { Expect(err).NotTo(HaveOccurred()) if VeleroCfg.InstallVelero { - err = VeleroUninstall(ctx, VeleroCfg.VeleroCLI, VeleroCfg.VeleroNamespace) - Expect(err).NotTo(HaveOccurred()) + if !VeleroCfg.Debug { + err = VeleroUninstall(ctx, VeleroCfg.VeleroCLI, VeleroCfg.VeleroNamespace) + Expect(err).NotTo(HaveOccurred()) + } } }) diff --git a/test/e2e/bsl-mgmt/deletion.go b/test/e2e/bsl-mgmt/deletion.go index 5bc6d3595..a034b2da3 100644 --- a/test/e2e/bsl-mgmt/deletion.go +++ b/test/e2e/bsl-mgmt/deletion.go @@ -70,11 +70,13 @@ func BslDeletionTest(useVolumeSnapshots bool) { AfterEach(func() { if VeleroCfg.InstallVelero { - Expect(DeleteNamespace(context.Background(), client, bslDeletionTestNs, - true)).To(Succeed(), fmt.Sprintf("failed to delete the namespace %q", - bslDeletionTestNs)) - Expect(VeleroUninstall(context.Background(), VeleroCfg.VeleroCLI, - VeleroCfg.VeleroNamespace)).To(Succeed()) + if !VeleroCfg.Debug { + Expect(DeleteNamespace(context.Background(), client, bslDeletionTestNs, + true)).To(Succeed(), fmt.Sprintf("failed to delete the namespace %q", + bslDeletionTestNs)) + Expect(VeleroUninstall(context.Background(), VeleroCfg.VeleroCLI, + VeleroCfg.VeleroNamespace)).To(Succeed()) + } } }) diff --git a/test/e2e/e2e_suite_test.go b/test/e2e/e2e_suite_test.go index 9186ca3aa..a0d4c3d59 100644 --- a/test/e2e/e2e_suite_test.go +++ b/test/e2e/e2e_suite_test.go @@ -64,6 +64,7 @@ func init() { flag.StringVar(&VeleroCfg.AdditionalBSLConfig, "additional-bsl-config", "", "configuration to use for the additional backup storage location. Format is key1=value1,key2=value2") flag.StringVar(&VeleroCfg.AdditionalBSLCredentials, "additional-bsl-credentials-file", "", "file containing credentials for additional backup storage location provider. Required if testing multiple credentials support.") flag.StringVar(&VeleroCfg.Features, "features", "", "Comma-separated list of features to enable for this Velero process.") + flag.BoolVar(&VeleroCfg.Debug, "debug-e2e-test", false, "Switch to control namespace cleaning.") } var _ = Describe("[APIGroup] Velero tests with various CRD API group versions", APIGropuVersionsTest) diff --git a/test/e2e/privilegesmgmt/ssr.go b/test/e2e/privilegesmgmt/ssr.go index 40be8c158..90d7cd7f7 100644 --- a/test/e2e/privilegesmgmt/ssr.go +++ b/test/e2e/privilegesmgmt/ssr.go @@ -51,7 +51,9 @@ func SSRTest() { AfterEach(func() { if VeleroCfg.InstallVelero { - Expect(VeleroUninstall(context.Background(), VeleroCfg.VeleroCLI, VeleroCfg.VeleroNamespace)).To(Succeed()) + if !VeleroCfg.Debug { + Expect(VeleroUninstall(context.Background(), VeleroCfg.VeleroCLI, VeleroCfg.VeleroNamespace)).To(Succeed()) + } } }) diff --git a/test/e2e/test/test.go b/test/e2e/test/test.go index de27e2bb6..995b4fda7 100644 --- a/test/e2e/test/test.go +++ b/test/e2e/test/test.go @@ -84,7 +84,9 @@ func TestFunc(test VeleroBackupRestoreTest) func() { }) AfterEach(func() { if VeleroCfg.InstallVelero { - Expect(VeleroUninstall(context.Background(), VeleroCfg.VeleroCLI, VeleroCfg.VeleroNamespace)).To((Succeed())) + if !VeleroCfg.Debug { + Expect(VeleroUninstall(context.Background(), VeleroCfg.VeleroCLI, VeleroCfg.VeleroNamespace)).To((Succeed())) + } } }) It(test.GetTestMsg().Text, func() { @@ -115,7 +117,7 @@ func TestFuncWithMultiIt(tests []VeleroBackupRestoreTest) func() { AfterEach(func() { if VeleroCfg.InstallVelero { - if countIt == len(tests) { + if countIt == len(tests) && !VeleroCfg.Debug { Expect(VeleroUninstall(context.Background(), VeleroCfg.VeleroCLI, VeleroCfg.VeleroNamespace)).To((Succeed())) } } diff --git a/test/e2e/types.go b/test/e2e/types.go index 3e4cd7168..5a0a8ae9b 100644 --- a/test/e2e/types.go +++ b/test/e2e/types.go @@ -50,6 +50,7 @@ type VerleroConfig struct { InstallVelero bool KibishiiDirectory string Features string + Debug bool } type SnapshotCheckPoint struct { diff --git a/test/e2e/upgrade/upgrade.go b/test/e2e/upgrade/upgrade.go index 5bbb7c21f..0d98908d5 100644 --- a/test/e2e/upgrade/upgrade.go +++ b/test/e2e/upgrade/upgrade.go @@ -94,13 +94,15 @@ func BackupUpgradeRestoreTest(useVolumeSnapshots bool, upgradeFromVelero Upgrade }) AfterEach(func() { if VeleroCfg.InstallVelero { - By(fmt.Sprintf("Delete sample workload namespace %s", upgradeNamespace), func() { - DeleteNamespace(context.Background(), client, upgradeNamespace, true) - }) - By("Uninstall Velero", func() { - Expect(VeleroUninstall(context.Background(), VeleroCfg.VeleroCLI, - VeleroCfg.VeleroNamespace)).To(Succeed()) - }) + if !VeleroCfg.Debug { + By(fmt.Sprintf("Delete sample workload namespace %s", upgradeNamespace), func() { + DeleteNamespace(context.Background(), client, upgradeNamespace, true) + }) + By("Uninstall Velero", func() { + Expect(VeleroUninstall(context.Background(), VeleroCfg.VeleroCLI, + VeleroCfg.VeleroNamespace)).To(Succeed()) + }) + } } }) When("kibishii is the sample workload", func() { diff --git a/test/e2e/util/kibishii/kibishii_utils.go b/test/e2e/util/kibishii/kibishii_utils.go index 7ad137cbc..d99b1b939 100644 --- a/test/e2e/util/kibishii/kibishii_utils.go +++ b/test/e2e/util/kibishii/kibishii_utils.go @@ -46,11 +46,22 @@ func RunKibishiiTests(client TestClient, veleroCfg VerleroConfig, backupName, re registryCredentialFile := VeleroCfg.RegistryCredentialFile veleroFeatures := VeleroCfg.Features kibishiiDirectory := VeleroCfg.KibishiiDirectory - + if _, err := GetNamespace(context.Background(), client, kibishiiNamespace); err == nil { + fmt.Printf("Workload namespace %s exists, delete it first.", kibishiiNamespace) + if err = DeleteNamespace(context.Background(), client, kibishiiNamespace, true); err != nil { + fmt.Println(errors.Wrapf(err, "failed to delete the namespace %q", kibishiiNamespace)) + } + } if err := CreateNamespace(oneHourTimeout, client, kibishiiNamespace); err != nil { return errors.Wrapf(err, "Failed to create namespace %s to install Kibishii workload", kibishiiNamespace) } - + defer func() { + if !veleroCfg.Debug { + if err := DeleteNamespace(context.Background(), client, kibishiiNamespace, true); err != nil { + fmt.Println(errors.Wrapf(err, "failed to delete the namespace %q", kibishiiNamespace)) + } + } + }() if err := KibishiiPrepareBeforeBackup(oneHourTimeout, client, providerName, kibishiiNamespace, registryCredentialFile, veleroFeatures, kibishiiDirectory, useVolumeSnapshots); err != nil {