From b138870433ab497e061855c30ece1e9488224c13 Mon Sep 17 00:00:00 2001 From: josebarn Date: Wed, 16 Aug 2017 08:30:40 -0300 Subject: [PATCH] first run at integ test using docker-compose --- .drone.yml | 7 +++++++ .drone.yml.sig | 2 +- api/api.go | 2 +- api/api_test.go | 2 +- docker-compose.test.yml | 21 +++++++++++++++++++++ docker-compose.yml | 19 ------------------- script/container-integ-test.sh | 13 +++++++++++++ script/drone-run-tests.sh | 13 +++++++++++++ 8 files changed, 57 insertions(+), 22 deletions(-) create mode 100644 docker-compose.test.yml delete mode 100644 docker-compose.yml create mode 100644 script/container-integ-test.sh create mode 100644 script/drone-run-tests.sh diff --git a/.drone.yml b/.drone.yml index 0563a0d..d77cae7 100644 --- a/.drone.yml +++ b/.drone.yml @@ -16,6 +16,13 @@ pipeline: commands: - go test ./api + run-tests-in-compose: + image: michalpodeszwa/docker-compose:latest + volumes: + - /var/run/docker.sock:/var/run/docker.sock + commands: + - ./script/drone-run-tests.sh api-tests + publish: image: plugins/docker repo: josebarn/hello-world diff --git a/.drone.yml.sig b/.drone.yml.sig index f875253..26cbc1c 100644 --- a/.drone.yml.sig +++ b/.drone.yml.sig @@ -1 +1 @@ -eyJhbGciOiJIUzI1NiJ9.IyBOT1RFOiBSZWZlciBkcm9uZSBHbyBleGFtcGxlIGh0dHA6Ly9yZWFkbWUuZHJvbmUuaW8vMC41L3VzYWdlL2dvbGFuZy1leGFtcGxlLwp3b3Jrc3BhY2U6CiAgYmFzZTogL2dvCiAgcGF0aDogc3JjL2dpdGh1Yi5jb20vam9zZWJhcm4vZHJvbmUtd2l0aC1nbwoKcGlwZWxpbmU6CiAgYnVpbGQ6CiAgICBpbWFnZTogJHtJTUFHRX0KICAgIGNvbW1hbmRzOgogICAgICAtIGdvIGdldCAuLy4uLgogICAgICAtIGdvIGJ1aWxkCiAgICBkZWJ1ZzogdHJ1ZQoKICB1bml0LXRlc3Q6CiAgICBpbWFnZTogJHtJTUFHRX0KICAgIGNvbW1hbmRzOgogICAgICAtIGdvIHRlc3QgLi9hcGkKCiAgcHVibGlzaDoKICAgIGltYWdlOiBwbHVnaW5zL2RvY2tlcgogICAgcmVwbzogam9zZWJhcm4vaGVsbG8td29ybGQKICAgIHRhZ3M6IFsgMS4wLjAsIDEuMCwgbGF0ZXN0IF0KICAgIGRvY2tlcmZpbGU6IC4vZG9ja2VyL0RvY2tlcmZpbGUKICAgIHNlY3JldHM6IFsgRE9DS0VSX1VTRVJOQU1FLCBET0NLRVJfUEFTU1dPUkQgXQojICAgIGRlYnVnOiB0cnVlCgptYXRyaXg6CiAgSU1BR0U6CiAgICAtIGdvbGFuZzpsYXRlc3QK.v8PewiBInrZGDzyMopv7N-zaQZ5NVPoF9UsIumRXhBo \ No newline at end of file +eyJhbGciOiJIUzI1NiJ9.IyBOT1RFOiBSZWZlciBkcm9uZSBHbyBleGFtcGxlIGh0dHA6Ly9yZWFkbWUuZHJvbmUuaW8vMC41L3VzYWdlL2dvbGFuZy1leGFtcGxlLwp3b3Jrc3BhY2U6CiAgYmFzZTogL2dvCiAgcGF0aDogc3JjL2dpdGh1Yi5jb20vam9zZWJhcm4vZHJvbmUtd2l0aC1nbwoKcGlwZWxpbmU6CiAgYnVpbGQ6CiAgICBpbWFnZTogJHtJTUFHRX0KICAgIGNvbW1hbmRzOgogICAgICAtIGdvIGdldCAuLy4uLgogICAgICAtIGdvIGJ1aWxkCiAgICBkZWJ1ZzogdHJ1ZQoKICB1bml0LXRlc3Q6CiAgICBpbWFnZTogJHtJTUFHRX0KICAgIGNvbW1hbmRzOgogICAgICAtIGdvIHRlc3QgLi9hcGkKCiAgcnVuLXRlc3RzLWluLWNvbXBvc2U6CiAgICBpbWFnZTogbWljaGFscG9kZXN6d2EvZG9ja2VyLWNvbXBvc2U6bGF0ZXN0CiAgICB2b2x1bWVzOgogICAgICAtIC92YXIvcnVuL2RvY2tlci5zb2NrOi92YXIvcnVuL2RvY2tlci5zb2NrCiAgICBjb21tYW5kczoKICAgICAgLSAuL3NjcmlwdC9kcm9uZS1ydW4tdGVzdHMuc2ggYXBpLXRlc3RzCgogIHB1Ymxpc2g6CiAgICBpbWFnZTogcGx1Z2lucy9kb2NrZXIKICAgIHJlcG86IGpvc2ViYXJuL2hlbGxvLXdvcmxkCiAgICB0YWdzOiBbIDEuMC4wLCAxLjAsIGxhdGVzdCBdCiAgICBkb2NrZXJmaWxlOiAuL2RvY2tlci9Eb2NrZXJmaWxlCiAgICBzZWNyZXRzOiBbIERPQ0tFUl9VU0VSTkFNRSwgRE9DS0VSX1BBU1NXT1JEIF0KIyAgICBkZWJ1ZzogdHJ1ZQoKbWF0cml4OgogIElNQUdFOgogICAgLSBnb2xhbmc6bGF0ZXN0Cg._TXjkyRxaAJRnzBQH_2KnnbDSEGhBW0-AD2KVu4ZKy0 \ No newline at end of file diff --git a/api/api.go b/api/api.go index ea0ec4f..76d16ef 100644 --- a/api/api.go +++ b/api/api.go @@ -28,7 +28,7 @@ func addMiddleware(mux *chi.Mux) { func addRoutes(mux *chi.Mux) { // Add a simple resource - mux.Mount("/app", AppResource{}.Routes()) + mux.Mount("/api/id", AppResource{}.Routes()) // Live a healthy life! mux.Get("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("yolo")) diff --git a/api/api_test.go b/api/api_test.go index ae32712..ff65ad8 100644 --- a/api/api_test.go +++ b/api/api_test.go @@ -17,7 +17,7 @@ func TestGetRoute(t *testing.T) { ts := httptest.NewServer(r) defer ts.Close() rx := Response{} - _, resp := testRequest(t, ts, "GET", "/app/1", nil) + _, resp := testRequest(t, ts, "GET", "/api/id/1", nil) err := json.Unmarshal([]byte(resp), &rx) if err != nil { t.Fatalf("Response incorrect form ", resp) diff --git a/docker-compose.test.yml b/docker-compose.test.yml new file mode 100644 index 0000000..2c44700 --- /dev/null +++ b/docker-compose.test.yml @@ -0,0 +1,21 @@ +version: '2' + +services: + + app: + build: + context: . + dockerfile: ./docker/Dockerfile + ports: + - "8080:8080" + + sut: + build: + context: . + dockerfile: ./docker/Dockerfile.test + links: + - "app:target" + depends_on: + - app + environment: + SUT_TARGET: app diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 1205871..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,19 +0,0 @@ -version: '2' - -services: - - app: - container_name: "hello" - depends_on: - - db - build: - context: . - dockerfile: ./docker/Dockerfile - ports: - - "3000:3000" - networks: - - testnet - -networks: - testnet: - driver: bridge diff --git a/script/container-integ-test.sh b/script/container-integ-test.sh new file mode 100644 index 0000000..ce2d7b6 --- /dev/null +++ b/script/container-integ-test.sh @@ -0,0 +1,13 @@ +sleep 5 + +ping -c 5 target + +curl -X POST target:8080/api/id/1 + +if curl -X POST target:8080/api/id/1 | grep -q '{"op":"POST","id":1}'; then + echo "Tests passed!" + exit 0 +else + echo "Tests failed!" + exit 1 +fi diff --git a/script/drone-run-tests.sh b/script/drone-run-tests.sh new file mode 100644 index 0000000..0701e14 --- /dev/null +++ b/script/drone-run-tests.sh @@ -0,0 +1,13 @@ +#!/bin/sh +# remove old containers +docker-compose -p ci --file docker-compose.test.yml rm -f +# run tests +docker-compose -p ci --file docker-compose.test.yml up --build + +echo "Inspecting exited containers:" +docker-compose -p ci --file docker-compose.test.yml ps +docker-compose -p ci --file docker-compose.test.yml ps -q | xargs docker inspect -f '{{ .State.ExitCode }}' | while read code; do + if [ "$code" != "0" ]; then + exit $code + fi +done