docker_cli_pause_test.go 2.7 KB

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