From 4960a17a56523c0c022992e841262f89312db694 Mon Sep 17 00:00:00 2001 From: Cosmin Tupangiu Date: Mon, 23 May 2022 10:33:12 +0200 Subject: fix tests by randomize the device folder name e2e tests tends to fail when running with multiple nodes because the same device folder name is used accross all nodes Signed-off-by: Cosmin Tupangiu --- test/e2e/play_kube_test.go | 52 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 16 deletions(-) (limited to 'test/e2e') diff --git a/test/e2e/play_kube_test.go b/test/e2e/play_kube_test.go index 161813194..31044f68b 100644 --- a/test/e2e/play_kube_test.go +++ b/test/e2e/play_kube_test.go @@ -21,6 +21,7 @@ import ( "github.com/containers/podman/v4/pkg/util" . "github.com/containers/podman/v4/test/utils" "github.com/containers/storage/pkg/stringid" + "github.com/google/uuid" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/onsi/gomega/format" @@ -3687,12 +3688,17 @@ ENV OPENJ9_JAVA_OPTIONS=%q }) // Check the block devices are exposed inside container - It("podman play kube expose block device inside container", func() { + It("ddpodman play kube expose block device inside container", func() { SkipIfRootless("It needs root access to create devices") - Expect(os.MkdirAll("/dev/foodevdir", os.ModePerm)).To(BeNil()) - defer os.RemoveAll("/dev/foodevdir") - devicePath := "/dev/foodevdir/blockdevice" + // randomize the folder name to avoid error when running tests with multiple nodes + uuid, err := uuid.NewUUID() + Expect(err).To(BeNil()) + devFolder := fmt.Sprintf("/dev/foodev%x", uuid[:6]) + Expect(os.MkdirAll(devFolder, os.ModePerm)).To(BeNil()) + defer os.RemoveAll(devFolder) + + devicePath := fmt.Sprintf("%s/blockdevice", devFolder) mknod := SystemExec("mknod", []string{devicePath, "b", "7", "0"}) mknod.WaitWithDefaultTimeout() Expect(mknod).Should(Exit(0)) @@ -3721,12 +3727,17 @@ ENV OPENJ9_JAVA_OPTIONS=%q }) // Check the char devices are exposed inside container - It("podman play kube expose character device inside container", func() { + It("ddpodman play kube expose character device inside container", func() { SkipIfRootless("It needs root access to create devices") - Expect(os.MkdirAll("/dev/foodevdir", os.ModePerm)).To(BeNil()) - defer os.RemoveAll("/dev/foodevdir") - devicePath := "/dev/foodevdir/chardevice" + // randomize the folder name to avoid error when running tests with multiple nodes + uuid, err := uuid.NewUUID() + Expect(err).To(BeNil()) + devFolder := fmt.Sprintf("/dev/foodev%x", uuid[:6]) + Expect(os.MkdirAll(devFolder, os.ModePerm)).To(BeNil()) + defer os.RemoveAll(devFolder) + + devicePath := fmt.Sprintf("%s/chardevice", devFolder) mknod := SystemExec("mknod", []string{devicePath, "c", "3", "1"}) mknod.WaitWithDefaultTimeout() Expect(mknod).Should(Exit(0)) @@ -3770,12 +3781,17 @@ ENV OPENJ9_JAVA_OPTIONS=%q Expect(kube).Should(Exit(125)) }) - It("podman play kube reports error when we try to expose char device as block device", func() { + It("ddpodman play kube reports error when we try to expose char device as block device", func() { SkipIfRootless("It needs root access to create devices") - Expect(os.MkdirAll("/dev/foodevdir", os.ModePerm)).To(BeNil()) - defer os.RemoveAll("/dev/foodevdir") - devicePath := "/dev/foodevdir/chardevice" + // randomize the folder name to avoid error when running tests with multiple nodes + uuid, err := uuid.NewUUID() + Expect(err).To(BeNil()) + devFolder := fmt.Sprintf("/dev/foodev%x", uuid[:6]) + Expect(os.MkdirAll(devFolder, os.ModePerm)).To(BeNil()) + defer os.RemoveAll(devFolder) + + devicePath := fmt.Sprintf("%s/chardevice", devFolder) mknod := SystemExec("mknod", []string{devicePath, "c", "3", "1"}) mknod.WaitWithDefaultTimeout() Expect(mknod).Should(Exit(0)) @@ -3791,12 +3807,16 @@ ENV OPENJ9_JAVA_OPTIONS=%q Expect(kube).Should(Exit(125)) }) - It("podman play kube reports error when we try to expose block device as char device", func() { + It("ddpodman play kube reports error when we try to expose block device as char device", func() { SkipIfRootless("It needs root access to create devices") - Expect(os.MkdirAll("/dev/foodevdir", os.ModePerm)).To(BeNil()) - defer os.RemoveAll("/dev/foodevdir") - devicePath := "/dev/foodevdir/blockdevice" + // randomize the folder name to avoid error when running tests with multiple nodes + uuid, err := uuid.NewUUID() + Expect(err).To(BeNil()) + devFolder := fmt.Sprintf("/dev/foodev%x", uuid[:6]) + Expect(os.MkdirAll(devFolder, os.ModePerm)).To(BeNil()) + + devicePath := fmt.Sprintf("%s/blockdevice", devFolder) mknod := SystemExec("mknod", []string{devicePath, "b", "7", "0"}) mknod.WaitWithDefaultTimeout() Expect(mknod).Should(Exit(0)) -- cgit v1.2.3-54-g00ecf