Browse code

Fix tests creating zombie processes

Signed-off-by: Kenfe-Mickael Laventure <mickael.laventure@gmail.com>

Kenfe-Mickael Laventure authored on 2017/09/08 02:11:25
Showing 7 changed files
... ...
@@ -49,6 +49,7 @@ import (
49 49
 func (s *DockerDaemonSuite) TestLegacyDaemonCommand(c *check.C) {
50 50
 	cmd := exec.Command(dockerBinary, "daemon", "--storage-driver=vfs", "--debug")
51 51
 	err := cmd.Start()
52
+	go cmd.Wait()
52 53
 	c.Assert(err, checker.IsNil, check.Commentf("could not start daemon using 'docker daemon'"))
53 54
 
54 55
 	c.Assert(cmd.Process.Kill(), checker.IsNil)
... ...
@@ -229,18 +229,18 @@ func (s *DockerSuite) TestExecStopNotHanging(c *check.C) {
229 229
 	testRequires(c, DaemonIsLinux)
230 230
 	dockerCmd(c, "run", "-d", "--name", "testing", "busybox", "top")
231 231
 
232
-	err := exec.Command(dockerBinary, "exec", "testing", "top").Start()
233
-	c.Assert(err, checker.IsNil)
232
+	result := icmd.StartCmd(icmd.Command(dockerBinary, "exec", "testing", "top"))
233
+	result.Assert(c, icmd.Success)
234
+	go icmd.WaitOnCmd(0, result)
234 235
 
235 236
 	type dstop struct {
236
-		out []byte
237
+		out string
237 238
 		err error
238 239
 	}
239
-
240 240
 	ch := make(chan dstop)
241 241
 	go func() {
242
-		out, err := exec.Command(dockerBinary, "stop", "testing").CombinedOutput()
243
-		ch <- dstop{out, err}
242
+		result := icmd.RunCommand(dockerBinary, "stop", "testing")
243
+		ch <- dstop{result.Combined(), result.Error}
244 244
 		close(ch)
245 245
 	}()
246 246
 	select {
... ...
@@ -280,6 +280,7 @@ func (s *DockerSuite) TestLogsFollowGoroutinesWithStdout(c *check.C) {
280 280
 	r, w := io.Pipe()
281 281
 	cmd.Stdout = w
282 282
 	c.Assert(cmd.Start(), checker.IsNil)
283
+	go cmd.Wait()
283 284
 
284 285
 	// Make sure pipe is written to
285 286
 	chErr := make(chan error)
... ...
@@ -305,6 +306,7 @@ func (s *DockerSuite) TestLogsFollowGoroutinesNoOutput(c *check.C) {
305 305
 	c.Assert(err, checker.IsNil)
306 306
 	cmd := exec.Command(dockerBinary, "logs", "-f", id)
307 307
 	c.Assert(cmd.Start(), checker.IsNil)
308
+	go cmd.Wait()
308 309
 	time.Sleep(200 * time.Millisecond)
309 310
 	c.Assert(cmd.Process.Kill(), checker.IsNil)
310 311
 	cmd.Wait()
... ...
@@ -244,6 +244,7 @@ func (s *DockerHubPullSuite) TestPullClientDisconnect(c *check.C) {
244 244
 	c.Assert(err, checker.IsNil)
245 245
 	err = pullCmd.Start()
246 246
 	c.Assert(err, checker.IsNil)
247
+	go pullCmd.Wait()
247 248
 
248 249
 	// Cancel as soon as we get some output.
249 250
 	buf := make([]byte, 10)
... ...
@@ -226,6 +226,7 @@ func (s *DockerSuite) TestRunAttachDetachFromInvalidFlag(c *check.C) {
226 226
 	if err := cmd.Start(); err != nil {
227 227
 		c.Fatal(err)
228 228
 	}
229
+	go cmd.Wait()
229 230
 
230 231
 	bufReader := bufio.NewReader(stdout)
231 232
 	out, err := bufReader.ReadString('\n')
... ...
@@ -424,6 +425,7 @@ func (s *DockerSuite) TestRunAttachInvalidDetachKeySequencePreserved(c *check.C)
424 424
 	if err := cmd.Start(); err != nil {
425 425
 		c.Fatal(err)
426 426
 	}
427
+	go cmd.Wait()
427 428
 	c.Assert(waitRun(name), check.IsNil)
428 429
 
429 430
 	// Invalid escape sequence aba, should print aba in output
... ...
@@ -172,6 +172,7 @@ func (s *DockerSwarmSuite) TestServiceLogsFollow(c *check.C) {
172 172
 	cmd.Stdout = w
173 173
 	cmd.Stderr = w
174 174
 	c.Assert(cmd.Start(), checker.IsNil)
175
+	go cmd.Wait()
175 176
 
176 177
 	// Make sure pipe is written to
177 178
 	ch := make(chan *logMessage)
... ...
@@ -131,6 +131,7 @@ func (s *DockerSuite) TestStatsAllNewContainersAdded(c *check.C) {
131 131
 	stdout, err := statsCmd.StdoutPipe()
132 132
 	c.Assert(err, check.IsNil)
133 133
 	c.Assert(statsCmd.Start(), check.IsNil)
134
+	go statsCmd.Wait()
134 135
 	defer statsCmd.Process.Kill()
135 136
 
136 137
 	go func() {