Browse code

IT for ungraceful daemon restart with multiple host-mode containers

Signed-off-by: Madhu Venugopal <madhu@docker.com>

Madhu Venugopal authored on 2015/11/03 03:38:10
Showing 1 changed files
... ...
@@ -738,3 +738,29 @@ func (s *DockerNetworkSuite) TestDockerNetworkRunNetByID(c *check.C) {
738 738
 	out, _ := dockerCmd(c, "network", "create", "one")
739 739
 	dockerCmd(c, "run", "-d", "--net", strings.TrimSpace(out), "busybox", "top")
740 740
 }
741
+
742
+func (s *DockerNetworkSuite) TestDockerNetworkHostModeUngracefulDaemonRestart(c *check.C) {
743
+	testRequires(c, DaemonIsLinux, NotUserNamespace)
744
+	s.d.Start()
745
+
746
+	// Run a few containers on host network
747
+	for i := 0; i < 10; i++ {
748
+		cName := fmt.Sprintf("hostc-%d", i)
749
+		out, err := s.d.Cmd("run", "-d", "--name", cName, "--net=host", "--restart=always", "busybox", "top")
750
+		c.Assert(err, checker.IsNil, check.Commentf(out))
751
+	}
752
+
753
+	// Kill daemon ungracefully and restart
754
+	if err := s.d.cmd.Process.Kill(); err != nil {
755
+		c.Fatal(err)
756
+	}
757
+	s.d.Restart()
758
+
759
+	// make sure all the containers are up and running
760
+	for i := 0; i < 10; i++ {
761
+		cName := fmt.Sprintf("hostc-%d", i)
762
+		runningOut, err := s.d.Cmd("inspect", "--format='{{.State.Running}}'", cName)
763
+		c.Assert(err, checker.IsNil)
764
+		c.Assert(strings.TrimSpace(runningOut), checker.Equals, "true")
765
+	}
766
+}