docker_cli_pause_test.go 2.2 KB

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