From d0af5df893816811609d57f362cc523ef36a392a Mon Sep 17 00:00:00 2001 From: Ed Santiago Date: Wed, 21 Jun 2023 12:01:15 -0600 Subject: [PATCH] e2e: use parallel-safe /dev subdirectories Replace /dev/foodevdir with unique paths, to avoid one test's RemoveAll() from stepping on another test. Closes: #18958 Signed-off-by: Ed Santiago --- test/e2e/pod_create_test.go | 10 ++++++---- test/e2e/run_device_test.go | 10 ++++++---- test/e2e/run_privileged_test.go | 9 ++++++--- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/test/e2e/pod_create_test.go b/test/e2e/pod_create_test.go index 40b4fc4dc5..3967bd3458 100644 --- a/test/e2e/pod_create_test.go +++ b/test/e2e/pod_create_test.go @@ -876,15 +876,17 @@ ENTRYPOINT ["sleep","99999"] It("podman pod create --device", func() { SkipIfRootless("Cannot create devices in /dev in rootless mode") - Expect(os.MkdirAll("/dev/foodevdir", os.ModePerm)).To(Succeed()) - defer os.RemoveAll("/dev/foodevdir") + // path must be unique to this test, not used anywhere else + devdir := "/dev/devdirpodcreate" + Expect(os.MkdirAll(devdir, os.ModePerm)).To(Succeed()) + defer os.RemoveAll(devdir) - mknod := SystemExec("mknod", []string{"/dev/foodevdir/null", "c", "1", "3"}) + mknod := SystemExec("mknod", []string{devdir + "/null", "c", "1", "3"}) mknod.WaitWithDefaultTimeout() Expect(mknod).Should(Exit(0)) podName := "testPod" - session := podmanTest.Podman([]string{"pod", "create", "--device", "/dev/foodevdir:/dev/bar", "--name", podName}) + session := podmanTest.Podman([]string{"pod", "create", "--device", devdir + ":/dev/bar", "--name", podName}) session.WaitWithDefaultTimeout() Expect(session).Should(Exit(0)) session = podmanTest.Podman([]string{"run", "-q", "--pod", podName, ALPINE, "stat", "-c%t:%T", "/dev/bar/null"}) diff --git a/test/e2e/run_device_test.go b/test/e2e/run_device_test.go index aa8beeb2e6..4db2c375e4 100644 --- a/test/e2e/run_device_test.go +++ b/test/e2e/run_device_test.go @@ -72,14 +72,16 @@ var _ = Describe("Podman run device", func() { It("podman run device host device and container device parameter are directories", func() { SkipIfRootless("Cannot create devices in /dev in rootless mode") - Expect(os.MkdirAll("/dev/foodevdir", os.ModePerm)).To(Succeed()) - defer os.RemoveAll("/dev/foodevdir") + // path must be unique to this test, not used anywhere else + devdir := "/dev/devdirrundevice" + Expect(os.MkdirAll(devdir, os.ModePerm)).To(Succeed()) + defer os.RemoveAll(devdir) - mknod := SystemExec("mknod", []string{"/dev/foodevdir/null", "c", "1", "3"}) + mknod := SystemExec("mknod", []string{devdir + "/null", "c", "1", "3"}) mknod.WaitWithDefaultTimeout() Expect(mknod).Should(Exit(0)) - session := podmanTest.Podman([]string{"run", "-q", "--device", "/dev/foodevdir:/dev/bar", ALPINE, "stat", "-c%t:%T", "/dev/bar/null"}) + session := podmanTest.Podman([]string{"run", "-q", "--device", devdir + ":/dev/bar", ALPINE, "stat", "-c%t:%T", "/dev/bar/null"}) session.WaitWithDefaultTimeout() Expect(session).Should(Exit(0)) Expect(session.OutputToString()).To(Equal("1:3")) diff --git a/test/e2e/run_privileged_test.go b/test/e2e/run_privileged_test.go index 426dc52960..591a8e48e9 100644 --- a/test/e2e/run_privileged_test.go +++ b/test/e2e/run_privileged_test.go @@ -113,9 +113,12 @@ var _ = Describe("Podman privileged container tests", func() { It("podman privileged should restart after host devices change", func() { containerName := "privileged-restart-test" SkipIfRootless("Cannot create devices in /dev in rootless mode") - Expect(os.MkdirAll("/dev/foodevdir", os.ModePerm)).To(Succeed()) + // path must be unique to this test, not used anywhere else + devdir := "/dev/devdirprivrestart" + Expect(os.MkdirAll(devdir, os.ModePerm)).To(Succeed()) + defer os.RemoveAll(devdir) - mknod := SystemExec("mknod", []string{"/dev/foodevdir/null", "c", "1", "3"}) + mknod := SystemExec("mknod", []string{devdir + "/null", "c", "1", "3"}) mknod.WaitWithDefaultTimeout() Expect(mknod).Should(Exit(0)) @@ -125,7 +128,7 @@ var _ = Describe("Podman privileged container tests", func() { deviceFiles := session.OutputToStringArray() - os.RemoveAll("/dev/foodevdir") + os.RemoveAll(devdir) session = podmanTest.Podman([]string{"start", "--attach", containerName}) session.WaitWithDefaultTimeout() Expect(session).Should(Exit(0))