github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/test/e2e/run_cgroup_parent_test.go (about)

     1  package integration
     2  
     3  import (
     4  	"os"
     5  
     6  	. "github.com/containers/podman/v2/test/utils"
     7  	. "github.com/onsi/ginkgo"
     8  	. "github.com/onsi/gomega"
     9  )
    10  
    11  var _ = Describe("Podman run with --cgroup-parent", func() {
    12  	var (
    13  		tempdir    string
    14  		err        error
    15  		podmanTest *PodmanTestIntegration
    16  	)
    17  
    18  	BeforeEach(func() {
    19  		SkipIfRootlessCgroupsV1("cgroup parent is not supported in cgroups v1")
    20  		tempdir, err = CreateTempDirInTempDir()
    21  		if err != nil {
    22  			os.Exit(1)
    23  		}
    24  		podmanTest = PodmanTestCreate(tempdir)
    25  		podmanTest.Setup()
    26  		podmanTest.SeedImages()
    27  	})
    28  
    29  	AfterEach(func() {
    30  		podmanTest.Cleanup()
    31  		f := CurrentGinkgoTestDescription()
    32  		processTestResult(f)
    33  
    34  	})
    35  
    36  	Specify("valid --cgroup-parent using cgroupfs", func() {
    37  		if !Containerized() {
    38  			Skip("Must be containerized to run this test.")
    39  		}
    40  		cgroup := "/zzz"
    41  		run := podmanTest.Podman([]string{"run", "--cgroupns=host", "--cgroup-parent", cgroup, fedoraMinimal, "cat", "/proc/self/cgroup"})
    42  		run.WaitWithDefaultTimeout()
    43  		Expect(run.ExitCode()).To(Equal(0))
    44  		ok, _ := run.GrepString(cgroup)
    45  		Expect(ok).To(BeTrue())
    46  	})
    47  
    48  	Specify("no --cgroup-parent", func() {
    49  		SkipIfRootless("FIXME This seems to be broken in rootless mode")
    50  		cgroup := "/libpod_parent"
    51  		if !Containerized() && podmanTest.CgroupManager != "cgroupfs" {
    52  			cgroup = "/machine.slice"
    53  		}
    54  		run := podmanTest.Podman([]string{"run", "--cgroupns=host", fedoraMinimal, "cat", "/proc/self/cgroup"})
    55  		run.WaitWithDefaultTimeout()
    56  		Expect(run.ExitCode()).To(Equal(0))
    57  		ok, _ := run.GrepString(cgroup)
    58  		Expect(ok).To(BeTrue())
    59  	})
    60  
    61  	Specify("valid --cgroup-parent using slice", func() {
    62  		if Containerized() || podmanTest.CgroupManager == "cgroupfs" {
    63  			Skip("Requires Systemd cgroup manager support")
    64  		}
    65  		cgroup := "aaaa.slice"
    66  		run := podmanTest.Podman([]string{"run", "--cgroupns=host", "--cgroup-parent", cgroup, fedoraMinimal, "cat", "/proc/1/cgroup"})
    67  		run.WaitWithDefaultTimeout()
    68  		Expect(run.ExitCode()).To(Equal(0))
    69  		ok, _ := run.GrepString(cgroup)
    70  		Expect(ok).To(BeTrue())
    71  	})
    72  })