run different cgroup tests depending on conditions

when running podman's integration tests, we need to be able to understand
our environment because the podman command will differ as will the results.

there is no 100% way to know if we are in a container, but using a combination
of container= and checking /proc seemed reasonable for our test suite.  non of this
code is run in podman proper.

Signed-off-by: baude <bbaude@redhat.com>

Closes: #1441
Approved by: mheon
This commit is contained in:
baude
2018-09-11 14:53:22 -05:00
committed by Atomic Bot
parent 13ae41fbc2
commit 60e8e4fb2d
2 changed files with 25 additions and 1 deletions

View File

@ -727,3 +727,19 @@ func WriteJsonFile(data []byte, filePath string) error {
func getTestContext() context.Context {
return context.Background()
}
func containerized() bool {
container := os.Getenv("container")
if container != "" {
return true
}
b, err := ioutil.ReadFile("/proc/1/cgroup")
if err != nil {
// shrug, if we cannot read that file, return false
return false
}
if strings.Index(string(b), "docker") > -1 {
return true
}
return false
}

View File

@ -32,6 +32,9 @@ var _ = Describe("Podman run with --cgroup-parent", func() {
})
Specify("valid --cgroup-parent using cgroupfs", func() {
if !containerized() {
Skip("Must be containerized to run this test.")
}
cgroup := "/zzz"
run := podmanTest.Podman([]string{"run", "--cgroup-parent", cgroup, fedoraMinimal, "cat", "/proc/self/cgroup"})
run.WaitWithDefaultTimeout()
@ -42,6 +45,9 @@ var _ = Describe("Podman run with --cgroup-parent", func() {
Specify("no --cgroup-parent", func() {
cgroup := "/libpod_parent"
if !containerized() {
cgroup = "/machine.slice"
}
run := podmanTest.Podman([]string{"run", fedoraMinimal, "cat", "/proc/self/cgroup"})
run.WaitWithDefaultTimeout()
Expect(run.ExitCode()).To(Equal(0))
@ -50,7 +56,9 @@ var _ = Describe("Podman run with --cgroup-parent", func() {
})
Specify("valid --cgroup-parent using slice", func() {
Skip("Requires Systemd cgroup manager support")
if containerized() {
Skip("Requires Systemd cgroup manager support")
}
cgroup := "aaaa.slice"
run := podmanTest.Podman([]string{"run", "--cgroup-parent", cgroup, fedoraMinimal, "cat", "/proc/1/cgroup"})
run.WaitWithDefaultTimeout()