Signed-off-by: Madhu Venugopal <madhu@docker.com>
| ... | ... |
@@ -153,3 +153,46 @@ func (s *DockerSuite) TestContainerRestartSuccess(c *check.C) {
|
| 153 | 153 |
err = waitInspect(id, "{{.State.Status}}", "running", 5*time.Second)
|
| 154 | 154 |
c.Assert(err, check.IsNil) |
| 155 | 155 |
} |
| 156 |
+ |
|
| 157 |
+func (s *DockerSuite) TestUserDefinedNetworkWithRestartPolicy(c *check.C) {
|
|
| 158 |
+ testRequires(c, DaemonIsLinux, SameHostDaemon, NotUserNamespace) |
|
| 159 |
+ dockerCmd(c, "network", "create", "-d", "bridge", "udNet") |
|
| 160 |
+ |
|
| 161 |
+ dockerCmd(c, "run", "-d", "--net=udNet", "--name=first", "busybox", "top") |
|
| 162 |
+ c.Assert(waitRun("first"), check.IsNil)
|
|
| 163 |
+ |
|
| 164 |
+ dockerCmd(c, "run", "-d", "--restart=always", "--net=udNet", "--name=second", |
|
| 165 |
+ "--link=first:foo", "busybox", "top") |
|
| 166 |
+ c.Assert(waitRun("second"), check.IsNil)
|
|
| 167 |
+ |
|
| 168 |
+ // ping to first and its alias foo must succeed |
|
| 169 |
+ _, _, err := dockerCmdWithError("exec", "second", "ping", "-c", "1", "first")
|
|
| 170 |
+ c.Assert(err, check.IsNil) |
|
| 171 |
+ _, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "foo")
|
|
| 172 |
+ c.Assert(err, check.IsNil) |
|
| 173 |
+ |
|
| 174 |
+ // Now kill the second container and let the restart policy kick in |
|
| 175 |
+ pidStr, err := inspectField("second", "State.Pid")
|
|
| 176 |
+ c.Assert(err, check.IsNil) |
|
| 177 |
+ |
|
| 178 |
+ pid, err := strconv.Atoi(pidStr) |
|
| 179 |
+ c.Assert(err, check.IsNil) |
|
| 180 |
+ |
|
| 181 |
+ p, err := os.FindProcess(pid) |
|
| 182 |
+ c.Assert(err, check.IsNil) |
|
| 183 |
+ c.Assert(p, check.NotNil) |
|
| 184 |
+ |
|
| 185 |
+ err = p.Kill() |
|
| 186 |
+ c.Assert(err, check.IsNil) |
|
| 187 |
+ |
|
| 188 |
+ err = waitInspect("second", "{{.RestartCount}}", "1", 5*time.Second)
|
|
| 189 |
+ c.Assert(err, check.IsNil) |
|
| 190 |
+ |
|
| 191 |
+ err = waitInspect("second", "{{.State.Status}}", "running", 5*time.Second)
|
|
| 192 |
+ |
|
| 193 |
+ // ping to first and its alias foo must still succeed |
|
| 194 |
+ _, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "first")
|
|
| 195 |
+ c.Assert(err, check.IsNil) |
|
| 196 |
+ _, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "foo")
|
|
| 197 |
+ c.Assert(err, check.IsNil) |
|
| 198 |
+} |