Jelajahi Sumber

Merge pull request #12822 from brahmaroutu/container_stop_api

restapi stop fails if ?t=int not present
David Calavera 10 tahun lalu
induk
melakukan
d78755d159
2 mengubah file dengan 20 tambahan dan 4 penghapusan
  1. 1 4
      api/server/server.go
  2. 19 0
      integration-cli/docker_api_containers_test.go

+ 1 - 4
api/server/server.go

@@ -1037,10 +1037,7 @@ func (s *Server) postContainersStop(version version.Version, w http.ResponseWrit
 		return fmt.Errorf("Missing parameter")
 	}
 
-	seconds, err := strconv.Atoi(r.Form.Get("t"))
-	if err != nil {
-		return err
-	}
+	seconds, _ := strconv.Atoi(r.Form.Get("t"))
 
 	if err := s.daemon.ContainerStop(vars["name"], seconds); err != nil {
 		if err.Error() == "Container already stopped" {

+ 19 - 0
integration-cli/docker_api_containers_test.go

@@ -1221,3 +1221,22 @@ func (s *DockerSuite) TestContainersApiChunkedEncoding(c *check.C) {
 		c.Fatalf("got incorrect bind spec, wanted %s, got: %s", expected, binds[0])
 	}
 }
+
+func (s *DockerSuite) TestPostContainerStop(c *check.C) {
+	runCmd := exec.Command(dockerBinary, "run", "-d", "busybox", "top")
+	out, _, err := runCommandWithOutput(runCmd)
+	c.Assert(err, check.IsNil)
+
+	containerID := strings.TrimSpace(out)
+	c.Assert(waitRun(containerID), check.IsNil)
+
+	statusCode, _, err := sockRequest("POST", "/containers/"+containerID+"/stop", nil)
+
+	// 204 No Content is expected, not 200
+	c.Assert(statusCode, check.Equals, http.StatusNoContent)
+	c.Assert(err, check.IsNil)
+
+	if err := waitInspect(containerID, "{{ .State.Running  }}", "false", 5); err != nil {
+		c.Fatal(err)
+	}
+}