diff --git a/integration-cli/docker_cli_port_test.go b/integration-cli/docker_cli_port_test.go index c8a9e6a0a5..847296a89a 100644 --- a/integration-cli/docker_cli_port_test.go +++ b/integration-cli/docker_cli_port_test.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "net" "regexp" "sort" "strings" @@ -245,3 +246,49 @@ func (s *DockerSuite) TestUnpublishedPortsInPsOutput(c *check.C) { c.Errorf("Missing unpublished ports or port binding (%s, %s) in docker ps output: %s", unpPort1, expBnd2, out) } } + +func (s *DockerSuite) TestPortHostBinding(c *check.C) { + out, _ := dockerCmd(c, "run", "-d", "-p", "9876:80", "busybox", + "nc", "-l", "-p", "80") + firstID := strings.TrimSpace(out) + + out, _ = dockerCmd(c, "port", firstID, "80") + + if !assertPortList(c, out, []string{"0.0.0.0:9876"}) { + c.Error("Port list is not correct") + } + + dockerCmd(c, "run", "--net=host", "busybox", + "nc", "localhost", "9876") + + dockerCmd(c, "rm", "-f", firstID) + + if _, _, err := dockerCmdWithError("run", "--net=host", "busybox", + "nc", "localhost", "9876"); err == nil { + c.Error("Port is still bound after the Container is removed") + } +} + +func (s *DockerSuite) TestPortExposeHostBinding(c *check.C) { + out, _ := dockerCmd(c, "run", "-d", "-P", "--expose", "80", "busybox", + "nc", "-l", "-p", "80") + firstID := strings.TrimSpace(out) + + out, _ = dockerCmd(c, "port", firstID, "80") + + _, exposedPort, err := net.SplitHostPort(out) + + if err != nil { + c.Fatal(out, err) + } + + dockerCmd(c, "run", "--net=host", "busybox", + "nc", "localhost", strings.TrimSpace(exposedPort)) + + dockerCmd(c, "rm", "-f", firstID) + + if _, _, err = dockerCmdWithError("run", "--net=host", "busybox", + "nc", "localhost", strings.TrimSpace(exposedPort)); err == nil { + c.Error("Port is still bound after the Container is removed") + } +} diff --git a/integration-cli/docker_cli_port_unix_test.go b/integration-cli/docker_cli_port_unix_test.go deleted file mode 100644 index dedbba76a7..0000000000 --- a/integration-cli/docker_cli_port_unix_test.go +++ /dev/null @@ -1,56 +0,0 @@ -// +build !windows - -package main - -import ( - "net" - "strings" - - "github.com/go-check/check" -) - -func (s *DockerSuite) TestPortHostBinding(c *check.C) { - out, _ := dockerCmd(c, "run", "-d", "-p", "9876:80", "busybox", - "nc", "-l", "-p", "80") - firstID := strings.TrimSpace(out) - - out, _ = dockerCmd(c, "port", firstID, "80") - - if !assertPortList(c, out, []string{"0.0.0.0:9876"}) { - c.Error("Port list is not correct") - } - - dockerCmd(c, "run", "--net=host", "busybox", - "nc", "localhost", "9876") - - dockerCmd(c, "rm", "-f", firstID) - - if _, _, err := dockerCmdWithError("run", "--net=host", "busybox", - "nc", "localhost", "9876"); err == nil { - c.Error("Port is still bound after the Container is removed") - } -} - -func (s *DockerSuite) TestPortExposeHostBinding(c *check.C) { - out, _ := dockerCmd(c, "run", "-d", "-P", "--expose", "80", "busybox", - "nc", "-l", "-p", "80") - firstID := strings.TrimSpace(out) - - out, _ = dockerCmd(c, "port", firstID, "80") - - _, exposedPort, err := net.SplitHostPort(out) - - if err != nil { - c.Fatal(out, err) - } - - dockerCmd(c, "run", "--net=host", "busybox", - "nc", "localhost", strings.TrimSpace(exposedPort)) - - dockerCmd(c, "rm", "-f", firstID) - - if _, _, err = dockerCmdWithError("run", "--net=host", "busybox", - "nc", "localhost", strings.TrimSpace(exposedPort)); err == nil { - c.Error("Port is still bound after the Container is removed") - } -}