github.com/walkingsparrow/docker@v1.4.2-0.20151218153551-b708a2249bfa/integration-cli/docker_cli_pause_test.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  
     7  	"github.com/docker/docker/pkg/integration/checker"
     8  	"github.com/go-check/check"
     9  )
    10  
    11  func (s *DockerSuite) TestPause(c *check.C) {
    12  	testRequires(c, DaemonIsLinux)
    13  	defer unpauseAllContainers()
    14  
    15  	name := "testeventpause"
    16  	dockerCmd(c, "run", "-d", "--name", name, "busybox", "top")
    17  
    18  	dockerCmd(c, "pause", name)
    19  	pausedContainers, err := getSliceOfPausedContainers()
    20  	c.Assert(err, checker.IsNil)
    21  	c.Assert(len(pausedContainers), checker.Equals, 1)
    22  
    23  	dockerCmd(c, "unpause", name)
    24  
    25  	out, _ := dockerCmd(c, "events", "--since=0", fmt.Sprintf("--until=%d", daemonTime(c).Unix()))
    26  	events := strings.Split(out, "\n")
    27  	c.Assert(len(events) > 1, checker.Equals, true)
    28  
    29  	pauseEvent := strings.Fields(events[len(events)-3])
    30  	unpauseEvent := strings.Fields(events[len(events)-2])
    31  
    32  	c.Assert(pauseEvent[len(pauseEvent)-1], checker.Equals, "pause")
    33  	c.Assert(unpauseEvent[len(unpauseEvent)-1], checker.Equals, "unpause")
    34  
    35  }
    36  
    37  func (s *DockerSuite) TestPauseMultipleContainers(c *check.C) {
    38  	testRequires(c, DaemonIsLinux)
    39  	defer unpauseAllContainers()
    40  
    41  	containers := []string{
    42  		"testpausewithmorecontainers1",
    43  		"testpausewithmorecontainers2",
    44  	}
    45  	for _, name := range containers {
    46  		dockerCmd(c, "run", "-d", "--name", name, "busybox", "top")
    47  	}
    48  	dockerCmd(c, append([]string{"pause"}, containers...)...)
    49  	pausedContainers, err := getSliceOfPausedContainers()
    50  	c.Assert(err, checker.IsNil)
    51  	c.Assert(len(pausedContainers), checker.Equals, len(containers))
    52  
    53  	dockerCmd(c, append([]string{"unpause"}, containers...)...)
    54  
    55  	out, _ := dockerCmd(c, "events", "--since=0", fmt.Sprintf("--until=%d", daemonTime(c).Unix()))
    56  	events := strings.Split(out, "\n")
    57  	c.Assert(len(events) > len(containers)*3-2, checker.Equals, true)
    58  
    59  	pauseEvents := make([][]string, len(containers))
    60  	unpauseEvents := make([][]string, len(containers))
    61  	for i := range containers {
    62  		pauseEvents[i] = strings.Fields(events[len(events)-len(containers)*2-1+i])
    63  		unpauseEvents[i] = strings.Fields(events[len(events)-len(containers)-1+i])
    64  	}
    65  
    66  	for _, pauseEvent := range pauseEvents {
    67  		c.Assert(pauseEvent[len(pauseEvent)-1], checker.Equals, "pause")
    68  	}
    69  	for _, unpauseEvent := range unpauseEvents {
    70  		c.Assert(unpauseEvent[len(unpauseEvent)-1], checker.Equals, "unpause")
    71  	}
    72  
    73  }