Merge pull request #21092 from WeiZhang555/fix-21064-detach-keys
Client print error when specify wrong detach keys Upstream-commit: 5709f8e4227e0e1da333739c44003a3f47279bd5 Component: engine
This commit is contained in:
@@ -67,11 +67,18 @@ func (s *DockerSuite) TestGetContainersAttachWebsocket(c *check.C) {
|
||||
|
||||
// regression gh14320
|
||||
func (s *DockerSuite) TestPostContainersAttachContainerNotFound(c *check.C) {
|
||||
status, body, err := sockRequest("POST", "/containers/doesnotexist/attach", nil)
|
||||
c.Assert(status, checker.Equals, http.StatusNotFound)
|
||||
req, client, err := newRequestClient("POST", "/containers/doesnotexist/attach", nil, "")
|
||||
c.Assert(err, checker.IsNil)
|
||||
expected := "No such container: doesnotexist\n"
|
||||
c.Assert(string(body), checker.Contains, expected)
|
||||
|
||||
resp, err := client.Do(req)
|
||||
// connection will shutdown, err should be "persistent connection closed"
|
||||
c.Assert(err, checker.NotNil) // Server shutdown connection
|
||||
|
||||
body, err := readBody(resp.Body)
|
||||
c.Assert(err, checker.IsNil)
|
||||
c.Assert(resp.StatusCode, checker.Equals, http.StatusNotFound)
|
||||
expected := "No such container: doesnotexist\r\n"
|
||||
c.Assert(string(body), checker.Equals, expected)
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestGetContainersWsAttachContainerNotFound(c *check.C) {
|
||||
|
||||
@@ -197,6 +197,38 @@ func (s *DockerSuite) TestRunAttachDetachFromFlag(c *check.C) {
|
||||
c.Assert(running, checker.Equals, "true", check.Commentf("expected container to still be running"))
|
||||
}
|
||||
|
||||
// TestRunDetach checks attaching and detaching with the escape sequence specified via flags.
|
||||
func (s *DockerSuite) TestRunAttachDetachFromInvalidFlag(c *check.C) {
|
||||
name := "attach-detach"
|
||||
dockerCmd(c, "run", "--name", name, "-itd", "busybox", "top")
|
||||
c.Assert(waitRun(name), check.IsNil)
|
||||
|
||||
// specify an invalid detach key, container will ignore it and use default
|
||||
cmd := exec.Command(dockerBinary, "attach", "--detach-keys='ctrl-A,a'", name)
|
||||
stdout, err := cmd.StdoutPipe()
|
||||
if err != nil {
|
||||
c.Fatal(err)
|
||||
}
|
||||
cpty, tty, err := pty.Open()
|
||||
if err != nil {
|
||||
c.Fatal(err)
|
||||
}
|
||||
defer cpty.Close()
|
||||
cmd.Stdin = tty
|
||||
if err := cmd.Start(); err != nil {
|
||||
c.Fatal(err)
|
||||
}
|
||||
|
||||
bufReader := bufio.NewReader(stdout)
|
||||
out, err := bufReader.ReadString('\n')
|
||||
if err != nil {
|
||||
c.Fatal(err)
|
||||
}
|
||||
// it should print a warning to indicate the detach key flag is invalid
|
||||
errStr := "Invalid escape keys (ctrl-A,a) provided"
|
||||
c.Assert(strings.TrimSpace(out), checker.Equals, errStr)
|
||||
}
|
||||
|
||||
// TestRunDetach checks attaching and detaching with the escape sequence specified via config file.
|
||||
func (s *DockerSuite) TestRunAttachDetachFromConfig(c *check.C) {
|
||||
keyCtrlA := []byte{1}
|
||||
|
||||
Reference in New Issue
Block a user