| // +build !windows |
| |
| package main |
| |
| import ( |
| "encoding/json" |
| "fmt" |
| "net/http" |
| |
| "github.com/docker/docker/api/types" |
| "github.com/docker/docker/integration-cli/checker" |
| "github.com/docker/docker/integration-cli/request" |
| "github.com/go-check/check" |
| ) |
| |
| func (s *DockerSuite) TestAPIStatsContainerGetMemoryLimit(c *check.C) { |
| testRequires(c, DaemonIsLinux, memoryLimitSupport) |
| |
| resp, body, err := request.Get("/info", request.JSON) |
| c.Assert(err, checker.IsNil) |
| c.Assert(resp.StatusCode, checker.Equals, http.StatusOK) |
| var info types.Info |
| err = json.NewDecoder(body).Decode(&info) |
| c.Assert(err, checker.IsNil) |
| body.Close() |
| |
| // don't set a memory limit, the memory limit should be system memory |
| conName := "foo" |
| dockerCmd(c, "run", "-d", "--name", conName, "busybox", "top") |
| c.Assert(waitRun(conName), checker.IsNil) |
| |
| resp, body, err = request.Get(fmt.Sprintf("/containers/%s/stats?stream=false", conName)) |
| c.Assert(err, checker.IsNil) |
| c.Assert(resp.StatusCode, checker.Equals, http.StatusOK) |
| c.Assert(resp.Header.Get("Content-Type"), checker.Equals, "application/json") |
| |
| var v *types.Stats |
| err = json.NewDecoder(body).Decode(&v) |
| c.Assert(err, checker.IsNil) |
| body.Close() |
| c.Assert(fmt.Sprintf("%d", v.MemoryStats.Limit), checker.Equals, fmt.Sprintf("%d", info.MemTotal)) |
| } |