Kaynağa Gözat

Merge pull request #10790 from milas/e2e-process-leak

test: fix process leak in wait e2e test
Guillaume Lours 2 yıl önce
ebeveyn
işleme
7a9dfa4284
1 değiştirilmiş dosya ile 36 ekleme ve 1 silme
  1. 36 1
      pkg/e2e/wait_test.go

+ 36 - 1
pkg/e2e/wait_test.go

@@ -21,6 +21,8 @@ import (
 	"testing"
 	"time"
 
+	"gotest.tools/v3/icmd"
+
 	"gotest.tools/v3/assert"
 )
 
@@ -28,6 +30,12 @@ func TestWaitOnFaster(t *testing.T) {
 	const projectName = "e2e-wait-faster"
 	c := NewParallelCLI(t)
 
+	cleanup := func() {
+		c.RunDockerComposeCmd(t, "--project-name", projectName, "down", "--timeout=0", "--remove-orphans")
+	}
+	t.Cleanup(cleanup)
+	cleanup()
+
 	c.RunDockerComposeCmd(t, "-f", "./fixtures/wait/compose.yaml", "--project-name", projectName, "up", "-d")
 	c.RunDockerComposeCmd(t, "--project-name", projectName, "wait", "faster")
 }
@@ -36,6 +44,12 @@ func TestWaitOnSlower(t *testing.T) {
 	const projectName = "e2e-wait-slower"
 	c := NewParallelCLI(t)
 
+	cleanup := func() {
+		c.RunDockerComposeCmd(t, "--project-name", projectName, "down", "--timeout=0", "--remove-orphans")
+	}
+	t.Cleanup(cleanup)
+	cleanup()
+
 	c.RunDockerComposeCmd(t, "-f", "./fixtures/wait/compose.yaml", "--project-name", projectName, "up", "-d")
 	c.RunDockerComposeCmd(t, "--project-name", projectName, "wait", "slower")
 }
@@ -44,12 +58,27 @@ func TestWaitOnInfinity(t *testing.T) {
 	const projectName = "e2e-wait-infinity"
 	c := NewParallelCLI(t)
 
+	cleanup := func() {
+		c.RunDockerComposeCmd(t, "--project-name", projectName, "down", "--timeout=0", "--remove-orphans")
+	}
+	t.Cleanup(cleanup)
+	cleanup()
+
 	c.RunDockerComposeCmd(t, "-f", "./fixtures/wait/compose.yaml", "--project-name", projectName, "up", "-d")
 
+	cmd := c.NewDockerComposeCmd(t, "--project-name", projectName, "wait", "infinity")
+	r := icmd.StartCmd(cmd)
+	assert.NilError(t, r.Error)
+	t.Cleanup(func() {
+		if r.Cmd.Process != nil {
+			_ = r.Cmd.Process.Kill()
+		}
+	})
+
 	finished := make(chan struct{})
 	ticker := time.NewTicker(7 * time.Second)
 	go func() {
-		c.RunDockerComposeCmd(t, "--project-name", projectName, "wait", "infinity")
+		_ = r.Cmd.Wait()
 		finished <- struct{}{}
 	}()
 
@@ -64,6 +93,12 @@ func TestWaitAndDrop(t *testing.T) {
 	const projectName = "e2e-wait-and-drop"
 	c := NewParallelCLI(t)
 
+	cleanup := func() {
+		c.RunDockerComposeCmd(t, "--project-name", projectName, "down", "--timeout=0", "--remove-orphans")
+	}
+	t.Cleanup(cleanup)
+	cleanup()
+
 	c.RunDockerComposeCmd(t, "-f", "./fixtures/wait/compose.yaml", "--project-name", projectName, "up", "-d")
 	c.RunDockerComposeCmd(t, "--project-name", projectName, "wait", "--down-project", "faster")