From c20612babc7fe2cb3516ead22ac2cde7a5c5db26 Mon Sep 17 00:00:00 2001 From: Paul Holzinger Date: Tue, 4 Jul 2023 15:12:46 +0200 Subject: [PATCH 1/7] test/e2e: write timings directly to file There is no need to buffer them all into an array then write them once at the end. Just write directly to the file. Fixes #19104 Signed-off-by: Paul Holzinger --- test/e2e/common_test.go | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/test/e2e/common_test.go b/test/e2e/common_test.go index 22d0c7aa4b..15bac560c8 100644 --- a/test/e2e/common_test.go +++ b/test/e2e/common_test.go @@ -56,7 +56,6 @@ type PodmanTestIntegration struct { SignaturePolicyPath string CgroupManager string Host HostOS - Timings []string TmpDir string RemoteStartErr error } @@ -82,9 +81,6 @@ type testResultsSortedLength struct{ testResultsSorted } func (a testResultsSorted) Less(i, j int) bool { return a[i].length < a[j].length } -var testResults []testResult -var testResultsMutex sync.Mutex - func TestMain(m *testing.M) { if reexec.Init() { return @@ -107,6 +103,7 @@ var ( err error podmanTest *PodmanTestIntegration safeIPOctets [2]uint8 + timingsFile *os.File _ = BeforeEach(func() { tempdir, err = CreateTempDirInTempDir() @@ -188,6 +185,9 @@ var _ = SynchronizedBeforeSuite(func() []byte { cwd, _ := os.Getwd() INTEGRATION_ROOT = filepath.Join(cwd, "../../") LockTmpDir = string(data) + + timingsFile, err = os.Create(fmt.Sprintf("%s/timings-%d", LockTmpDir, GinkgoParallelProcess())) + Expect(err).ToNot(HaveOccurred()) }) func (p *PodmanTestIntegration) Setup() { @@ -196,13 +196,8 @@ func (p *PodmanTestIntegration) Setup() { } var _ = SynchronizedAfterSuite(func() { - f, err := os.Create(fmt.Sprintf("%s/timings-%d", LockTmpDir, GinkgoParallelProcess())) - Expect(err).ToNot(HaveOccurred()) - defer f.Close() - for _, result := range testResults { - _, err := f.WriteString(fmt.Sprintf("%s\t\t%f\n", result.name, result.length)) - Expect(err).ToNot(HaveOccurred(), "write timings") - } + timingsFile.Close() + timingsFile = nil }, func() { testTimings := make(testResultsSorted, 0, 2000) @@ -467,9 +462,8 @@ func (p *PodmanTestIntegration) InspectContainer(name string) []define.InspectCo func processTestResult(r SpecReport) { tr := testResult{length: r.RunTime.Seconds(), name: r.FullText()} - testResultsMutex.Lock() - testResults = append(testResults, tr) - testResultsMutex.Unlock() + _, err := timingsFile.WriteString(fmt.Sprintf("%s\t\t%f\n", tr.name, tr.length)) + Expect(err).ToNot(HaveOccurred(), "write timings") } func GetPortLock(port string) *lockfile.LockFile { From db7cb1dbfcfd4f05858e7579f33bfbb91b458666 Mon Sep 17 00:00:00 2001 From: Paul Holzinger Date: Tue, 4 Jul 2023 15:16:42 +0200 Subject: [PATCH 2/7] test/tools: vendor ginkgo v2.11 Ginkgo currently logs a warning because the cli version (defnied in test/tools/go.mod) does not match the library version (defnied in go.mod). Simply fix this by updating ginkgo to the latest version. Signed-off-by: Paul Holzinger --- test/tools/go.mod | 2 +- test/tools/go.sum | 6 +++--- .../ginkgo/v2/ginkgo/generators/generate_command.go | 5 +++++ .../v2/ginkgo/generators/generate_templates.go | 6 ++++-- .../ginkgo/v2/ginkgo/generators/generators_common.go | 12 ++++++++++++ .../github.com/onsi/ginkgo/v2/types/version.go | 2 +- test/tools/vendor/modules.txt | 2 +- 7 files changed, 27 insertions(+), 8 deletions(-) diff --git a/test/tools/go.mod b/test/tools/go.mod index 3ebec32f44..2dceb2eb03 100644 --- a/test/tools/go.mod +++ b/test/tools/go.mod @@ -4,7 +4,7 @@ go 1.18 require ( github.com/cpuguy83/go-md2man/v2 v2.0.2 - github.com/onsi/ginkgo/v2 v2.9.6 + github.com/onsi/ginkgo/v2 v2.11.0 github.com/vbatts/git-validation v1.2.0 golang.org/x/tools v0.10.0 ) diff --git a/test/tools/go.sum b/test/tools/go.sum index b563bc2e06..2037ab6c10 100644 --- a/test/tools/go.sum +++ b/test/tools/go.sum @@ -17,9 +17,9 @@ github.com/hashicorp/go-version v1.3.0 h1:McDWVJIU/y+u1BRV06dPaLfLCaT7fUTJLp5r04 github.com/hashicorp/go-version v1.3.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/onsi/ginkgo/v2 v2.9.6 h1:QPnYLUAuyyKYVInVqnaBV+4k+r6LZ27+iBGAOcqNPHE= -github.com/onsi/ginkgo/v2 v2.9.6/go.mod h1:cxrmXWykAwTwhQsJOPfdIDiJ+l2RYq7U8hFU+M/1uw0= -github.com/onsi/gomega v1.27.7 h1:fVih9JD6ogIiHUN6ePK7HJidyEDpWGVB5mzM7cWNXoU= +github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= +github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= +github.com/onsi/gomega v1.27.8 h1:gegWiwZjBsf2DgiSbf5hpokZ98JVDMcWkUiigk6/KXc= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= diff --git a/test/tools/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_command.go b/test/tools/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_command.go index 48d23f9191..be01dec979 100644 --- a/test/tools/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_command.go +++ b/test/tools/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_command.go @@ -32,6 +32,9 @@ func BuildGenerateCommand() command.Command { {Name: "template-data", KeyPath: "CustomTemplateData", UsageArgument: "template-data-file", Usage: "If specified, generate will use the contents of the file passed as data to be rendered in the test file template"}, + {Name: "tags", KeyPath: "Tags", + UsageArgument: "build-tags", + Usage: "If specified, generate will create a test file that uses the given build tags (i.e. `--tags e2e,!unit` will add `//go:build e2e,!unit`)"}, }, &conf, types.GinkgoFlagSections{}, @@ -59,6 +62,7 @@ You can also pass a of the form "file.go" and generate will emit "fil } type specData struct { + BuildTags string Package string Subject string PackageImportPath string @@ -93,6 +97,7 @@ func generateTestFileForSubject(subject string, conf GeneratorsConfig) { } data := specData{ + BuildTags: getBuildTags(conf.Tags), Package: determinePackageName(packageName, conf.Internal), Subject: formattedName, PackageImportPath: getPackageImportPath(), diff --git a/test/tools/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_templates.go b/test/tools/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_templates.go index c3470adbfd..4dab07d036 100644 --- a/test/tools/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_templates.go +++ b/test/tools/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_templates.go @@ -1,6 +1,7 @@ package generators -var specText = `package {{.Package}} +var specText = `{{.BuildTags}} +package {{.Package}} import ( {{.GinkgoImport}} @@ -14,7 +15,8 @@ var _ = {{.GinkgoPackage}}Describe("{{.Subject}}", func() { }) ` -var agoutiSpecText = `package {{.Package}} +var agoutiSpecText = `{{.BuildTags}} +package {{.Package}} import ( {{.GinkgoImport}} diff --git a/test/tools/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generators_common.go b/test/tools/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generators_common.go index 3046a4487a..28c7aa6f43 100644 --- a/test/tools/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generators_common.go +++ b/test/tools/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generators_common.go @@ -1,6 +1,7 @@ package generators import ( + "fmt" "go/build" "os" "path/filepath" @@ -14,6 +15,7 @@ type GeneratorsConfig struct { Agouti, NoDot, Internal bool CustomTemplate string CustomTemplateData string + Tags string } func getPackageAndFormattedName() (string, string, string) { @@ -62,3 +64,13 @@ func determinePackageName(name string, internal bool) string { return name + "_test" } + +// getBuildTags returns the resultant string to be added. +// If the input string is not empty, then returns a `//go:build {}` string, +// otherwise returns an empty string. +func getBuildTags(tags string) string { + if tags != "" { + return fmt.Sprintf("//go:build %s\n", tags) + } + return "" +} diff --git a/test/tools/vendor/github.com/onsi/ginkgo/v2/types/version.go b/test/tools/vendor/github.com/onsi/ginkgo/v2/types/version.go index 2ca1f7ba00..f895739b83 100644 --- a/test/tools/vendor/github.com/onsi/ginkgo/v2/types/version.go +++ b/test/tools/vendor/github.com/onsi/ginkgo/v2/types/version.go @@ -1,3 +1,3 @@ package types -const VERSION = "2.9.6" +const VERSION = "2.11.0" diff --git a/test/tools/vendor/modules.txt b/test/tools/vendor/modules.txt index c65f4d60e2..5aace32db4 100644 --- a/test/tools/vendor/modules.txt +++ b/test/tools/vendor/modules.txt @@ -11,7 +11,7 @@ github.com/google/pprof/profile # github.com/hashicorp/go-version v1.3.0 ## explicit github.com/hashicorp/go-version -# github.com/onsi/ginkgo/v2 v2.9.6 +# github.com/onsi/ginkgo/v2 v2.11.0 ## explicit; go 1.18 github.com/onsi/ginkgo/v2/config github.com/onsi/ginkgo/v2/formatter From ff7790038796ce9c4d138e24ddd10e1714a5471f Mon Sep 17 00:00:00 2001 From: Paul Holzinger Date: Tue, 4 Jul 2023 15:37:36 +0200 Subject: [PATCH 3/7] test/e2e: do not use /tmp for podman commands Using the OS tempdir here is not good. This defaults to /tmp which means the inital podman test setup uses these paths: `--root /tmp/root --runroot /tmp/runroot and --tmpdir /tmp` Thus we create many files directly under /tmp. Also they were never removed thus leaked out. When running as root and then later as rooltess this would fail to permission problems. Signed-off-by: Paul Holzinger --- test/e2e/common_test.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/e2e/common_test.go b/test/e2e/common_test.go index 15bac560c8..89c5362784 100644 --- a/test/e2e/common_test.go +++ b/test/e2e/common_test.go @@ -137,7 +137,7 @@ var _ = SynchronizedBeforeSuite(func() []byte { // Cache images cwd, _ := os.Getwd() INTEGRATION_ROOT = filepath.Join(cwd, "../../") - podman := PodmanTestSetup(os.TempDir()) + podman := PodmanTestSetup(GinkgoT().TempDir()) // Pull cirros but don't put it into the cache pullImages := []string{CIRROS_IMAGE, fedoraToolbox, volumeTest} @@ -180,6 +180,9 @@ var _ = SynchronizedBeforeSuite(func() []byte { podman.StopRemoteService() } + // remove temporary podman files, images are now cached in ImageCacheDir + podman.removeCache(podman.TempDir) + return []byte(path) }, func(data []byte) { cwd, _ := os.Getwd() From bc22aefce65f0588154f1f0f1266ed6f8765e20a Mon Sep 17 00:00:00 2001 From: Paul Holzinger Date: Tue, 4 Jul 2023 16:06:28 +0200 Subject: [PATCH 4/7] test/e2e: remove unnecessary code in SynchronizedAfterSuite This code does not do anything useful beside removing the cache dir. Signed-off-by: Paul Holzinger --- test/e2e/common_test.go | 44 ++++++++++++++++------------------------- 1 file changed, 17 insertions(+), 27 deletions(-) diff --git a/test/e2e/common_test.go b/test/e2e/common_test.go index 89c5362784..431ec6e2fe 100644 --- a/test/e2e/common_test.go +++ b/test/e2e/common_test.go @@ -181,7 +181,7 @@ var _ = SynchronizedBeforeSuite(func() []byte { } // remove temporary podman files, images are now cached in ImageCacheDir - podman.removeCache(podman.TempDir) + rmAll(podman.PodmanBinary, podman.TempDir) return []byte(path) }, func(data []byte) { @@ -230,30 +230,21 @@ var _ = SynchronizedAfterSuite(func() { GinkgoWriter.Printf("%s\t\t%f\n", result.name, result.length) } - // previous runroot - tempdir, err := CreateTempDirInTempDir() - if err != nil { - os.Exit(1) - } - podmanTest := PodmanTestCreate(tempdir) - defer os.RemoveAll(tempdir) - - if err := os.RemoveAll(podmanTest.Root); err != nil { - GinkgoWriter.Printf("%q\n", err) - } - - // If running remote, we need to stop the associated podman system service - if podmanTest.RemoteTest { - podmanTest.StopRemoteService() - } - // for localized tests, this removes the image cache dir and for remote tests - // this is a no-op - podmanTest.removeCache(podmanTest.ImageCacheDir) + cwd, _ := os.Getwd() + rmAll(getPodmanBinary(cwd), ImageCacheDir) // LockTmpDir can already be removed os.RemoveAll(LockTmpDir) }) +func getPodmanBinary(cwd string) string { + podmanBinary := filepath.Join(cwd, "../../bin/podman") + if os.Getenv("PODMAN_BINARY") != "" { + podmanBinary = os.Getenv("PODMAN_BINARY") + } + return podmanBinary +} + // PodmanTestCreate creates a PodmanTestIntegration instance for the tests func PodmanTestCreateUtil(tempDir string, remote bool) *PodmanTestIntegration { var podmanRemoteBinary string @@ -262,10 +253,7 @@ func PodmanTestCreateUtil(tempDir string, remote bool) *PodmanTestIntegration { cwd, _ := os.Getwd() root := filepath.Join(tempDir, "root") - podmanBinary := filepath.Join(cwd, "../../bin/podman") - if os.Getenv("PODMAN_BINARY") != "" { - podmanBinary = os.Getenv("PODMAN_BINARY") - } + podmanBinary := getPodmanBinary(cwd) podmanRemoteBinary = filepath.Join(cwd, "../../bin/podman-remote") if os.Getenv("PODMAN_REMOTE_BINARY") != "" { @@ -654,7 +642,7 @@ func (p *PodmanTestIntegration) Cleanup() { p.StopRemoteService() // Nuke tempdir - p.removeCache(p.TempDir) + rmAll(p.PodmanBinary, p.TempDir) // Clean up the registries configuration file ENV variable set in Create resetRegistriesConfigEnv() @@ -990,11 +978,13 @@ func populateCache(podman *PodmanTestIntegration) { GinkgoWriter.Printf("-----------------------------\n") } -func (p *PodmanTestIntegration) removeCache(path string) { +// rmAll removes the direcory and its content,, when running rootless we use +// podman unshare to prevent any subuid/gid problems +func rmAll(podmanBin string, path string) { // Remove cache dirs if isRootless() { // If rootless, os.RemoveAll() is failed due to permission denied - cmd := exec.Command(p.PodmanBinary, "unshare", "rm", "-rf", path) + cmd := exec.Command(podmanBin, "unshare", "rm", "-rf", path) cmd.Stdout = GinkgoWriter cmd.Stderr = GinkgoWriter if err := cmd.Run(); err != nil { From 17a06d343176d53552e9017e8aebecd7fa252452 Mon Sep 17 00:00:00 2001 From: Paul Holzinger Date: Tue, 4 Jul 2023 16:10:11 +0200 Subject: [PATCH 5/7] test/e2e: remove RHEL7 workaround AFAIK the latest podman will not even run on RHEL 7 anymore, in any case we do not need these tests to run there. Signed-off-by: Paul Holzinger --- test/e2e/common_test.go | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/test/e2e/common_test.go b/test/e2e/common_test.go index 431ec6e2fe..7ca18d3ab9 100644 --- a/test/e2e/common_test.go +++ b/test/e2e/common_test.go @@ -155,20 +155,6 @@ var _ = SynchronizedBeforeSuite(func() []byte { // tests are remote, this is a no-op populateCache(podman) - host := GetHostDistributionInfo() - if host.Distribution == "rhel" && strings.HasPrefix(host.Version, "7") { - f, err := os.OpenFile("/proc/sys/user/max_user_namespaces", os.O_WRONLY, 0644) - if err != nil { - GinkgoWriter.Println("Unable to enable userspace on RHEL 7") - os.Exit(1) - } - _, err = f.WriteString("15000") - if err != nil { - GinkgoWriter.Println("Unable to enable userspace on RHEL 7") - os.Exit(1) - } - f.Close() - } path, err := os.MkdirTemp("", "libpodlock") if err != nil { GinkgoWriter.Println(err) From ea8992cb459846dc63233547b033b280fe1e4c8b Mon Sep 17 00:00:00 2001 From: Paul Holzinger Date: Tue, 4 Jul 2023 16:36:56 +0200 Subject: [PATCH 6/7] test/e2e: use random ImageCacheDir Like LockTmpDir use a random tmpdir for this directory. Make sure it is set for all parallel ginkgo processes. Also GinkgoT().TempDir() will automatcially remove the directory at the end so we do not need to worry about cleanup. Signed-off-by: Paul Holzinger --- test/e2e/common_test.go | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/test/e2e/common_test.go b/test/e2e/common_test.go index 7ca18d3ab9..8264677a25 100644 --- a/test/e2e/common_test.go +++ b/test/e2e/common_test.go @@ -126,9 +126,18 @@ var ( }) ) +const ( + // lockdir - do not use directly use LockTmpDir + lockdir = "libpodlock" + // imageCacheDir - do not use directly use ImageCacheDir + imageCacheDir = "imagecachedir" +) + var _ = SynchronizedBeforeSuite(func() []byte { + globalTmpDir := GinkgoT().TempDir() + // make cache dir - ImageCacheDir = filepath.Join(os.TempDir(), "imagecachedir") + ImageCacheDir = filepath.Join(globalTmpDir, imageCacheDir) if err := os.MkdirAll(ImageCacheDir, 0700); err != nil { GinkgoWriter.Printf("%q\n", err) os.Exit(1) @@ -155,9 +164,8 @@ var _ = SynchronizedBeforeSuite(func() []byte { // tests are remote, this is a no-op populateCache(podman) - path, err := os.MkdirTemp("", "libpodlock") - if err != nil { - GinkgoWriter.Println(err) + if err := os.MkdirAll(filepath.Join(globalTmpDir, lockdir), 0700); err != nil { + GinkgoWriter.Printf("%q\n", err) os.Exit(1) } @@ -169,11 +177,13 @@ var _ = SynchronizedBeforeSuite(func() []byte { // remove temporary podman files, images are now cached in ImageCacheDir rmAll(podman.PodmanBinary, podman.TempDir) - return []byte(path) + return []byte(globalTmpDir) }, func(data []byte) { cwd, _ := os.Getwd() INTEGRATION_ROOT = filepath.Join(cwd, "../../") - LockTmpDir = string(data) + globalTmpDir := string(data) + ImageCacheDir = filepath.Join(globalTmpDir, imageCacheDir) + LockTmpDir = filepath.Join(globalTmpDir, lockdir) timingsFile, err = os.Create(fmt.Sprintf("%s/timings-%d", LockTmpDir, GinkgoParallelProcess())) Expect(err).ToNot(HaveOccurred()) @@ -218,9 +228,6 @@ var _ = SynchronizedAfterSuite(func() { cwd, _ := os.Getwd() rmAll(getPodmanBinary(cwd), ImageCacheDir) - - // LockTmpDir can already be removed - os.RemoveAll(LockTmpDir) }) func getPodmanBinary(cwd string) string { @@ -314,8 +321,6 @@ func PodmanTestCreateUtil(tempDir string, remote bool) *PodmanTestIntegration { storageOptions = "--storage-driver " + storageFs } - ImageCacheDir = filepath.Join(os.TempDir(), "imagecachedir") - p := &PodmanTestIntegration{ PodmanTest: PodmanTest{ PodmanBinary: podmanBinary, From fc5aa9c9caa28d935a5853c1bd9aef6bcf6355d1 Mon Sep 17 00:00:00 2001 From: Paul Holzinger Date: Tue, 4 Jul 2023 17:07:14 +0200 Subject: [PATCH 7/7] test/e2e: use GinkgoT().TempDir() over MkdirTemp() Using GinkgoT().TempDir() will automatically result in the directy to be cleaned up when the test is done. This should help to prevent leaking files and we do not need to error check every time. Signed-off-by: Paul Holzinger --- test/e2e/cp_test.go | 3 +-- test/e2e/create_test.go | 4 +--- test/e2e/generate_kube_test.go | 5 +---- test/e2e/generate_systemd_test.go | 4 +--- test/e2e/kill_test.go | 14 +++----------- test/e2e/pause_test.go | 8 ++------ test/e2e/play_kube_test.go | 5 +---- test/e2e/pod_rm_test.go | 8 ++------ test/e2e/pod_start_test.go | 12 +++--------- test/e2e/pod_stop_test.go | 10 ++-------- test/e2e/restart_test.go | 11 ++--------- test/e2e/rm_test.go | 11 ++--------- test/e2e/stop_test.go | 13 ++----------- 13 files changed, 23 insertions(+), 85 deletions(-) diff --git a/test/e2e/cp_test.go b/test/e2e/cp_test.go index e2c3148215..8dcc38497e 100644 --- a/test/e2e/cp_test.go +++ b/test/e2e/cp_test.go @@ -243,8 +243,7 @@ var _ = Describe("Podman cp", func() { session.WaitWithDefaultTimeout() Expect(session).Should(Exit(0)) - tmpDir, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) + tmpDir := GinkgoT().TempDir() session = podmanTest.Podman([]string{"cp", container + ":/", tmpDir}) session.WaitWithDefaultTimeout() diff --git a/test/e2e/create_test.go b/test/e2e/create_test.go index 10ac0f1be5..3aff7e31ed 100644 --- a/test/e2e/create_test.go +++ b/test/e2e/create_test.go @@ -204,9 +204,7 @@ var _ = Describe("Podman create", func() { session.WaitWithDefaultTimeout() Expect(session).Should(Exit(125)) - tmpDir, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) - defer os.RemoveAll(tmpDir) + tmpDir := GinkgoT().TempDir() podName := "rudolph" ctrName := "prancer" diff --git a/test/e2e/generate_kube_test.go b/test/e2e/generate_kube_test.go index decb547594..dcc0a4ce09 100644 --- a/test/e2e/generate_kube_test.go +++ b/test/e2e/generate_kube_test.go @@ -1382,10 +1382,7 @@ USER test1` }) It("podman generate kube omit secret if empty", func() { - dir, err := os.MkdirTemp(tempdir, "podman") - Expect(err).ShouldNot(HaveOccurred()) - - defer os.RemoveAll(dir) + dir := GinkgoT().TempDir() podCreate := podmanTest.Podman([]string{"run", "-d", "--pod", "new:" + "noSecretsPod", "--name", "noSecretsCtr", "--volume", dir + ":/foobar", ALPINE}) podCreate.WaitWithDefaultTimeout() diff --git a/test/e2e/generate_systemd_test.go b/test/e2e/generate_systemd_test.go index b984a6ed5b..4630c2d87e 100644 --- a/test/e2e/generate_systemd_test.go +++ b/test/e2e/generate_systemd_test.go @@ -544,10 +544,8 @@ var _ = Describe("Podman generate systemd", func() { }) It("podman generate systemd pod with containers --new", func() { - tmpDir, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) + tmpDir := GinkgoT().TempDir() tmpFile := tmpDir + "podID" - defer os.RemoveAll(tmpDir) n := podmanTest.Podman([]string{"pod", "create", "--pod-id-file", tmpFile, "--name", "foo"}) n.WaitWithDefaultTimeout() diff --git a/test/e2e/kill_test.go b/test/e2e/kill_test.go index 91e922112f..280ccb2c82 100644 --- a/test/e2e/kill_test.go +++ b/test/e2e/kill_test.go @@ -1,8 +1,6 @@ package integration import ( - "os" - . "github.com/containers/podman/v4/test/utils" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" @@ -128,10 +126,8 @@ var _ = Describe("Podman kill", func() { }) It("podman kill --cidfile", func() { - tmpDir, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) + tmpDir := GinkgoT().TempDir() tmpFile := tmpDir + "cid" - defer os.RemoveAll(tmpDir) session := podmanTest.Podman([]string{"run", "-dt", "--cidfile", tmpFile, ALPINE, "top"}) session.WaitWithDefaultTimeout() @@ -148,15 +144,11 @@ var _ = Describe("Podman kill", func() { }) It("podman kill multiple --cidfile", func() { - tmpDir1, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) + tmpDir1 := GinkgoT().TempDir() tmpFile1 := tmpDir1 + "cid" - defer os.RemoveAll(tmpDir1) - tmpDir2, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) + tmpDir2 := GinkgoT().TempDir() tmpFile2 := tmpDir2 + "cid" - defer os.RemoveAll(tmpDir2) session := podmanTest.Podman([]string{"run", "-dt", "--cidfile", tmpFile1, ALPINE, "top"}) session.WaitWithDefaultTimeout() diff --git a/test/e2e/pause_test.go b/test/e2e/pause_test.go index bcd31f347a..c4dc227f7e 100644 --- a/test/e2e/pause_test.go +++ b/test/e2e/pause_test.go @@ -321,12 +321,9 @@ var _ = Describe("Podman pause", func() { }) It("podman pause --cidfile", func() { - tmpDir, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) + tmpDir := GinkgoT().TempDir() tmpFile := tmpDir + "cid" - defer os.RemoveAll(tmpDir) - session := podmanTest.Podman([]string{"create", "--cidfile", tmpFile, ALPINE, "top"}) session.WaitWithDefaultTimeout() Expect(session).Should(Exit(0)) @@ -350,8 +347,7 @@ var _ = Describe("Podman pause", func() { }) It("podman pause multiple --cidfile", func() { - tmpDir, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) + tmpDir := GinkgoT().TempDir() tmpFile1 := tmpDir + "cid-1" tmpFile2 := tmpDir + "cid-2" diff --git a/test/e2e/play_kube_test.go b/test/e2e/play_kube_test.go index c6991e27d4..d3af40e9ba 100644 --- a/test/e2e/play_kube_test.go +++ b/test/e2e/play_kube_test.go @@ -1729,10 +1729,7 @@ func milliCPUToQuota(milliCPU string) int { } func createSourceTarFile(fileName, fileContent, tarFilePath string) error { - dir, err := os.MkdirTemp("", "podmanTest") - if err != nil { - return err - } + dir := GinkgoT().TempDir() file, err := os.Create(filepath.Join(dir, fileName)) if err != nil { diff --git a/test/e2e/pod_rm_test.go b/test/e2e/pod_rm_test.go index d5d0e4ccc7..d06743ae10 100644 --- a/test/e2e/pod_rm_test.go +++ b/test/e2e/pod_rm_test.go @@ -215,10 +215,8 @@ var _ = Describe("Podman pod rm", func() { }) It("podman pod start/remove single pod via --pod-id-file", func() { - tmpDir, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) + tmpDir := GinkgoT().TempDir() tmpFile := tmpDir + "podID" - defer os.RemoveAll(tmpDir) podName := "rudolph" @@ -244,9 +242,7 @@ var _ = Describe("Podman pod rm", func() { }) It("podman pod start/remove multiple pods via --pod-id-file", func() { - tmpDir, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) - defer os.RemoveAll(tmpDir) + tmpDir := GinkgoT().TempDir() podIDFiles := []string{} for _, i := range "0123456789" { diff --git a/test/e2e/pod_start_test.go b/test/e2e/pod_start_test.go index b04d5a1196..dd4be832dd 100644 --- a/test/e2e/pod_start_test.go +++ b/test/e2e/pod_start_test.go @@ -153,10 +153,8 @@ var _ = Describe("Podman pod start", func() { }) It("podman pod start single pod via --pod-id-file", func() { - tmpDir, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) + tmpDir := GinkgoT().TempDir() tmpFile := tmpDir + "podID" - defer os.RemoveAll(tmpDir) podName := "rudolph" @@ -177,9 +175,7 @@ var _ = Describe("Podman pod start", func() { }) It("podman pod start multiple pods via --pod-id-file", func() { - tmpDir, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) - defer os.RemoveAll(tmpDir) + tmpDir := GinkgoT().TempDir() podIDFiles := []string{} for _, i := range "0123456789" { @@ -209,10 +205,8 @@ var _ = Describe("Podman pod start", func() { }) It("podman pod create --infra-conmon-pod create + start", func() { - tmpDir, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) + tmpDir := GinkgoT().TempDir() tmpFile := tmpDir + "podID" - defer os.RemoveAll(tmpDir) podName := "rudolph" // Create a pod with --infra-conmon-pid. diff --git a/test/e2e/pod_stop_test.go b/test/e2e/pod_stop_test.go index 9739078f2e..6025ea5966 100644 --- a/test/e2e/pod_stop_test.go +++ b/test/e2e/pod_stop_test.go @@ -1,8 +1,6 @@ package integration import ( - "os" - . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" . "github.com/onsi/gomega/gexec" @@ -158,10 +156,8 @@ var _ = Describe("Podman pod stop", func() { }) It("podman pod start/stop single pod via --pod-id-file", func() { - tmpDir, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) + tmpDir := GinkgoT().TempDir() tmpFile := tmpDir + "podID" - defer os.RemoveAll(tmpDir) podName := "rudolph" @@ -187,9 +183,7 @@ var _ = Describe("Podman pod stop", func() { }) It("podman pod start/stop multiple pods via --pod-id-file", func() { - tmpDir, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) - defer os.RemoveAll(tmpDir) + tmpDir := GinkgoT().TempDir() podIDFiles := []string{} for _, i := range "0123456789" { diff --git a/test/e2e/restart_test.go b/test/e2e/restart_test.go index 3986476705..4e5e801989 100644 --- a/test/e2e/restart_test.go +++ b/test/e2e/restart_test.go @@ -2,7 +2,6 @@ package integration import ( "fmt" - "os" "time" . "github.com/containers/podman/v4/test/utils" @@ -229,12 +228,9 @@ var _ = Describe("Podman restart", func() { }) It("podman restart --cidfile", func() { - tmpDir, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) + tmpDir := GinkgoT().TempDir() tmpFile := tmpDir + "cid" - defer os.RemoveAll(tmpDir) - session := podmanTest.Podman([]string{"create", "--cidfile", tmpFile, ALPINE, "top"}) session.WaitWithDefaultTimeout() Expect(session).Should(Exit(0)) @@ -252,13 +248,10 @@ var _ = Describe("Podman restart", func() { }) It("podman restart multiple --cidfile", func() { - tmpDir, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) + tmpDir := GinkgoT().TempDir() tmpFile1 := tmpDir + "cid-1" tmpFile2 := tmpDir + "cid-2" - defer os.RemoveAll(tmpDir) - session := podmanTest.Podman([]string{"run", "--cidfile", tmpFile1, "-d", ALPINE, "top"}) session.WaitWithDefaultTimeout() Expect(session).Should(Exit(0)) diff --git a/test/e2e/rm_test.go b/test/e2e/rm_test.go index b4b5b17ef9..4f8f354eae 100644 --- a/test/e2e/rm_test.go +++ b/test/e2e/rm_test.go @@ -2,7 +2,6 @@ package integration import ( "fmt" - "os" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" @@ -122,12 +121,9 @@ var _ = Describe("Podman rm", func() { }) It("podman rm --cidfile", func() { - tmpDir, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) + tmpDir := GinkgoT().TempDir() tmpFile := tmpDir + "cid" - defer os.RemoveAll(tmpDir) - session := podmanTest.Podman([]string{"create", "--cidfile", tmpFile, ALPINE, "ls"}) session.WaitWithDefaultTimeout() Expect(session).Should(Exit(0)) @@ -143,13 +139,10 @@ var _ = Describe("Podman rm", func() { }) It("podman rm multiple --cidfile", func() { - tmpDir, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) + tmpDir := GinkgoT().TempDir() tmpFile1 := tmpDir + "cid-1" tmpFile2 := tmpDir + "cid-2" - defer os.RemoveAll(tmpDir) - session := podmanTest.Podman([]string{"create", "--cidfile", tmpFile1, ALPINE, "ls"}) session.WaitWithDefaultTimeout() Expect(session).Should(Exit(0)) diff --git a/test/e2e/stop_test.go b/test/e2e/stop_test.go index 38e38b9da0..10c3de406f 100644 --- a/test/e2e/stop_test.go +++ b/test/e2e/stop_test.go @@ -2,7 +2,6 @@ package integration import ( "fmt" - "os" "strings" . "github.com/onsi/ginkgo/v2" @@ -258,13 +257,9 @@ var _ = Describe("Podman stop", func() { }) It("podman stop --cidfile", func() { - - tmpDir, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) + tmpDir := GinkgoT().TempDir() tmpFile := tmpDir + "cid" - defer os.RemoveAll(tmpDir) - session := podmanTest.Podman([]string{"create", "--cidfile", tmpFile, ALPINE, "top"}) session.WaitWithDefaultTimeout() Expect(session).Should(Exit(0)) @@ -282,14 +277,10 @@ var _ = Describe("Podman stop", func() { }) It("podman stop multiple --cidfile", func() { - - tmpDir, err := os.MkdirTemp("", "") - Expect(err).ToNot(HaveOccurred()) + tmpDir := GinkgoT().TempDir() tmpFile1 := tmpDir + "cid-1" tmpFile2 := tmpDir + "cid-2" - defer os.RemoveAll(tmpDir) - session := podmanTest.Podman([]string{"run", "--cidfile", tmpFile1, "-d", ALPINE, "top"}) session.WaitWithDefaultTimeout() Expect(session).Should(Exit(0))