github.com/tsuna/docker@v1.7.0-rc3/integration-cli/docker_api_stats_test.go (about) 1 package main 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "strings" 7 8 "github.com/docker/docker/api/types" 9 "github.com/go-check/check" 10 ) 11 12 func (s *DockerSuite) TestCliStatsNoStreamGetCpu(c *check.C) { 13 out, _ := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "while true;do echo 'Hello'; usleep 100000; done") 14 15 id := strings.TrimSpace(out) 16 err := waitRun(id) 17 c.Assert(err, check.IsNil) 18 19 resp, body, err := sockRequestRaw("GET", fmt.Sprintf("/containers/%s/stats?stream=false", id), nil, "") 20 c.Assert(err, check.IsNil) 21 c.Assert(resp.ContentLength > 0, check.Equals, true, check.Commentf("should not use chunked encoding")) 22 c.Assert(resp.Header.Get("Content-Type"), check.Equals, "application/json") 23 24 var v *types.Stats 25 err = json.NewDecoder(body).Decode(&v) 26 c.Assert(err, check.IsNil) 27 28 var cpuPercent = 0.0 29 cpuDelta := float64(v.CpuStats.CpuUsage.TotalUsage - v.PreCpuStats.CpuUsage.TotalUsage) 30 systemDelta := float64(v.CpuStats.SystemUsage - v.PreCpuStats.SystemUsage) 31 cpuPercent = (cpuDelta / systemDelta) * float64(len(v.CpuStats.CpuUsage.PercpuUsage)) * 100.0 32 if cpuPercent == 0 { 33 c.Fatalf("docker stats with no-stream get cpu usage failed: was %v", cpuPercent) 34 } 35 }