Sfoglia il codice sorgente

Merge pull request #9612 from milas/e2e-start-stop

e2e: add more start/stop test cases
Guillaume Lours 3 anni fa
parent
commit
ff2bf78570
2 ha cambiato i file con 65 aggiunte e 1 eliminazioni
  1. 64 0
      pkg/e2e/start_stop_test.go
  2. 1 1
      pkg/e2e/up_test.go

+ 64 - 0
pkg/e2e/start_stop_test.go

@@ -23,6 +23,7 @@ import (
 
 	testify "github.com/stretchr/testify/assert"
 	"gotest.tools/v3/assert"
+	"gotest.tools/v3/icmd"
 )
 
 func TestStartStop(t *testing.T) {
@@ -182,3 +183,66 @@ func TestStartStopWithOneOffs(t *testing.T) {
 		assert.Assert(t, !strings.Contains(res.Combined(), "e2e-start-stop-with-oneoffs-bar"), res.Combined())
 	})
 }
+
+func TestStartAlreadyRunning(t *testing.T) {
+	cli := NewParallelCLI(t, WithEnv(
+		"COMPOSE_PROJECT_NAME=e2e-start-stop-svc-already-running",
+		"COMPOSE_FILE=./fixtures/start-stop/compose.yaml"))
+	t.Cleanup(func() {
+		cli.RunDockerComposeCmd(t, "down", "--remove-orphans", "-v", "-t", "0")
+	})
+
+	cli.RunDockerComposeCmd(t, "up", "-d", "--wait")
+
+	res := cli.RunDockerComposeCmd(t, "start", "simple")
+	assert.Equal(t, res.Stdout(), "", "No output should have been written to stdout")
+}
+
+func TestStopAlreadyStopped(t *testing.T) {
+	cli := NewParallelCLI(t, WithEnv(
+		"COMPOSE_PROJECT_NAME=e2e-start-stop-svc-already-stopped",
+		"COMPOSE_FILE=./fixtures/start-stop/compose.yaml"))
+	t.Cleanup(func() {
+		cli.RunDockerComposeCmd(t, "down", "--remove-orphans", "-v", "-t", "0")
+	})
+
+	cli.RunDockerComposeCmd(t, "up", "-d", "--wait")
+
+	// stop the container
+	cli.RunDockerComposeCmd(t, "stop", "simple")
+
+	// attempt to stop it again
+	res := cli.RunDockerComposeCmdNoCheck(t, "stop", "simple")
+	// TODO: for consistency, this should NOT write any output because the
+	// 		container is already stopped
+	res.Assert(t, icmd.Expected{
+		ExitCode: 0,
+		Err:      "Container e2e-start-stop-svc-already-stopped-simple-1  Stopped",
+	})
+}
+
+func TestStartStopMultipleServices(t *testing.T) {
+	cli := NewParallelCLI(t, WithEnv(
+		"COMPOSE_PROJECT_NAME=e2e-start-stop-svc-multiple",
+		"COMPOSE_FILE=./fixtures/start-stop/compose.yaml"))
+	t.Cleanup(func() {
+		cli.RunDockerComposeCmd(t, "down", "--remove-orphans", "-v", "-t", "0")
+	})
+
+	cli.RunDockerComposeCmd(t, "up", "-d", "--wait")
+
+	res := cli.RunDockerComposeCmd(t, "stop", "simple", "another")
+	services := []string{"simple", "another"}
+	for _, svc := range services {
+		stopMsg := fmt.Sprintf("Container e2e-start-stop-svc-multiple-%s-1  Stopped", svc)
+		assert.Assert(t, strings.Contains(res.Stderr(), stopMsg),
+			fmt.Sprintf("Missing stop message for %s\n%s", svc, res.Combined()))
+	}
+
+	res = cli.RunDockerComposeCmd(t, "start", "simple", "another")
+	for _, svc := range services {
+		startMsg := fmt.Sprintf("Container e2e-start-stop-svc-multiple-%s-1  Started", svc)
+		assert.Assert(t, strings.Contains(res.Stderr(), startMsg),
+			fmt.Sprintf("Missing start message for %s\n%s", svc, res.Combined()))
+	}
+}

+ 1 - 1
pkg/e2e/start_fail_test.go → pkg/e2e/up_test.go

@@ -22,7 +22,7 @@ import (
 	"gotest.tools/v3/icmd"
 )
 
-func TestStartFail(t *testing.T) {
+func TestUpServiceUnhealthy(t *testing.T) {
 	c := NewParallelCLI(t)
 	const projectName = "e2e-start-fail"