docker_cli_pause_test.go 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package main
  2. import (
  3. "fmt"
  4. "os/exec"
  5. "strings"
  6. "github.com/go-check/check"
  7. )
  8. func (s *DockerSuite) TestPause(c *check.C) {
  9. defer unpauseAllContainers()
  10. name := "testeventpause"
  11. out, _ := dockerCmd(c, "images", "-q")
  12. image := strings.Split(out, "\n")[0]
  13. dockerCmd(c, "run", "-d", "--name", name, image, "top")
  14. dockerCmd(c, "pause", name)
  15. pausedContainers, err := getSliceOfPausedContainers()
  16. if err != nil {
  17. c.Fatalf("error thrown while checking if containers were paused: %v", err)
  18. }
  19. if len(pausedContainers) != 1 {
  20. c.Fatalf("there should be one paused container and not %d", len(pausedContainers))
  21. }
  22. dockerCmd(c, "unpause", name)
  23. eventsCmd := exec.Command(dockerBinary, "events", "--since=0", fmt.Sprintf("--until=%d", daemonTime(c).Unix()))
  24. out, _, _ = runCommandWithOutput(eventsCmd)
  25. events := strings.Split(out, "\n")
  26. if len(events) <= 1 {
  27. c.Fatalf("Missing expected event")
  28. }
  29. pauseEvent := strings.Fields(events[len(events)-3])
  30. unpauseEvent := strings.Fields(events[len(events)-2])
  31. if pauseEvent[len(pauseEvent)-1] != "pause" {
  32. c.Fatalf("event should be pause, not %#v", pauseEvent)
  33. }
  34. if unpauseEvent[len(unpauseEvent)-1] != "unpause" {
  35. c.Fatalf("event should be unpause, not %#v", unpauseEvent)
  36. }
  37. }
  38. func (s *DockerSuite) TestPauseMultipleContainers(c *check.C) {
  39. defer unpauseAllContainers()
  40. containers := []string{
  41. "testpausewithmorecontainers1",
  42. "testpausewithmorecontainers2",
  43. }
  44. out, _ := dockerCmd(c, "images", "-q")
  45. image := strings.Split(out, "\n")[0]
  46. for _, name := range containers {
  47. dockerCmd(c, "run", "-d", "--name", name, image, "top")
  48. }
  49. dockerCmd(c, append([]string{"pause"}, containers...)...)
  50. pausedContainers, err := getSliceOfPausedContainers()
  51. if err != nil {
  52. c.Fatalf("error thrown while checking if containers were paused: %v", err)
  53. }
  54. if len(pausedContainers) != len(containers) {
  55. c.Fatalf("there should be %d paused container and not %d", len(containers), len(pausedContainers))
  56. }
  57. dockerCmd(c, append([]string{"unpause"}, containers...)...)
  58. eventsCmd := exec.Command(dockerBinary, "events", "--since=0", fmt.Sprintf("--until=%d", daemonTime(c).Unix()))
  59. out, _, _ = runCommandWithOutput(eventsCmd)
  60. events := strings.Split(out, "\n")
  61. if len(events) <= len(containers)*3-2 {
  62. c.Fatalf("Missing expected event")
  63. }
  64. pauseEvents := make([][]string, len(containers))
  65. unpauseEvents := make([][]string, len(containers))
  66. for i := range containers {
  67. pauseEvents[i] = strings.Fields(events[len(events)-len(containers)*2-1+i])
  68. unpauseEvents[i] = strings.Fields(events[len(events)-len(containers)-1+i])
  69. }
  70. for _, pauseEvent := range pauseEvents {
  71. if pauseEvent[len(pauseEvent)-1] != "pause" {
  72. c.Fatalf("event should be pause, not %#v", pauseEvent)
  73. }
  74. }
  75. for _, unpauseEvent := range unpauseEvents {
  76. if unpauseEvent[len(unpauseEvent)-1] != "unpause" {
  77. c.Fatalf("event should be unpause, not %#v", unpauseEvent)
  78. }
  79. }
  80. }