Browse Source

Removed test requiring linux containers

Guillaume Tardif 5 years ago
parent
commit
93984f8c68
5 changed files with 135 additions and 94 deletions
  1. 1 1
      .gitattributes
  2. 2 12
      .github/workflows/ci.yml
  3. 4 1
      Makefile
  4. 1 80
      tests/e2e/e2e_test.go
  5. 127 0
      tests/skip-win-ci-e2e/skip_win_ci_test.go

+ 1 - 1
.gitattributes

@@ -1,2 +1,2 @@
 core.autocrlf false
-*.golden text eol=lf
+*.golden text eol=lf

+ 2 - 12
.github/workflows/ci.yml

@@ -21,7 +21,7 @@ jobs:
       - name: Run golangci-lint
         run: |
           curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b . v1.27.0
-          ./golangci-lint run
+          ./golangci-lint run --timeout 10m0s
 
   build:
     name: Build
@@ -63,7 +63,6 @@ jobs:
       - name: E2E Test
         run: make e2e-local
 
-
   windows-build:
     name: Windows Build
     runs-on: windows-latest
@@ -92,14 +91,5 @@ jobs:
       - name: Build
         run: make -f builder.Makefile cli
 
-      - name: Install Protoc
-        uses: arduino/setup-protoc@master
-        with:
-          version: "3.9.1"
-
-      - uses: actions/setup-node@v1
-        with:
-          node-version: "10.x"
-
       - name: E2E Test
-        run: make e2e-local
+        run: make e2e-win-ci

+ 4 - 1
Makefile

@@ -37,7 +37,10 @@ cli: ## Compile the cli
 	--output ./bin
 
 e2e-local: ## Run End to end local tests
-	go test -v ./tests/e2e ./moby/e2e
+	go test -v ./tests/e2e ./tests/skip-win-ci-e2e ./moby/e2e
+
+e2e-win-ci: ## Run End to end local tests on windows CI, no docker for linux containers available ATM
+	go test -v ./tests/e2e
 
 e2e-aci: ## Run End to end ACI tests (requires azure login)
 	go test -v ./tests/aci-e2e

+ 1 - 80
tests/e2e/e2e_test.go

@@ -28,13 +28,8 @@
 package main
 
 import (
-	"fmt"
-	"io/ioutil"
-	"log"
 	"os"
-	"os/exec"
 	"path/filepath"
-	"strings"
 	"testing"
 	"time"
 
@@ -115,37 +110,6 @@ func (s *E2eSuite) TestSetupError() {
 	})
 }
 
