From 6d3e43680c8ba44e232c2c8a9dcee31a7aefdde4 Mon Sep 17 00:00:00 2001 From: Frederik Ring Date: Fri, 9 Jul 2021 09:21:42 +0200 Subject: [PATCH] add basic integration test --- .circleci/config.yml | 4 +--- .dockerignore | 1 + src/entrypoint.sh | 3 ++- test/default/docker-compose.yml | 41 +++++++++++++++++++++++++++++++++ test/default/test.sh | 15 +++++++++++- 5 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 .dockerignore mode change 100644 => 100755 test/default/test.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index 6100f32..01129a5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -14,10 +14,8 @@ jobs: - run: name: Run tests command: | - which docker - which docker-compose for test in test/**/test.sh; do - . $test + /bin/sh $test done build: diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +test diff --git a/src/entrypoint.sh b/src/entrypoint.sh index 1584ef6..10a39ed 100644 --- a/src/entrypoint.sh +++ b/src/entrypoint.sh @@ -19,6 +19,7 @@ BACKUP_PRUNING_LEEWAY="${BACKUP_PRUNING_LEEWAY:-10m}" AWS_S3_BUCKET_NAME="${AWS_S3_BUCKET_NAME:-}" AWS_ENDPOINT="${AWS_ENDPOINT:-s3.amazonaws.com}" +AWS_ENDPOINT_PROTO="${AWS_ENDPOINT_PROTO:-https}" GPG_PASSPHRASE="${GPG_PASSPHRASE:-}" @@ -29,7 +30,7 @@ EOF chmod a+x env.sh source env.sh -mc $MC_GLOBAL_OPTIONS alias set backup-target "https://$AWS_ENDPOINT" "$AWS_ACCESS_KEY_ID" "$AWS_SECRET_ACCESS_KEY" +mc $MC_GLOBAL_OPTIONS alias set backup-target "$AWS_ENDPOINT_PROTO://$AWS_ENDPOINT" "$AWS_ACCESS_KEY_ID" "$AWS_SECRET_ACCESS_KEY" # Add our cron entry, and direct stdout & stderr to Docker commands stdout echo "Installing cron.d entry with expression $BACKUP_CRON_EXPRESSION." diff --git a/test/default/docker-compose.yml b/test/default/docker-compose.yml index e69de29..bd08214 100644 --- a/test/default/docker-compose.yml +++ b/test/default/docker-compose.yml @@ -0,0 +1,41 @@ +version: '3' + +services: + minio: + image: minio/minio:RELEASE.2020-08-04T23-10-51Z + environment: + MINIO_ROOT_USER: test + MINIO_ROOT_PASSWORD: test + MINIO_ACCESS_KEY: test + MINIO_SECRET_KEY: GMusLtUmILge2by+z890kQ + entrypoint: /bin/ash -c 'mkdir -p /data/backup && minio server /data' + volumes: + - backup_data:/data + + backup: &default_backup_service + image: offen/docker-volume-backup:canary + depends_on: + - minio + restart: always + environment: + AWS_ACCESS_KEY_ID: test + AWS_SECRET_ACCESS_KEY: GMusLtUmILge2by+z890kQ + AWS_ENDPOINT: minio:9000 + AWS_ENDPOINT_PROTO: http + AWS_S3_BUCKET_NAME: backup + BACKUP_FILENAME: test.tar.gz + volumes: + - app_data:/backup/app_data:ro + - /var/run/docker.sock:/var/run/docker.sock + + offen: + image: offen/offen:latest + labels: + - docker-volume-backup.stop-during-backup=true + volumes: + - app_data:/var/opt/offen + + +volumes: + backup_data: + app_data: diff --git a/test/default/test.sh b/test/default/test.sh old mode 100644 new mode 100755 index 499f26e..0b6a459 --- a/test/default/test.sh +++ b/test/default/test.sh @@ -2,4 +2,17 @@ set -e -echo "all is well" +cd $(dirname $0) + +docker-compose up -d +sleep 5 + +docker-compose exec backup backup + +docker run --rm -it \ + -v default_backup_data:/data alpine \ + ash -c 'tar -xf /data/backup/test.tar.gz && test -f /backup/app_data/offen.db' + +docker-compose down --volumes + +echo "Test passed"