|
@@ -0,0 +1,34 @@
|
|
|
+package main
|
|
|
+
|
|
|
+import (
|
|
|
+ "os/exec"
|
|
|
+ "testing"
|
|
|
+)
|
|
|
+
|
|
|
+// Regression test for #3364
|
|
|
+func TestDockerStartWithPortCollision(t *testing.T) {
|
|
|
+ runCmd := exec.Command(dockerBinary, "run", "--name", "fail", "-p", "25:25", "busybox", "true")
|
|
|
+ out, stderr, exitCode, err := runCommandWithStdoutStderr(runCmd)
|
|
|
+ if err != nil && exitCode != 0 {
|
|
|
+ t.Fatal(out, stderr, err)
|
|
|
+ }
|
|
|
+
|
|
|
+ runCmd = exec.Command(dockerBinary, "run", "--name", "conflict", "-dti", "-p", "25:25", "busybox", "sh")
|
|
|
+ out, stderr, exitCode, err = runCommandWithStdoutStderr(runCmd)
|
|
|
+ if err != nil && exitCode != 0 {
|
|
|
+ t.Fatal(out, stderr, err)
|
|
|
+ }
|
|
|
+
|
|
|
+ startCmd := exec.Command(dockerBinary, "start", "-a", "fail")
|
|
|
+ out, stderr, exitCode, err = runCommandWithStdoutStderr(startCmd)
|
|
|
+ if err != nil && exitCode != 1 {
|
|
|
+ t.Fatal(out, err)
|
|
|
+ }
|
|
|
+
|
|
|
+ killCmd := exec.Command(dockerBinary, "kill", "conflict")
|
|
|
+ runCommand(killCmd)
|
|
|
+
|
|
|
+ deleteAllContainers()
|
|
|
+
|
|
|
+ logDone("start - -a=true error on port use")
|
|
|
+}
|