diff --git a/services/docstore/buildscript.txt b/services/docstore/buildscript.txt index 48c7852d74..a8929bd59f 100644 --- a/services/docstore/buildscript.txt +++ b/services/docstore/buildscript.txt @@ -1,6 +1,6 @@ docstore --acceptance-creds=None ---dependencies=mongo +--dependencies=mongo,gcs --docker-repos=gcr.io/overleaf-ops --env-add= --env-pass-through= diff --git a/services/docstore/docker-compose.ci.yml b/services/docstore/docker-compose.ci.yml index 53da6509c7..3510433789 100644 --- a/services/docstore/docker-compose.ci.yml +++ b/services/docstore/docker-compose.ci.yml @@ -16,19 +16,22 @@ services: test_acceptance: build: . image: ci/$PROJECT_NAME:$BRANCH_NAME-$BUILD_NUMBER - extends: - file: docker-compose-config.yml - service: ci environment: ELASTIC_SEARCH_DSN: es:9200 REDIS_HOST: redis MONGO_HOST: mongo POSTGRES_HOST: postgres + GCS_API_ENDPOINT: gcs:9090 + GCS_API_SCHEME: http + GCS_PROJECT_ID: fake + STORAGE_EMULATOR_HOST: http://gcs:9090/storage/v1 MOCHA_GREP: ${MOCHA_GREP} NODE_ENV: test depends_on: mongo: condition: service_healthy + gcs: + condition: service_healthy user: node command: npm run test:acceptance:_run @@ -42,3 +45,7 @@ services: user: root mongo: image: mongo:3.6 + gcs: + build: + context: test/acceptance/deps + dockerfile: Dockerfile.fake-gcs diff --git a/services/docstore/docker-compose.yml b/services/docstore/docker-compose.yml index 87ea601dd0..02bf2410af 100644 --- a/services/docstore/docker-compose.yml +++ b/services/docstore/docker-compose.yml @@ -17,18 +17,19 @@ services: user: node test_acceptance: - image: node:10.21.0 + image: node:10 volumes: - .:/app working_dir: /app - extends: - file: docker-compose-config.yml - service: dev environment: ELASTIC_SEARCH_DSN: es:9200 REDIS_HOST: redis MONGO_HOST: mongo POSTGRES_HOST: postgres + GCS_API_ENDPOINT: gcs:9090 + GCS_API_SCHEME: http + GCS_PROJECT_ID: fake + STORAGE_EMULATOR_HOST: http://gcs:9090/storage/v1 MOCHA_GREP: ${MOCHA_GREP} LOG_LEVEL: ERROR NODE_ENV: test @@ -36,8 +37,14 @@ services: depends_on: mongo: condition: service_healthy + gcs: + condition: service_healthy command: npm run test:acceptance mongo: image: mongo:3.6 + gcs: + build: + context: test/acceptance/deps + dockerfile: Dockerfile.fake-gcs diff --git a/services/docstore/test/acceptance/deps/Dockerfile.fake-gcs b/services/docstore/test/acceptance/deps/Dockerfile.fake-gcs new file mode 100644 index 0000000000..0e6de7e735 --- /dev/null +++ b/services/docstore/test/acceptance/deps/Dockerfile.fake-gcs @@ -0,0 +1,5 @@ +FROM fsouza/fake-gcs-server:latest +RUN apk add --update --no-cache curl +COPY healthcheck.sh /healthcheck.sh +HEALTHCHECK --interval=1s --timeout=1s --retries=30 CMD /healthcheck.sh http://localhost:9090 +CMD ["--port=9090", "--scheme=http"] diff --git a/services/docstore/test/acceptance/deps/healthcheck.sh b/services/docstore/test/acceptance/deps/healthcheck.sh new file mode 100644 index 0000000000..cd19cea637 --- /dev/null +++ b/services/docstore/test/acceptance/deps/healthcheck.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +# health check to allow 404 status code as valid +STATUSCODE=$(curl --silent --output /dev/null --write-out "%{http_code}" $1) +# will be 000 on non-http error (e.g. connection failure) +if test $STATUSCODE -ge 500 || test $STATUSCODE -lt 200; then + exit 1 +fi +exit 0