github.com/ttys3/engine@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  }