Browse code

IT for restart-policy and DNS based SD in user-defined networks

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

Madhu Venugopal authored on 2016/01/15 14:22:34
Showing 1 changed files
... ...
@@ -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
+}