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  })