Переглянути джерело

feat(test): run e2e tests on travis

Nils Wisiol 7 роки тому
батько
коміт
b6587aa945
3 змінених файлів з 37 додано та 64 видалено
  1. 37 17
      .travis.yml
  2. 0 1
      docker-compose.test-api.yml
  3. 0 46
      test-api

+ 37 - 17
.travis.yml

@@ -1,8 +1,10 @@
+language: node_js
 sudo: required
 
+node_js:
+- "node"
+
 env:
-  matrix:
-   - DOCKER_COMPOSE_VERSION: 1.9.0
   global:
    - DESECSTACK_DOMAIN=your.hostname.example.com
    - DESECSTACK_API_ADMIN=john.doe@example.com
@@ -21,30 +23,48 @@ env:
    - DESECSTACK_DB_SUBJECT_ns2replication=9Fn33T5yGukjnrtj
    - DESECSTACK_NSLORD_APIKEY=9Fn33T5yGukjekwjew
    - DESECSTACK_NSMASTER_APIKEY=LLq1orOQuXCINUz4TV
-   - DESECSTACK_IPV4_REAR_PREFIX16=172.19
-   - DESECSTACK_IPV6_SUBNET=fd80::/16
-   - DESECSTACK_IPV6_ADDRESS=fd80::1
-   - DESECSTACK_WWW_CERTS=/dev/null
-   - DESECSTACK_DBMASTER_CERTS=/dev/null
+   - DESECSTACK_IPV4_REAR_PREFIX16=172.16
+   - DESECSTACK_IPV6_SUBNET=bade:affe:dead:beef:b011::/80
+   - DESECSTACK_IPV6_ADDRESS=bade:affe:dead:beef:b011:0642:ac10:0080
+   - DESECSTACK_WWW_CERTS=./certs
+   - DESECSTACK_DBMASTER_CERTS=./dbmastercerts
    - DESECSTACK_NORECAPTCHA_SITE_KEY=9Fn33T5yGulkjhdidid
    - DESECSTACK_NORECAPTCHA_SECRET_KEY=9Fn33T5yGulkjhoiwhetoi
 
-language: python
-
 services:
   - docker
 
 before_install:
-  # Get our own docker-compose
-  - sudo rm /usr/local/bin/docker-compose
-  - curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose
-  - chmod +x docker-compose
-  - sudo mv docker-compose /usr/local/bin
   # Get web content
   - rm -f static
   - git clone https://github.com/desec-io/desec-static.git static
-  - mkdir static/ultima
-  - docker-compose build --no-cache --pull
+  - mkdir static/ultima certs dbmastercerts
+
+  # Prepare images
+  # we build them separately to get timing information from travis
+
+  # live images
+  - docker-compose build dblord
+  - docker-compose build dbmaster
+  - docker-compose build dbapi
+  - docker-compose build nslord
+  - docker-compose build nsmaster
+  - docker-compose build api
+  - docker-compose build www
+
+  # mock images
+  - docker-compose -f docker-compose.yml -f docker-compose.test-e2e.yml build static
+
+  # test images
+  - docker-compose -f docker-compose.yml -f docker-compose.test-e2e.yml build test-e2e
 
 script:
-  - ./test-api
+  # e2e tests
+  - docker-compose -f docker-compose.yml -f docker-compose.test-e2e.yml run -T test-e2e bash -c "./apiwait 45 && mocha ./spec"
+
+  # API tests
+  - docker-compose -f docker-compose.yml -f docker-compose.test-api.yml run -T api bash -c "./entrypoint-tests.sh"
+
+after_failure:
+  - docker-compose ps
+  - docker-compose logs

+ 0 - 1
docker-compose.test-api.yml

@@ -3,7 +3,6 @@ version: '2.1'
 # mostly extending from main .yml
 services:
   api:
-    command: "./entrypoint-tests.sh"
     logging:
       driver: "json-file"
     restart: "no"

+ 0 - 46
test-api

@@ -1,46 +0,0 @@
-#!/usr/bin/env bash
-
-if [ "$1" = "reset" ]
-then
-  if [ ! -z "$(docker volume ls | grep desecstack_dbapi)" ]
-  then
-    echo "removing dbapi volume"
-    docker volume rm desecstack_dbapi_mysql || \
-        (
-            echo "removing dbapi container"
-            # remove container that has uses this volume
-            CONTAINER="$(docker volume rm desecstack_dbapi_mysql |& egrep -o '[a-f0-9]{64}')"
-            docker rm -f $CONTAINER
-            echo "removing dbapi volume (2nd try)"
-            docker volume rm desecstack_dbapi_mysql
-        )
-  fi
-fi
-
-if [ -z "$(docker volume ls | grep desecstack_dbapi)" ]
-then
-  echo "NO DBAPI FOUND, PREPARING DBAPI"
-  docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.test.yml build dbapi
-  docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.test.yml up -d dbapi
-  sleep 60
-fi &
-
-if [ -z "$(docker volume ls | grep 'desecstack_dblord')" ]
-then
-  echo "NO NSLORD/NSMASTER FOUND, PREPARING"
-  docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.test.yml build dblord nslord
-  docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.test.yml up -d dblord
-  sleep 60
-  docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.test.yml up -d nslord
-  sleep 10
-fi &
-
-wait
-
-docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.test.yml build api
-docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.test.yml up --abort-on-container-exit api
-
-docker-compose ps
-
-exit $(docker-compose ps -q | xargs docker inspect -f '{{ .State.ExitCode }}' | grep -v 0 | wc -l | tr -d ' ')
-