From 9f3a343a5101ab661a6a97c9e149a0b11ccc320a Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Fri, 24 Aug 2018 14:37:26 -0700 Subject: [PATCH] integration-cli: fix TestAttachDetach, rm TestAttachDetachTruncatedID It looks like the logic of the test became wrong after commit ae0883c ("Move TestAttachDetach to integration-cli"). The original logic was: * (a few first steps skipped for clarity) * send escape sequence to "attach"; * check "attach" is exiting (i.e. escape sequence works); * check the container is still alive; * kill the container. Also, timeouts were big at that time, in the order of seconds. The logic after the above mentioned commit and until now is: * ... * send escape sequence to "attach"; * check the container is running (why shouldn't it?); * kill the container; * checks that the "attach" has exited. So, from the "let's check detach using escape sequence is working" the test became something like "let's check that attach is gone once we kill the container". Let's fix the above test, also increasing the timeout waiting for attach to exit (which fails from time to time on power CI). Now, the second test, TestAttachDetachTruncatedID, does the exact same thing, except it uses a truncated container ID. It does not seem to be of much value, so let's remove it. Signed-off-by: Kir Kolyshkin --- .../docker_cli_attach_unix_test.go | 66 ++----------------- 1 file changed, 4 insertions(+), 62 deletions(-) diff --git a/integration-cli/docker_cli_attach_unix_test.go b/integration-cli/docker_cli_attach_unix_test.go index 9affb944b1..e270fda9cb 100644 --- a/integration-cli/docker_cli_attach_unix_test.go +++ b/integration-cli/docker_cli_attach_unix_test.go @@ -10,7 +10,6 @@ import ( "time" "github.com/docker/docker/integration-cli/checker" - "github.com/docker/docker/pkg/stringid" "github.com/go-check/check" "github.com/kr/pty" ) @@ -146,7 +145,7 @@ func (s *DockerSuite) TestAttachDetach(c *check.C) { c.Assert(err, check.IsNil) out, err = bufio.NewReader(stdout).ReadString('\n') c.Assert(err, check.IsNil) - c.Assert(strings.TrimSpace(out), checker.Equals, "hello", check.Commentf("expected 'hello', got %q", out)) + c.Assert(strings.TrimSpace(out), checker.Equals, "hello") // escape sequence _, err = cpty.Write([]byte{16}) @@ -158,72 +157,15 @@ func (s *DockerSuite) TestAttachDetach(c *check.C) { ch := make(chan struct{}) go func() { cmd.Wait() - ch <- struct{}{} - }() - - running := inspectField(c, id, "State.Running") - c.Assert(running, checker.Equals, "true", check.Commentf("expected container to still be running")) - - go func() { - dockerCmdWithResult("kill", id) + close(ch) }() select { case <-ch: - case <-time.After(10 * time.Millisecond): + case <-time.After(1 * time.Second): c.Fatal("timed out waiting for container to exit") } -} - -// TestAttachDetachTruncatedID checks that attach in tty mode can be detached -func (s *DockerSuite) TestAttachDetachTruncatedID(c *check.C) { - out, _ := dockerCmd(c, "run", "-itd", "busybox", "cat") - id := stringid.TruncateID(strings.TrimSpace(out)) - c.Assert(waitRun(id), check.IsNil) - - cpty, tty, err := pty.Open() - c.Assert(err, checker.IsNil) - defer cpty.Close() - - cmd := exec.Command(dockerBinary, "attach", id) - cmd.Stdin = tty - stdout, err := cmd.StdoutPipe() - c.Assert(err, checker.IsNil) - defer stdout.Close() - err = cmd.Start() - c.Assert(err, checker.IsNil) - - _, err = cpty.Write([]byte("hello\n")) - c.Assert(err, checker.IsNil) - out, err = bufio.NewReader(stdout).ReadString('\n') - c.Assert(err, checker.IsNil) - c.Assert(strings.TrimSpace(out), checker.Equals, "hello", check.Commentf("expected 'hello', got %q", out)) - - // escape sequence - _, err = cpty.Write([]byte{16}) - c.Assert(err, checker.IsNil) - time.Sleep(100 * time.Millisecond) - _, err = cpty.Write([]byte{17}) - c.Assert(err, checker.IsNil) - - ch := make(chan struct{}) - go func() { - cmd.Wait() - ch <- struct{}{} - }() - running := inspectField(c, id, "State.Running") - c.Assert(running, checker.Equals, "true", check.Commentf("expected container to still be running")) - - go func() { - dockerCmdWithResult("kill", id) - }() - - select { - case <-ch: - case <-time.After(10 * time.Millisecond): - c.Fatal("timed out waiting for container to exit") - } - + c.Assert(running, checker.Equals, "true") // container should be running }