github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/test/e2e/run_ns_test.go (about) 1 // +build !remoteclient 2 3 package integration 4 5 import ( 6 "os" 7 "strings" 8 9 . "github.com/containers/libpod/test/utils" 10 . "github.com/onsi/ginkgo" 11 . "github.com/onsi/gomega" 12 ) 13 14 var _ = Describe("Podman run ns", func() { 15 var ( 16 tempdir string 17 err error 18 podmanTest *PodmanTestIntegration 19 ) 20 21 BeforeEach(func() { 22 tempdir, err = CreateTempDirInTempDir() 23 if err != nil { 24 os.Exit(1) 25 } 26 podmanTest = PodmanTestCreate(tempdir) 27 podmanTest.Setup() 28 podmanTest.SeedImages() 29 }) 30 31 AfterEach(func() { 32 podmanTest.Cleanup() 33 f := CurrentGinkgoTestDescription() 34 processTestResult(f) 35 36 }) 37 38 It("podman run pidns test", func() { 39 session := podmanTest.Podman([]string{"run", fedoraMinimal, "bash", "-c", "echo $$"}) 40 session.WaitWithDefaultTimeout() 41 Expect(session.ExitCode()).To(Equal(0)) 42 Expect(session.OutputToString()).To(Equal("1")) 43 44 session = podmanTest.Podman([]string{"run", "--pid=host", fedoraMinimal, "bash", "-c", "echo $$"}) 45 session.WaitWithDefaultTimeout() 46 Expect(session.ExitCode()).To(Equal(0)) 47 Expect(session.OutputToString()).To(Not(Equal("1"))) 48 49 session = podmanTest.Podman([]string{"run", "--pid=badpid", fedoraMinimal, "bash", "-c", "echo $$"}) 50 session.WaitWithDefaultTimeout() 51 Expect(session).To(ExitWithError()) 52 }) 53 54 It("podman run --cgroup private test", func() { 55 session := podmanTest.Podman([]string{"run", "--cgroupns=private", fedoraMinimal, "cat", "/proc/self/cgroup"}) 56 session.WaitWithDefaultTimeout() 57 Expect(session.ExitCode()).To(Equal(0)) 58 59 output := session.OutputToString() 60 Expect(output).ToNot(ContainSubstring("slice")) 61 }) 62 63 It("podman run ipcns test", func() { 64 setup := SystemExec("ls", []string{"--inode", "-d", "/dev/shm"}) 65 Expect(setup.ExitCode()).To(Equal(0)) 66 hostShm := setup.OutputToString() 67 68 session := podmanTest.Podman([]string{"run", "--ipc=host", fedoraMinimal, "ls", "--inode", "-d", "/dev/shm"}) 69 session.WaitWithDefaultTimeout() 70 Expect(session.ExitCode()).To(Equal(0)) 71 Expect(session.OutputToString()).To(Equal(hostShm)) 72 }) 73 74 It("podman run ipcns ipcmk host test", func() { 75 setup := SystemExec("ipcmk", []string{"-M", "1024"}) 76 Expect(setup.ExitCode()).To(Equal(0)) 77 output := strings.Split(setup.OutputToString(), " ") 78 ipc := output[len(output)-1] 79 session := podmanTest.Podman([]string{"run", "--ipc=host", fedoraMinimal, "ipcs", "-m", "-i", ipc}) 80 session.WaitWithDefaultTimeout() 81 Expect(session.ExitCode()).To(Equal(0)) 82 83 setup = SystemExec("ipcrm", []string{"-m", ipc}) 84 Expect(setup.ExitCode()).To(Equal(0)) 85 }) 86 87 It("podman run ipcns ipcmk container test", func() { 88 setup := podmanTest.Podman([]string{"run", "-d", "--name", "test1", fedoraMinimal, "sleep", "999"}) 89 setup.WaitWithDefaultTimeout() 90 Expect(setup.ExitCode()).To(Equal(0)) 91 92 session := podmanTest.Podman([]string{"exec", "test1", "ipcmk", "-M", "1024"}) 93 session.WaitWithDefaultTimeout() 94 Expect(session.ExitCode()).To(Equal(0)) 95 output := strings.Split(session.OutputToString(), " ") 96 ipc := output[len(output)-1] 97 session = podmanTest.Podman([]string{"run", "--ipc=container:test1", fedoraMinimal, "ipcs", "-m", "-i", ipc}) 98 session.WaitWithDefaultTimeout() 99 Expect(session.ExitCode()).To(Equal(0)) 100 }) 101 102 It("podman run bad ipc pid test", func() { 103 session := podmanTest.Podman([]string{"run", "--ipc=badpid", fedoraMinimal, "bash", "-c", "echo $$"}) 104 session.WaitWithDefaultTimeout() 105 Expect(session).To(ExitWithError()) 106 }) 107 })