diff --git a/integration-cli/docker_cli_daemon_test.go b/integration-cli/docker_cli_daemon_test.go index 7acbe4640f..3dfcdfdb34 100644 --- a/integration-cli/docker_cli_daemon_test.go +++ b/integration-cli/docker_cli_daemon_test.go @@ -10,6 +10,7 @@ import ( "os" "os/exec" "path/filepath" + "strconv" "strings" "time" @@ -486,6 +487,10 @@ func (s *DockerDaemonSuite) TestDaemonBridgeExternal(c *check.C) { c.Assert(bridgeIPNet.Contains(ip), check.Equals, true, check.Commentf("Container IP-Address must be in the same subnet range : %s", containerIp)) + + // Reset to Defaults + deleteBridge(c, bridgeName) + d.Restart() } func deleteBridge(c *check.C, bridge string) { @@ -553,6 +558,37 @@ func (s *DockerDaemonSuite) TestDaemonBridgeIP(c *check.C) { pingContainers(c) } +func (s *DockerDaemonSuite) TestDaemonBridgeFixedCidr(c *check.C) { + d := s.d + + bridgeName := "external-bridge" + args := []string{"link", "add", "name", bridgeName, "type", "bridge"} + ipLinkCmd := exec.Command("ip", args...) + _, _, _, err := runCommandWithStdoutStderr(ipLinkCmd) + c.Assert(err, check.IsNil) + + ifCmd := exec.Command("ifconfig", bridgeName, "192.169.1.1/24", "up") + _, _, _, err = runCommandWithStdoutStderr(ifCmd) + c.Assert(err, check.IsNil) + + args = []string{"--bridge", bridgeName, "--fixed-cidr", "192.169.1.0/30"} + err = d.StartWithBusybox(args...) + c.Assert(err, check.IsNil) + + for i := 0; i < 4; i++ { + cName := "Container" + strconv.Itoa(i) + out, err := d.Cmd("run", "-d", "--name", cName, "busybox", "top") + if err != nil { + c.Assert(strings.Contains(out, "no available ip addresses"), check.Equals, true, + check.Commentf("Could not run a Container : %s %s", err.Error(), out)) + } + } + + // Reset to Defaults + deleteBridge(c, bridgeName) + d.Restart() +} + func (s *DockerDaemonSuite) TestDaemonUlimitDefaults(c *check.C) { testRequires(c, NativeExecDriver)