mirror of
https://github.com/containers/podman.git
synced 2025-06-25 03:52:15 +08:00
Merge pull request #11561 from giuseppe/simplify-cgroups-disabled-test
tests: simplify --cgroups=disabled test and enable for rootless
This commit is contained in:
@ -11,6 +11,7 @@ import (
|
|||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/containers/podman/v3/pkg/cgroups"
|
||||||
. "github.com/containers/podman/v3/test/utils"
|
. "github.com/containers/podman/v3/test/utils"
|
||||||
"github.com/containers/storage/pkg/stringid"
|
"github.com/containers/storage/pkg/stringid"
|
||||||
"github.com/mrunalp/fileutils"
|
"github.com/mrunalp/fileutils"
|
||||||
@ -1323,35 +1324,36 @@ USER mail`, BB)
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("podman run with cgroups=disabled runs without cgroups", func() {
|
It("podman run with cgroups=disabled runs without cgroups", func() {
|
||||||
SkipIfRootless("FIXME: I believe this should work but need to fix this test")
|
|
||||||
SkipIfRootlessCgroupsV1("Disable cgroups not supported on cgroupv1 for rootless users")
|
SkipIfRootlessCgroupsV1("Disable cgroups not supported on cgroupv1 for rootless users")
|
||||||
// Only works on crun
|
// Only works on crun
|
||||||
if !strings.Contains(podmanTest.OCIRuntime, "crun") {
|
if !strings.Contains(podmanTest.OCIRuntime, "crun") {
|
||||||
Skip("Test only works on crun")
|
Skip("Test only works on crun")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ownsCgroup, err := cgroups.UserOwnsCurrentSystemdCgroup()
|
||||||
|
Expect(err).ShouldNot(HaveOccurred())
|
||||||
|
if !ownsCgroup {
|
||||||
|
// Podman moves itself to a new cgroup if it doesn't own the current cgroup
|
||||||
|
Skip("Test only works when Podman owns the current cgroup")
|
||||||
|
}
|
||||||
|
|
||||||
|
trim := func(i string) string {
|
||||||
|
return strings.TrimSuffix(i, "\n")
|
||||||
|
}
|
||||||
|
|
||||||
curCgroupsBytes, err := ioutil.ReadFile("/proc/self/cgroup")
|
curCgroupsBytes, err := ioutil.ReadFile("/proc/self/cgroup")
|
||||||
Expect(err).ShouldNot(HaveOccurred())
|
Expect(err).ShouldNot(HaveOccurred())
|
||||||
var curCgroups = string(curCgroupsBytes)
|
curCgroups := trim(string(curCgroupsBytes))
|
||||||
fmt.Printf("Output:\n%s\n", curCgroups)
|
fmt.Printf("Output:\n%s\n", curCgroups)
|
||||||
Expect(curCgroups).ToNot(Equal(""))
|
Expect(curCgroups).ToNot(Equal(""))
|
||||||
|
|
||||||
ctrName := "testctr"
|
container := podmanTest.Podman([]string{"run", "--cgroupns=host", "--cgroups=disabled", ALPINE, "cat", "/proc/self/cgroup"})
|
||||||
container := podmanTest.Podman([]string{"run", "--name", ctrName, "-d", "--cgroups=disabled", ALPINE, "top"})
|
|
||||||
container.WaitWithDefaultTimeout()
|
container.WaitWithDefaultTimeout()
|
||||||
Expect(container).Should(Exit(0))
|
Expect(container).Should(Exit(0))
|
||||||
|
|
||||||
// Get PID and get cgroups of that PID
|
ctrCgroups := trim(container.OutputToString())
|
||||||
inspectOut := podmanTest.InspectContainer(ctrName)
|
|
||||||
Expect(len(inspectOut)).To(Equal(1))
|
|
||||||
pid := inspectOut[0].State.Pid
|
|
||||||
Expect(pid).ToNot(Equal(0))
|
|
||||||
Expect(inspectOut[0].HostConfig.CgroupParent).To(Equal(""))
|
|
||||||
|
|
||||||
ctrCgroupsBytes, err := ioutil.ReadFile(fmt.Sprintf("/proc/%d/cgroup", pid))
|
|
||||||
Expect(err).ShouldNot(HaveOccurred())
|
|
||||||
var ctrCgroups = string(ctrCgroupsBytes)
|
|
||||||
fmt.Printf("Output\n:%s\n", ctrCgroups)
|
fmt.Printf("Output\n:%s\n", ctrCgroups)
|
||||||
|
|
||||||
Expect(ctrCgroups).To(Equal(curCgroups))
|
Expect(ctrCgroups).To(Equal(curCgroups))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user