github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/test/e2e/run_device_test.go (about) 1 // +build !remoteclient 2 3 package integration 4 5 import ( 6 "os" 7 8 . "github.com/containers/libpod/test/utils" 9 . "github.com/onsi/ginkgo" 10 . "github.com/onsi/gomega" 11 ) 12 13 var _ = Describe("Podman run device", func() { 14 var ( 15 tempdir string 16 err error 17 podmanTest *PodmanTestIntegration 18 ) 19 20 BeforeEach(func() { 21 tempdir, err = CreateTempDirInTempDir() 22 if err != nil { 23 os.Exit(1) 24 } 25 podmanTest = PodmanTestCreate(tempdir) 26 podmanTest.Setup() 27 podmanTest.SeedImages() 28 }) 29 30 AfterEach(func() { 31 podmanTest.Cleanup() 32 f := CurrentGinkgoTestDescription() 33 processTestResult(f) 34 35 }) 36 37 It("podman run bad device test", func() { 38 session := podmanTest.Podman([]string{"run", "-q", "--device", "/dev/baddevice", ALPINE, "true"}) 39 session.WaitWithDefaultTimeout() 40 Expect(session).To(ExitWithError()) 41 }) 42 43 It("podman run device test", func() { 44 session := podmanTest.Podman([]string{"run", "-q", "--security-opt", "label=disable", "--device", "/dev/kmsg", ALPINE, "ls", "--color=never", "/dev/kmsg"}) 45 session.WaitWithDefaultTimeout() 46 Expect(session.ExitCode()).To(Equal(0)) 47 Expect(session.OutputToString()).To(Equal("/dev/kmsg")) 48 }) 49 50 It("podman run device rename test", func() { 51 session := podmanTest.Podman([]string{"run", "-q", "--security-opt", "label=disable", "--device", "/dev/kmsg:/dev/kmsg1", ALPINE, "ls", "--color=never", "/dev/kmsg1"}) 52 session.WaitWithDefaultTimeout() 53 Expect(session.ExitCode()).To(Equal(0)) 54 Expect(session.OutputToString()).To(Equal("/dev/kmsg1")) 55 }) 56 57 It("podman run device permission test", func() { 58 session := podmanTest.Podman([]string{"run", "-q", "--security-opt", "label=disable", "--device", "/dev/kmsg:r", ALPINE, "ls", "--color=never", "/dev/kmsg"}) 59 session.WaitWithDefaultTimeout() 60 Expect(session.ExitCode()).To(Equal(0)) 61 Expect(session.OutputToString()).To(Equal("/dev/kmsg")) 62 }) 63 64 It("podman run device rename and permission test", func() { 65 session := podmanTest.Podman([]string{"run", "-q", "--security-opt", "label=disable", "--device", "/dev/kmsg:/dev/kmsg1:r", ALPINE, "ls", "--color=never", "/dev/kmsg1"}) 66 session.WaitWithDefaultTimeout() 67 Expect(session.ExitCode()).To(Equal(0)) 68 Expect(session.OutputToString()).To(Equal("/dev/kmsg1")) 69 }) 70 It("podman run device rename and bad permission test", func() { 71 session := podmanTest.Podman([]string{"run", "-q", "--security-opt", "label=disable", "--device", "/dev/kmsg:/dev/kmsg1:rd", ALPINE, "ls", "--color=never", "/dev/kmsg1"}) 72 session.WaitWithDefaultTimeout() 73 Expect(session).To(ExitWithError()) 74 }) 75 76 It("podman run device host device and container device parameter are directories", func() { 77 SkipIfRootless() 78 SystemExec("mkdir", []string{"/dev/foodevdir"}) 79 SystemExec("mknod", []string{"/dev/foodevdir/null", "c", "1", "3"}) 80 session := podmanTest.Podman([]string{"run", "-q", "--device", "/dev/foodevdir:/dev/bar", ALPINE, "ls", "/dev/bar/null"}) 81 session.WaitWithDefaultTimeout() 82 Expect(session.ExitCode()).To(Equal(0)) 83 }) 84 85 It("podman run device host device with --privileged", func() { 86 if _, err := os.Stat("/dev/kvm"); err != nil { 87 Skip("/dev/kvm not available") 88 } 89 session := podmanTest.Podman([]string{"run", "--privileged", ALPINE, "ls", "/dev/kvm"}) 90 session.WaitWithDefaultTimeout() 91 Expect(session.ExitCode()).To(Equal(0)) 92 }) 93 })