docker_cli_rename_test.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package main
  2. import (
  3. "os/exec"
  4. "strings"
  5. "github.com/docker/docker/pkg/stringid"
  6. "github.com/go-check/check"
  7. )
  8. func (s *DockerSuite) TestRenameStoppedContainer(c *check.C) {
  9. runCmd := exec.Command(dockerBinary, "run", "--name", "first_name", "-d", "busybox", "sh")
  10. out, _, err := runCommandWithOutput(runCmd)
  11. if err != nil {
  12. c.Fatalf(out, err)
  13. }
  14. cleanedContainerID := strings.TrimSpace(out)
  15. runCmd = exec.Command(dockerBinary, "wait", cleanedContainerID)
  16. out, _, err = runCommandWithOutput(runCmd)
  17. if err != nil {
  18. c.Fatalf(out, err)
  19. }
  20. name, err := inspectField(cleanedContainerID, "Name")
  21. newName := "new_name" + stringid.GenerateRandomID()
  22. runCmd = exec.Command(dockerBinary, "rename", "first_name", newName)
  23. out, _, err = runCommandWithOutput(runCmd)
  24. if err != nil {
  25. c.Fatalf(out, err)
  26. }
  27. name, err = inspectField(cleanedContainerID, "Name")
  28. if err != nil {
  29. c.Fatal(err)
  30. }
  31. if name != "/"+newName {
  32. c.Fatal("Failed to rename container ", name)
  33. }
  34. }
  35. func (s *DockerSuite) TestRenameRunningContainer(c *check.C) {
  36. runCmd := exec.Command(dockerBinary, "run", "--name", "first_name", "-d", "busybox", "sh")
  37. out, _, err := runCommandWithOutput(runCmd)
  38. if err != nil {
  39. c.Fatalf(out, err)
  40. }
  41. newName := "new_name" + stringid.GenerateRandomID()
  42. cleanedContainerID := strings.TrimSpace(out)
  43. runCmd = exec.Command(dockerBinary, "rename", "first_name", newName)
  44. out, _, err = runCommandWithOutput(runCmd)
  45. if err != nil {
  46. c.Fatalf(out, err)
  47. }
  48. name, err := inspectField(cleanedContainerID, "Name")
  49. if err != nil {
  50. c.Fatal(err)
  51. }
  52. if name != "/"+newName {
  53. c.Fatal("Failed to rename container ")
  54. }
  55. }
  56. func (s *DockerSuite) TestRenameCheckNames(c *check.C) {
  57. runCmd := exec.Command(dockerBinary, "run", "--name", "first_name", "-d", "busybox", "sh")
  58. out, _, err := runCommandWithOutput(runCmd)
  59. if err != nil {
  60. c.Fatalf(out, err)
  61. }
  62. newName := "new_name" + stringid.GenerateRandomID()
  63. runCmd = exec.Command(dockerBinary, "rename", "first_name", newName)
  64. out, _, err = runCommandWithOutput(runCmd)
  65. if err != nil {
  66. c.Fatalf(out, err)
  67. }
  68. name, err := inspectField(newName, "Name")
  69. if err != nil {
  70. c.Fatal(err)
  71. }
  72. if name != "/"+newName {
  73. c.Fatal("Failed to rename container ")
  74. }
  75. name, err = inspectField("first_name", "Name")
  76. if err == nil && !strings.Contains(err.Error(), "No such image or container: first_name") {
  77. c.Fatal(err)
  78. }
  79. }
  80. func (s *DockerSuite) TestRenameInvalidName(c *check.C) {
  81. runCmd := exec.Command(dockerBinary, "run", "--name", "myname", "-d", "busybox", "top")
  82. if out, _, err := runCommandWithOutput(runCmd); err != nil {
  83. c.Fatalf(out, err)
  84. }
  85. runCmd = exec.Command(dockerBinary, "rename", "myname", "new:invalid")
  86. if out, _, err := runCommandWithOutput(runCmd); err == nil || !strings.Contains(out, "Invalid container name") {
  87. c.Fatalf("Renaming container to invalid name should have failed: %s\n%v", out, err)
  88. }
  89. runCmd = exec.Command(dockerBinary, "ps", "-a")
  90. if out, _, err := runCommandWithOutput(runCmd); err != nil || !strings.Contains(out, "myname") {
  91. c.Fatalf("Output of docker ps should have included 'myname': %s\n%v", out, err)
  92. }
  93. }