瀏覽代碼

Make docker ps --size show virtual size really work

Signed-off-by: Lei Jitang <leijitang@huawei.com>
Lei Jitang 10 年之前
父節點
當前提交
d0de2b1e2f
共有 2 個文件被更改,包括 16 次插入2 次删除
  1. 1 1
      daemon/container_linux.go
  2. 15 1
      integration-cli/docker_cli_ps_test.go

+ 1 - 1
daemon/container_linux.go

@@ -336,7 +336,7 @@ func (container *Container) GetSize() (int64, int64) {
 		sizeRw = -1
 		sizeRw = -1
 	}
 	}
 
 
-	if _, err = os.Stat(container.basefs); err != nil {
+	if _, err = os.Stat(container.basefs); err == nil {
 		if sizeRootfs, err = directory.Size(container.basefs); err != nil {
 		if sizeRootfs, err = directory.Size(container.basefs); err != nil {
 			sizeRootfs = -1
 			sizeRootfs = -1
 		}
 		}

+ 15 - 1
integration-cli/docker_cli_ps_test.go

@@ -304,7 +304,7 @@ func (s *DockerSuite) TestPsListContainersSize(c *check.C) {
 	}
 	}
 	expectedSize := fmt.Sprintf("%d B", (2 + baseBytes))
 	expectedSize := fmt.Sprintf("%d B", (2 + baseBytes))
 	foundSize := lines[1][sizeIndex:]
 	foundSize := lines[1][sizeIndex:]
-	if foundSize != expectedSize {
+	if !strings.Contains(foundSize, expectedSize) {
 		c.Fatalf("Expected size %q, got %q", expectedSize, foundSize)
 		c.Fatalf("Expected size %q, got %q", expectedSize, foundSize)
 	}
 	}
 
 
@@ -666,3 +666,17 @@ func (s *DockerSuite) TestPsGroupPortRange(c *check.C) {
 	}
 	}
 
 
 }
 }
+
+func (s *DockerSuite) TestPsWithSize(c *check.C) {
+	out, _, err := runCommandWithOutput(exec.Command(dockerBinary, "run", "-d", "--name", "sizetest", "busybox", "top"))
+	if err != nil {
+		c.Fatal(out, err)
+	}
+	out, _, err = runCommandWithOutput(exec.Command(dockerBinary, "ps", "--size"))
+	if err != nil {
+		c.Fatal(out, err)
+	}
+	if !strings.Contains(out, "virtual") {
+		c.Fatalf("docker ps with --size should show virtual size of container")
+	}
+}