github.com/OpenFlowLabs/moby@v17.12.1-ce-rc2+incompatible/integration-cli/docker_cli_pause_test.go (about) 1 package main 2 3 import ( 4 "strings" 5 "time" 6 7 "github.com/docker/docker/integration-cli/checker" 8 "github.com/docker/docker/integration-cli/cli" 9 "github.com/go-check/check" 10 ) 11 12 func (s *DockerSuite) TestPause(c *check.C) { 13 testRequires(c, IsPausable) 14 15 name := "testeventpause" 16 runSleepingContainer(c, "-d", "--name", name) 17 18 cli.DockerCmd(c, "pause", name) 19 pausedContainers := strings.Fields( 20 cli.DockerCmd(c, "ps", "-f", "status=paused", "-q", "-a").Combined(), 21 ) 22 c.Assert(len(pausedContainers), checker.Equals, 1) 23 24 cli.DockerCmd(c, "unpause", name) 25 26 out := cli.DockerCmd(c, "events", "--since=0", "--until", daemonUnixTime(c)).Combined() 27 events := strings.Split(strings.TrimSpace(out), "\n") 28 actions := eventActionsByIDAndType(c, events, name, "container") 29 30 c.Assert(actions[len(actions)-2], checker.Equals, "pause") 31 c.Assert(actions[len(actions)-1], checker.Equals, "unpause") 32 } 33 34 func (s *DockerSuite) TestPauseMultipleContainers(c *check.C) { 35 testRequires(c, IsPausable) 36 37 containers := []string{ 38 "testpausewithmorecontainers1", 39 "testpausewithmorecontainers2", 40 } 41 for _, name := range containers { 42 runSleepingContainer(c, "-d", "--name", name) 43 } 44 cli.DockerCmd(c, append([]string{"pause"}, containers...)...) 45 pausedContainers := strings.Fields( 46 cli.DockerCmd(c, "ps", "-f", "status=paused", "-q", "-a").Combined(), 47 ) 48 c.Assert(len(pausedContainers), checker.Equals, len(containers)) 49 50 cli.DockerCmd(c, append([]string{"unpause"}, containers...)...) 51 52 out := cli.DockerCmd(c, "events", "--since=0", "--until", daemonUnixTime(c)).Combined() 53 events := strings.Split(strings.TrimSpace(out), "\n") 54 55 for _, name := range containers { 56 actions := eventActionsByIDAndType(c, events, name, "container") 57 58 c.Assert(actions[len(actions)-2], checker.Equals, "pause") 59 c.Assert(actions[len(actions)-1], checker.Equals, "unpause") 60 } 61 } 62 63 func (s *DockerSuite) TestPauseFailsOnWindowsServerContainers(c *check.C) { 64 testRequires(c, DaemonIsWindows, NotPausable) 65 runSleepingContainer(c, "-d", "--name=test") 66 out, _, _ := dockerCmdWithError("pause", "test") 67 c.Assert(out, checker.Contains, "cannot pause Windows Server Containers") 68 } 69 70 func (s *DockerSuite) TestStopPausedContainer(c *check.C) { 71 testRequires(c, DaemonIsLinux) 72 73 id := runSleepingContainer(c) 74 cli.WaitRun(c, id) 75 cli.DockerCmd(c, "pause", id) 76 cli.DockerCmd(c, "stop", id) 77 cli.WaitForInspectResult(c, id, "{{.State.Running}}", "false", 30*time.Second) 78 }