integration-cli/docker_cli_pause_test.go
0ce42dcc
 package main
 
 import (
 	"strings"
c3feb046
 	"time"
dc944ea7
 
33968e6c
 	"github.com/docker/docker/integration-cli/checker"
10e171cd
 	"github.com/docker/docker/integration-cli/cli"
dc944ea7
 	"github.com/go-check/check"
0ce42dcc
 )
 
dc944ea7
 func (s *DockerSuite) TestPause(c *check.C) {
69985e85
 	testRequires(c, IsPausable)
0ce42dcc
 
 	name := "testeventpause"
69985e85
 	runSleepingContainer(c, "-d", "--name", name)
0ce42dcc
 
10e171cd
 	cli.DockerCmd(c, "pause", name)
 	pausedContainers := strings.Fields(
 		cli.DockerCmd(c, "ps", "-f", "status=paused", "-q", "-a").Combined(),
 	)
851a533a
 	c.Assert(len(pausedContainers), checker.Equals, 1)
0ce42dcc
 
10e171cd
 	cli.DockerCmd(c, "unpause", name)
0ce42dcc
 
10e171cd
 	out := cli.DockerCmd(c, "events", "--since=0", "--until", daemonUnixTime(c)).Combined()
72f1881d
 	events := strings.Split(strings.TrimSpace(out), "\n")
 	actions := eventActionsByIDAndType(c, events, name, "container")
0ce42dcc
 
72f1881d
 	c.Assert(actions[len(actions)-2], checker.Equals, "pause")
 	c.Assert(actions[len(actions)-1], checker.Equals, "unpause")
0ce42dcc
 }
 
dc944ea7
 func (s *DockerSuite) TestPauseMultipleContainers(c *check.C) {
69985e85
 	testRequires(c, IsPausable)
0ce42dcc
 
 	containers := []string{
 		"testpausewithmorecontainers1",
 		"testpausewithmorecontainers2",
 	}
 	for _, name := range containers {
69985e85
 		runSleepingContainer(c, "-d", "--name", name)
0ce42dcc
 	}
10e171cd
 	cli.DockerCmd(c, append([]string{"pause"}, containers...)...)
 	pausedContainers := strings.Fields(
 		cli.DockerCmd(c, "ps", "-f", "status=paused", "-q", "-a").Combined(),
 	)
851a533a
 	c.Assert(len(pausedContainers), checker.Equals, len(containers))
0ce42dcc
 
10e171cd
 	cli.DockerCmd(c, append([]string{"unpause"}, containers...)...)
0ce42dcc
 
10e171cd
 	out := cli.DockerCmd(c, "events", "--since=0", "--until", daemonUnixTime(c)).Combined()
72f1881d
 	events := strings.Split(strings.TrimSpace(out), "\n")
0ce42dcc
 
72f1881d
 	for _, name := range containers {
 		actions := eventActionsByIDAndType(c, events, name, "container")
0ce42dcc
 
72f1881d
 		c.Assert(actions[len(actions)-2], checker.Equals, "pause")
 		c.Assert(actions[len(actions)-1], checker.Equals, "unpause")
0ce42dcc
 	}
 }
25c38339
 
69985e85
 func (s *DockerSuite) TestPauseFailsOnWindowsServerContainers(c *check.C) {
 	testRequires(c, DaemonIsWindows, NotPausable)
 	runSleepingContainer(c, "-d", "--name=test")
25c38339
 	out, _, _ := dockerCmdWithError("pause", "test")
69985e85
 	c.Assert(out, checker.Contains, "cannot pause Windows Server Containers")
25c38339
 }
c3feb046
 
 func (s *DockerSuite) TestStopPausedContainer(c *check.C) {
 	testRequires(c, DaemonIsLinux)
 
 	id := runSleepingContainer(c)
 	cli.WaitRun(c, id)
 	cli.DockerCmd(c, "pause", id)
 	cli.DockerCmd(c, "stop", id)
 	cli.WaitForInspectResult(c, id, "{{.State.Running}}", "false", 30*time.Second)
 }