-func (s *E2eSuite) TestKillChildOnCancel() {
-	It("should kill docker-classic if parent command is cancelled", func() {
-		out := s.ListProcessesCommand().ExecOrDie()
-		Expect(out).NotTo(ContainSubstring("docker-classic"))
-
-		dir := s.ConfigDir
-		Expect(ioutil.WriteFile(filepath.Join(dir, "Dockerfile"), []byte(`FROM alpine:3.10
-RUN sleep 100`), 0644)).To(Succeed())
-		shutdown := make(chan time.Time)
-		errs := make(chan error)
-		ctx := s.NewDockerCommand("build", "--no-cache", "-t", "test-sleep-image", ".").WithinDirectory(dir).WithTimeout(shutdown)
-		go func() {
-			_, err := ctx.Exec()
-			errs <- err
-		}()
-		err := WaitFor(time.Second, 10*time.Second, errs, func() bool {
-			out := s.ListProcessesCommand().ExecOrDie()
-			return strings.Contains(out, "docker-classic")
-		})
-		Expect(err).NotTo(HaveOccurred())
-		log.Println("Killing docker process")
-
-		close(shutdown)
-		err = WaitFor(time.Second, 12*time.Second, nil, func() bool {
-			out := s.ListProcessesCommand().ExecOrDie()
-			return !strings.Contains(out, "docker-classic")
-		})
-		Expect(err).NotTo(HaveOccurred())
-	})
-}
-
 func (s *E2eSuite) TestLegacy() {
 	It("should list all legacy commands", func() {
 		output := s.NewDockerCommand("--help").ExecOrDie()
@@ -159,7 +123,7 @@ func (s *E2eSuite) TestLegacy() {
 
 	It("should run local container in less than 10 secs", func() {
 		s.NewDockerCommand("pull", "hello-world").ExecOrDie()
-		output := s.NewDockerCommand("run", "--rm", "hello-world").WithTimeout(time.NewTimer(10 * time.Second).C).ExecOrDie()
+		output := s.NewDockerCommand("run", "--rm", "hello-world").WithTimeout(time.NewTimer(20 * time.Second).C).ExecOrDie()
 		Expect(output).To(ContainSubstring("Hello from Docker!"))
 	})
 }
@@ -222,49 +186,6 @@ func (s *E2eSuite) TestMockBackend() {
 	})
 }
 
-func (s *E2eSuite) TestAPIServer() {
-	_, err := exec.LookPath("yarn")
-	if err != nil || os.Getenv("SKIP_NODE") != "" {
-		s.T().Skip("skipping, yarn not installed")
-	}
-	It("can run 'serve' command", func() {
-		cName := "test-example"
-		s.NewDockerCommand("context", "create", cName, "example").ExecOrDie()
-
-		//sPath := fmt.Sprintf("unix:///%s/docker.sock", s.ConfigDir)
-		sPath, cliAddress := s.getGrpcServerAndCLientAddress()
-		server, err := serveAPI(s.ConfigDir, sPath)
-		Expect(err).To(BeNil())
-		defer killProcess(server)
-
-		s.NewCommand("yarn", "install").WithinDirectory("../node-client").ExecOrDie()
-		output := s.NewCommand("yarn", "run", "start", cName, cliAddress).WithinDirectory("../node-client").ExecOrDie()
-		Expect(output).To(ContainSubstring("nginx"))
-	})
-}
-
-func (s *E2eSuite) getGrpcServerAndCLientAddress() (string, string) {
-	if IsWindows() {
-		return "npipe:////./pipe/clibackend", "unix:////./pipe/clibackend"
-	}
-	socketName := fmt.Sprintf("unix:///%s/docker.sock", s.ConfigDir)
-	return socketName, socketName
-}
-
 func TestE2e(t *testing.T) {
 	suite.Run(t, new(E2eSuite))
 }
-
-func killProcess(process *os.Process) {
-	err := process.Kill()
-	Expect(err).To(BeNil())
-}
-
-func serveAPI(configDir string, address string) (*os.Process, error) {
-	cmd := exec.Command("../../bin/docker", "--config", configDir, "serve", "--address", address)
-	err := cmd.Start()
-	if err != nil {
-		return nil, err
-	}
-	return cmd.Process, nil
-}

+ 127 - 0
tests/skip-win-ci-e2e/skip_win_ci_test.go

@@ -0,0 +1,127 @@
+/*
+	Copyright (c) 2020 Docker Inc.
+
+	Permission is hereby granted, free of charge, to any person
+	obtaining a copy of this software and associated documentation
+	files (the "Software"), to deal in the Software without
+	restriction, including without limitation the rights to use, copy,
+	modify, merge, publish, distribute, sublicense, and/or sell copies
+	of the Software, and to permit persons to whom the Software is
+	furnished to do so, subject to the following conditions:
+
+	The above copyright notice and this permission notice shall be
+	included in all copies or substantial portions of the Software.
+
+	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+	EXPRESS OR IMPLIED,
+	INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+	IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+	HOLDERS BE LIABLE FOR ANY CLAIM,
+	DAMAGES OR OTHER LIABILITY,
+	WHETHER IN AN ACTION OF CONTRACT,
+	TORT OR OTHERWISE,
+	ARISING FROM, OUT OF OR IN CONNECTION WITH
+	THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+package main
+
+import (
+	"fmt"
+	"io/ioutil"
+	"log"
+	"os"
+	"os/exec"
+	"path/filepath"
+	"strings"
+	"testing"
+	"time"
+
+	. "github.com/onsi/gomega"
+	"github.com/stretchr/testify/suite"
+
+	. "github.com/docker/api/tests/framework"
+)
+
+type NonWinCIE2eSuite struct {
+	Suite
+}
+
+func (s *NonWinCIE2eSuite) TestKillChildOnCancel() {
+	It("should kill docker-classic if parent command is cancelled", func() {
+		out := s.ListProcessesCommand().ExecOrDie()
+		Expect(out).NotTo(ContainSubstring("docker-classic"))
+
+		dir := s.ConfigDir
+		Expect(ioutil.WriteFile(filepath.Join(dir, "Dockerfile"), []byte(`FROM alpine:3.10
+RUN sleep 100`), 0644)).To(Succeed())
+		shutdown := make(chan time.Time)
+		errs := make(chan error)
+		ctx := s.NewDockerCommand("build", "--no-cache", "-t", "test-sleep-image", ".").WithinDirectory(dir).WithTimeout(shutdown)
+		go func() {
+			_, err := ctx.Exec()
+			errs <- err
+		}()
+		err := WaitFor(time.Second, 10*time.Second, errs, func() bool {
+			out := s.ListProcessesCommand().ExecOrDie()
+			return strings.Contains(out, "docker-classic")
+		})
+		Expect(err).NotTo(HaveOccurred())
+		log.Println("Killing docker process")
+
+		close(shutdown)
+		err = WaitFor(time.Second, 12*time.Second, nil, func() bool {
+			out := s.ListProcessesCommand().ExecOrDie()
+			return !strings.Contains(out, "docker-classic")
+		})
+		Expect(err).NotTo(HaveOccurred())
+	})
+}
+
+func (s *NonWinCIE2eSuite) TestAPIServer() {
+	_, err := exec.LookPath("yarn")
+	if err != nil || os.Getenv("SKIP_NODE") != "" {
+		s.T().Skip("skipping, yarn not installed")
+	}
+	It("can run 'serve' command", func() {
+		cName := "test-example"
+		s.NewDockerCommand("context", "create", cName, "example").ExecOrDie()
+
+		//sPath := fmt.Sprintf("unix:///%s/docker.sock", s.ConfigDir)
+		sPath, cliAddress := s.getGrpcServerAndCLientAddress()
+		server, err := serveAPI(s.ConfigDir, sPath)
+		Expect(err).To(BeNil())
+		defer killProcess(server)
+
+		s.NewCommand("yarn", "install").WithinDirectory("../node-client").ExecOrDie()
+		output := s.NewCommand("yarn", "run", "start", cName, cliAddress).WithinDirectory("../node-client").ExecOrDie()
+		Expect(output).To(ContainSubstring("nginx"))
+	})
+}
+
+func (s *NonWinCIE2eSuite) getGrpcServerAndCLientAddress() (string, string) {
+	if IsWindows() {
+		return "npipe:////./pipe/clibackend", "unix:////./pipe/clibackend"
+	}
+	socketName := fmt.Sprintf("unix:///%s/docker.sock", s.ConfigDir)
+	return socketName, socketName
+}
+
+func TestE2e(t *testing.T) {
+	suite.Run(t, new(NonWinCIE2eSuite))
+}
+
+func killProcess(process *os.Process) {
+	err := process.Kill()
+	Expect(err).To(BeNil())
+}
+
+func serveAPI(configDir string, address string) (*os.Process, error) {
+	cmd := exec.Command("../../bin/docker", "--config", configDir, "serve", "--address", address)
+	err := cmd.Start()
+	if err != nil {
+		return nil, err
+	}
+	return cmd.Process, nil
+}