mirror of
https://github.com/moby/moby.git
synced 2025-07-30 18:23:29 +03:00
IT for daemon restarts when container connected to multiple networks
Signed-off-by: Alessandro Boch <aboch@docker.com>
This commit is contained in:
committed by
Madhu Venugopal
parent
401632c756
commit
e16e794805
@ -670,3 +670,66 @@ func (s *DockerSuite) TestInspectApiMultipeNetworks(c *check.C) {
|
|||||||
c.Assert(bridge.IPAddress, checker.Equals, versionedIP)
|
c.Assert(bridge.IPAddress, checker.Equals, versionedIP)
|
||||||
c.Assert(bridge.IPAddress, checker.Equals, inspect121.NetworkSettings.IPAddress)
|
c.Assert(bridge.IPAddress, checker.Equals, inspect121.NetworkSettings.IPAddress)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func connectContainerToNetworks(c *check.C, d *Daemon, cName string, nws []string) {
|
||||||
|
// Run a container on the default network
|
||||||
|
out, err := d.Cmd("run", "-d", "--name", cName, "busybox", "top")
|
||||||
|
c.Assert(err, checker.IsNil, check.Commentf(out))
|
||||||
|
|
||||||
|
// Attach the container to other three networks
|
||||||
|
for _, nw := range nws {
|
||||||
|
out, err = d.Cmd("network", "create", nw)
|
||||||
|
c.Assert(err, checker.IsNil, check.Commentf(out))
|
||||||
|
out, err = d.Cmd("network", "connect", nw, cName)
|
||||||
|
c.Assert(err, checker.IsNil, check.Commentf(out))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func verifyContainerIsConnectedToNetworks(c *check.C, d *Daemon, cName string, nws []string) {
|
||||||
|
// Verify container is connected to all three networks
|
||||||
|
for _, nw := range nws {
|
||||||
|
out, err := d.Cmd("inspect", "-f", fmt.Sprintf("{{.NetworkSettings.Networks.%s}}", nw), cName)
|
||||||
|
c.Assert(err, checker.IsNil, check.Commentf(out))
|
||||||
|
c.Assert(out, checker.Not(checker.Equals), "<no value>\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *DockerNetworkSuite) TestDockerNetworkMultipleNetworksGracefulDaemonRestart(c *check.C) {
|
||||||
|
cName := "bb"
|
||||||
|
nwList := []string{"nw1", "nw2", "nw3"}
|
||||||
|
|
||||||
|
s.d.Start()
|
||||||
|
|
||||||
|
connectContainerToNetworks(c, s.d, cName, nwList)
|
||||||
|
verifyContainerIsConnectedToNetworks(c, s.d, cName, nwList)
|
||||||
|
|
||||||
|
// Reload daemon
|
||||||
|
s.d.Restart()
|
||||||
|
|
||||||
|
_, err := s.d.Cmd("start", cName)
|
||||||
|
c.Assert(err, checker.IsNil)
|
||||||
|
|
||||||
|
verifyContainerIsConnectedToNetworks(c, s.d, cName, nwList)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *DockerNetworkSuite) TestDockerNetworkMultipleNetworksUngracefulDaemonRestart(c *check.C) {
|
||||||
|
cName := "cc"
|
||||||
|
nwList := []string{"nw1", "nw2", "nw3"}
|
||||||
|
|
||||||
|
s.d.Start()
|
||||||
|
|
||||||
|
connectContainerToNetworks(c, s.d, cName, nwList)
|
||||||
|
verifyContainerIsConnectedToNetworks(c, s.d, cName, nwList)
|
||||||
|
|
||||||
|
// Kill daemon and restart
|
||||||
|
if err := s.d.cmd.Process.Kill(); err != nil {
|
||||||
|
c.Fatal(err)
|
||||||
|
}
|
||||||
|
s.d.Restart()
|
||||||
|
|
||||||
|
// Restart container
|
||||||
|
_, err := s.d.Cmd("start", cName)
|
||||||
|
c.Assert(err, checker.IsNil)
|
||||||
|
|
||||||
|
verifyContainerIsConnectedToNetworks(c, s.d, cName, nwList)
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user