mirror of
https://github.com/clearlinux/docker.git
synced 2026-09-05 13:11:30 +00:00
Merge pull request #16159 from runcom/validate-cpuset-cpus
Validate --cpuset-cpus, --cpuset-mems
This commit is contained in:
@@ -1525,3 +1525,29 @@ func (s *DockerSuite) TestContainersApiGetContainersJSONEmpty(c *check.C) {
|
||||
c.Fatalf("Expected empty response to be `[]`, got %q", string(body))
|
||||
}
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestPostContainersCreateWithWrongCpusetValues(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
|
||||
c1 := struct {
|
||||
Image string
|
||||
CpusetCpus string
|
||||
}{"busybox", "1-42,,"}
|
||||
name := "wrong-cpuset-cpus"
|
||||
status, body, err := sockRequest("POST", "/containers/create?name="+name, c1)
|
||||
c.Assert(err, check.IsNil)
|
||||
c.Assert(status, check.Equals, http.StatusInternalServerError)
|
||||
expected := "Invalid value 1-42,, for cpuset cpus.\n"
|
||||
c.Assert(string(body), check.Equals, expected, check.Commentf("Expected output to contain %q, got %q", expected, string(body)))
|
||||
|
||||
c2 := struct {
|
||||
Image string
|
||||
CpusetMems string
|
||||
}{"busybox", "42-3,1--"}
|
||||
name = "wrong-cpuset-mems"
|
||||
status, body, err = sockRequest("POST", "/containers/create?name="+name, c2)
|
||||
c.Assert(err, check.IsNil)
|
||||
c.Assert(status, check.Equals, http.StatusInternalServerError)
|
||||
expected = "Invalid value 42-3,1-- for cpuset mems.\n"
|
||||
c.Assert(string(body), check.Equals, expected, check.Commentf("Expected output to contain %q, got %q", expected, string(body)))
|
||||
}
|
||||
|
||||
@@ -3407,3 +3407,17 @@ func (s *DockerSuite) TestRunStdinBlockedAfterContainerExit(c *check.C) {
|
||||
c.Fatal("timeout waiting for command to exit")
|
||||
}
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestRunWrongCpusetCpusFlagValue(c *check.C) {
|
||||
out, _, err := dockerCmdWithError("run", "--cpuset-cpus", "1-10,11--", "busybox", "true")
|
||||
c.Assert(err, check.NotNil)
|
||||
expected := "Error response from daemon: Invalid value 1-10,11-- for cpuset cpus.\n"
|
||||
c.Assert(out, check.Equals, expected, check.Commentf("Expected output to contain %q, got %q", expected, out))
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestRunWrongCpusetMemsFlagValue(c *check.C) {
|
||||
out, _, err := dockerCmdWithError("run", "--cpuset-mems", "1-42--", "busybox", "true")
|
||||
c.Assert(err, check.NotNil)
|
||||
expected := "Error response from daemon: Invalid value 1-42-- for cpuset mems.\n"
|
||||
c.Assert(out, check.Equals, expected, check.Commentf("Expected output to contain %q, got %q", expected, out))
|
||||
}
|
||||
|
||||
@@ -9,11 +9,14 @@ import (
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/docker/docker/pkg/integration/checker"
|
||||
"github.com/docker/docker/pkg/mount"
|
||||
"github.com/docker/docker/pkg/parsers"
|
||||
"github.com/docker/docker/pkg/sysinfo"
|
||||
"github.com/go-check/check"
|
||||
"github.com/kr/pty"
|
||||
)
|
||||
@@ -374,3 +377,41 @@ func (s *DockerSuite) TestRunSwapLessThanMemoryLimit(c *check.C) {
|
||||
c.Fatalf("Expected output to contain %q, not %q", out, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestRunInvalidCpusetCpusFlagValue(c *check.C) {
|
||||
testRequires(c, cgroupCpuset)
|
||||
|
||||
sysInfo := sysinfo.New(true)
|
||||
cpus, err := parsers.ParseUintList(sysInfo.Cpus)
|
||||
c.Assert(err, check.IsNil)
|
||||
var invalid int
|
||||
for i := 0; i <= len(cpus)+1; i++ {
|
||||
if !cpus[i] {
|
||||
invalid = i
|
||||
break
|
||||
}
|
||||
}
|
||||
out, _, err := dockerCmdWithError("run", "--cpuset-cpus", strconv.Itoa(invalid), "busybox", "true")
|
||||
c.Assert(err, check.NotNil)
|
||||
expected := fmt.Sprintf("Error response from daemon: Requested CPUs are not available - requested %s, available: %s.\n", strconv.Itoa(invalid), sysInfo.Cpus)
|
||||
c.Assert(out, check.Equals, expected, check.Commentf("Expected output to contain %q, got %q", expected, out))
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestRunInvalidCpusetMemsFlagValue(c *check.C) {
|
||||
testRequires(c, cgroupCpuset)
|
||||
|
||||
sysInfo := sysinfo.New(true)
|
||||
mems, err := parsers.ParseUintList(sysInfo.Mems)
|
||||
c.Assert(err, check.IsNil)
|
||||
var invalid int
|
||||
for i := 0; i <= len(mems)+1; i++ {
|
||||
if !mems[i] {
|
||||
invalid = i
|
||||
break
|
||||
}
|
||||
}
|
||||
out, _, err := dockerCmdWithError("run", "--cpuset-mems", strconv.Itoa(invalid), "busybox", "true")
|
||||
c.Assert(err, check.NotNil)
|
||||
expected := fmt.Sprintf("Error response from daemon: Requested memory nodes are not available - requested %s, available: %s.\n", strconv.Itoa(invalid), sysInfo.Mems)
|
||||
c.Assert(out, check.Equals, expected, check.Commentf("Expected output to contain %q, got %q", expected, out))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user