Allow running ECS E2E tests locally

Signed-off-by: Guillaume Tardif <guillaume.tardif@docker.com>
This commit is contained in:
Guillaume Tardif 2020-08-20 09:56:26 +02:00
parent 3a83d85d7a
commit d49d4473c3
2 changed files with 33 additions and 10 deletions

View File

@ -48,6 +48,7 @@ make e2e-local
```
This requires a local Docker Engine running
Local ACI E2E tests:
```
AZURE_TENANT_ID="xxx" AZURE_CLIENT_ID="yyy" AZURE_CLIENT_SECRET="yyy" make e2e-aci
```
@ -65,6 +66,13 @@ You can also run a single ACI test from the test suite:
AZURE_TENANT_ID="xxx" AZURE_CLIENT_ID="yyy" AZURE_CLIENT_SECRET="yyy" make E2E_TEST=TestContainerRun e2e-aci
```
Local ECS E2E tests:
```
TEST_AWS_PROFILE=myProfile TEST_AWS_REGION=eu-west-3 make e2e-ecs
```
This requires a valid AWS profile defined in ~/.aws/credentials.
## Release
To create a new release:

View File

@ -18,7 +18,6 @@ package main
import (
"fmt"
"gotest.tools/v3/assert"
"io/ioutil"
"net/http"
"os"
@ -27,6 +26,8 @@ import (
"testing"
"time"
"gotest.tools/v3/assert"
. "github.com/docker/api/tests/framework"
"gotest.tools/v3/icmd"
)
@ -52,12 +53,24 @@ func TestCompose(t *testing.T) {
stack := contextName
t.Run("create context", func(t *testing.T) {
profile := contextName
region := os.Getenv("AWS_DEFAULT_REGION")
secretKey := os.Getenv("AWS_SECRET_ACCESS_KEY")
keyID := os.Getenv("AWS_ACCESS_KEY_ID")
res := c.RunDockerCmd("context", "create", "ecs", contextName, "--profile", profile, "--region", region, "--secret-key", secretKey, "--key-id", keyID)
res.Assert(t, icmd.Success)
localTestProfile := os.Getenv("TEST_AWS_PROFILE")
var res *icmd.Result
if localTestProfile != "" {
region := os.Getenv("TEST_AWS_REGION")
assert.Check(t, region != "")
res = c.RunDockerCmd("context", "create", "ecs", contextName, "--profile", localTestProfile, "--region", region)
res.Assert(t, icmd.Success)
} else {
profile := contextName
region := os.Getenv("AWS_DEFAULT_REGION")
secretKey := os.Getenv("AWS_SECRET_ACCESS_KEY")
keyID := os.Getenv("AWS_ACCESS_KEY_ID")
assert.Check(t, keyID != "")
assert.Check(t, secretKey != "")
assert.Check(t, region != "")
res = c.RunDockerCmd("context", "create", "ecs", contextName, "--profile", profile, "--region", region, "--secret-key", secretKey, "--key-id", keyID)
res.Assert(t, icmd.Success)
}
res = c.RunDockerCmd("context", "use", contextName)
res.Assert(t, icmd.Expected{Out: contextName})
res = c.RunDockerCmd("context", "ls")
@ -69,21 +82,23 @@ func TestCompose(t *testing.T) {
res.Assert(t, icmd.Success)
})
var url string
t.Run("compose ps", func(t *testing.T) {
res := c.RunDockerCmd("compose", "ps", "--project-name", stack)
res.Assert(t, icmd.Success)
lines := strings.Split(res.Stdout(), "\n")
assert.Equal(t,3, len(lines))
assert.Equal(t, 3, len(lines))
fields := strings.Fields(lines[1])
assert.Equal(t, 4, len(fields))
assert.Check(t, strings.Contains(fields[0], stack))
assert.Equal(t, "nginx", fields[1])
assert.Equal(t, "1/1", fields[2])
assert.Check(t, strings.Contains(fields[3], "->80/http"))
url := "http://" + strings.Replace(fields[3], "->80/http", "", 1)
url = "http://" + strings.Replace(fields[3], "->80/http", "", 1)
})
t.Run("nginx GET", func(t *testing.T) {
r, err := http.Get(url)
assert.NilError(t, err)
assert.Equal(t, r.StatusCode, http.StatusOK)