diff --git a/integration-cli/docker_cli_run_test.go b/integration-cli/docker_cli_run_test.go index 97b8658e21b58c77b6556fcc91b4bb3c9ea70e9c..1eeac67101d9337d1866677d3327b9b0f02ca78a 100644 --- a/integration-cli/docker_cli_run_test.go +++ b/integration-cli/docker_cli_run_test.go @@ -2883,6 +2883,7 @@ func (s *DockerSuite) TestRunAllowPortRangeThroughPublish(c *check.C) { } func (s *DockerSuite) TestRunOOMExitCode(c *check.C) { + testRequires(c, OomControl) errChan := make(chan error) go func() { defer close(errChan) diff --git a/integration-cli/requirements.go b/integration-cli/requirements.go index ff143600429b43a66713d304e660bed608095a28..8848679d45bb83bcbc4a6ff07141b38c4c5a0caa 100644 --- a/integration-cli/requirements.go +++ b/integration-cli/requirements.go @@ -7,8 +7,10 @@ import ( "log" "net/http" "os/exec" + "path" "strings" + "github.com/docker/libcontainer/cgroups" "github.com/go-check/check" ) @@ -107,6 +109,24 @@ var ( }, "Test requires support for IPv6", } + OomControl = TestRequirement{ + func() bool { + cgroupMemoryMountpoint, err := cgroups.FindCgroupMountpoint("memory") + if err != nil { + return false + } + if _, err := ioutil.ReadFile(path.Join(cgroupMemoryMountpoint, "memory.memsw.limit_in_bytes")); err != nil { + return false + } + + if _, err = ioutil.ReadFile(path.Join(cgroupMemoryMountpoint, "memory.oom_control")); err != nil { + return false + } + return true + + }, + "Test requires Oom control enabled.", + } ) // testRequires checks if the environment satisfies the requirements