فهرست منبع

Merge pull request #7079 from LK4D4/state_tests

Tests on container state changing
Victor Vieux 11 سال پیش
والد
کامیت
615f211084
1فایلهای تغییر یافته به همراه66 افزوده شده و 0 حذف شده
  1. 66 0
      integration-cli/docker_cli_run_test.go

+ 66 - 0
integration-cli/docker_cli_run_test.go

@@ -1295,3 +1295,69 @@ func TestAttachStdOutAndErrTTYMode(t *testing.T) {
 
 	logDone("run - Attach stderr and stdout with -t")
 }
+
+func TestState(t *testing.T) {
+	defer deleteAllContainers()
+	cmd := exec.Command(dockerBinary, "run", "-d", "busybox", "top")
+
+	out, _, err := runCommandWithOutput(cmd)
+	if err != nil {
+		t.Fatal(err, out)
+	}
+	id := strings.TrimSpace(out)
+	state, err := inspectField(id, "State.Running")
+	if err != nil {
+		t.Fatal(err)
+	}
+	if state != "true" {
+		t.Fatal("Container state is 'not running'")
+	}
+	pid1, err := inspectField(id, "State.Pid")
+	if err != nil {
+		t.Fatal(err)
+	}
+	if pid1 == "0" {
+		t.Fatal("Container state Pid 0")
+	}
+
+	cmd = exec.Command(dockerBinary, "stop", id)
+	out, _, err = runCommandWithOutput(cmd)
+	if err != nil {
+		t.Fatal(err, out)
+	}
+	state, err = inspectField(id, "State.Running")
+	if err != nil {
+		t.Fatal(err)
+	}
+	if state != "false" {
+		t.Fatal("Container state is 'running'")
+	}
+	pid2, err := inspectField(id, "State.Pid")
+	if err != nil {
+		t.Fatal(err)
+	}
+	if pid2 == pid1 {
+		t.Fatalf("Container state Pid %s, but expected %s", pid2, pid1)
+	}
+
+	cmd = exec.Command(dockerBinary, "start", id)
+	out, _, err = runCommandWithOutput(cmd)
+	if err != nil {
+		t.Fatal(err, out)
+	}
+	state, err = inspectField(id, "State.Running")
+	if err != nil {
+		t.Fatal(err)
+	}
+	if state != "true" {
+		t.Fatal("Container state is 'not running'")
+	}
+	pid3, err := inspectField(id, "State.Pid")
+	if err != nil {
+		t.Fatal(err)
+	}
+	if pid3 == pid1 {
+		t.Fatalf("Container state Pid %s, but expected %s", pid2, pid1)
+	}
+	logDone("run - test container state.")
+}