mirror of https://github.com/docker/compose.git
test: fix process leak in wait e2e test
* Run `down` before and after test to not leave around containers * Kill the `wait` process that's waiting on `infinity` * NOTE: If the test is actually working, this should exit once the `down` happens, but this ensures that we kill everything we start I'd like to generalize more of this into the framework, but this is a quick fix to prevent filling up CI machines with tons of processes over time. Signed-off-by: Milas Bowman <milas.bowman@docker.com>
This commit is contained in:
parent
bc6ad2e4a4
commit
8dea7b5cae
|
@ -21,6 +21,8 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"gotest.tools/v3/icmd"
|
||||||
|
|
||||||
"gotest.tools/v3/assert"
|
"gotest.tools/v3/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -28,6 +30,12 @@ func TestWaitOnFaster(t *testing.T) {
|
||||||
const projectName = "e2e-wait-faster"
|
const projectName = "e2e-wait-faster"
|
||||||
c := NewParallelCLI(t)
|
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, "-f", "./fixtures/wait/compose.yaml", "--project-name", projectName, "up", "-d")
|
||||||
c.RunDockerComposeCmd(t, "--project-name", projectName, "wait", "faster")
|
c.RunDockerComposeCmd(t, "--project-name", projectName, "wait", "faster")
|
||||||
}
|
}
|
||||||
|
@ -36,6 +44,12 @@ func TestWaitOnSlower(t *testing.T) {
|
||||||
const projectName = "e2e-wait-slower"
|
const projectName = "e2e-wait-slower"
|
||||||
c := NewParallelCLI(t)
|
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, "-f", "./fixtures/wait/compose.yaml", "--project-name", projectName, "up", "-d")
|
||||||
c.RunDockerComposeCmd(t, "--project-name", projectName, "wait", "slower")
|
c.RunDockerComposeCmd(t, "--project-name", projectName, "wait", "slower")
|
||||||
}
|
}
|
||||||
|
@ -44,12 +58,27 @@ func TestWaitOnInfinity(t *testing.T) {
|
||||||
const projectName = "e2e-wait-infinity"
|
const projectName = "e2e-wait-infinity"
|
||||||
c := NewParallelCLI(t)
|
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, "-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{})
|
finished := make(chan struct{})
|
||||||
ticker := time.NewTicker(7 * time.Second)
|
ticker := time.NewTicker(7 * time.Second)
|
||||||
go func() {
|
go func() {
|
||||||
c.RunDockerComposeCmd(t, "--project-name", projectName, "wait", "infinity")
|
_ = r.Cmd.Wait()
|
||||||
finished <- struct{}{}
|
finished <- struct{}{}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
@ -64,6 +93,12 @@ func TestWaitAndDrop(t *testing.T) {
|
||||||
const projectName = "e2e-wait-and-drop"
|
const projectName = "e2e-wait-and-drop"
|
||||||
c := NewParallelCLI(t)
|
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, "-f", "./fixtures/wait/compose.yaml", "--project-name", projectName, "up", "-d")
|
||||||
c.RunDockerComposeCmd(t, "--project-name", projectName, "wait", "--down-project", "faster")
|
c.RunDockerComposeCmd(t, "--project-name", projectName, "wait", "--down-project", "faster")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue