From da75d232f4793b20a658e7fb8e20738fee471ed2 Mon Sep 17 00:00:00 2001 From: Frederik Ring Date: Sun, 11 Jul 2021 13:27:01 +0200 Subject: [PATCH] add test for using docker cli --- .circleci/config.yml | 12 +--- test/cli/run.sh | 63 ++++++++++++++++++++ test/{default => compose}/docker-compose.yml | 0 test/{default => compose}/run.sh | 2 +- test/test.sh | 15 +++++ 5 files changed, 81 insertions(+), 11 deletions(-) create mode 100755 test/cli/run.sh rename test/{default => compose}/docker-compose.yml (100%) rename test/{default => compose}/run.sh (92%) create mode 100755 test/test.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index 8e854fe..5b8e8b1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -13,17 +13,9 @@ jobs: docker build . -t offen/docker-volume-backup:canary - run: name: Run tests + working_directory: ~/docker-volume-backup/test command: | - for test in test/**/run.sh; do - echo "################################################" - echo "Now running $test" - echo "################################################" - echo "" - /bin/sh $test - echo "" - echo "$test passed" - echo "" - done + ./test.sh build: docker: diff --git a/test/cli/run.sh b/test/cli/run.sh new file mode 100755 index 0000000..dd4176f --- /dev/null +++ b/test/cli/run.sh @@ -0,0 +1,63 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +docker network create test_network +docker volume create backup_data +docker volume create app_data + +docker run -d \ + --name minio \ + --network test_network \ + --env MINIO_ROOT_USER=test \ + --env MINIO_ROOT_PASSWORD=test \ + --env MINIO_ACCESS_KEY=test \ + --env MINIO_SECRET_KEY=GMusLtUmILge2by+z890kQ \ + -v backup_data:/data \ + minio/minio:RELEASE.2020-08-04T23-10-51Z server /data + +docker exec minio mkdir -p /data/backup + +docker run -d \ + --name offen \ + --network test_network \ + -v app_data:/var/opt/offen/ \ + offen/offen:latest + +sleep 10 + +docker run -d \ + --name backup \ + --network test_network \ + -v app_data:/backup/app_data \ + -v /var/run/docker.sock:/var/run/docker.sock \ + --env AWS_ACCESS_KEY_ID=test \ + --env AWS_SECRET_ACCESS_KEY=GMusLtUmILge2by+z890kQ \ + --env AWS_ENDPOINT=minio:9000 \ + --env AWS_ENDPOINT_PROTO=http \ + --env AWS_S3_BUCKET_NAME=backup \ + --env BACKUP_FILENAME=test.tar.gz \ + --env BACKUP_CRON_EXPRESSION="0 0 5 31 2 ?" \ + offen/docker-volume-backup:canary + +docker exec backup backup + +docker run --rm -it \ + -v backup_data:/data alpine \ + ash -c 'tar -xvf /data/backup/test.tar.gz && test -f /backup/app_data/offen.db' + +echo "[TEST:PASS] Found relevant files in untared backup." + +if [ "$(docker ps -q | wc -l)" != "3" ]; then + echo "[TEST:FAIL] Expected all containers to be running post backup, instead seen:" + docker ps + exit 1 +fi + +echo "[TEST:PASS] All containers running post backup." + +docker rm $(docker stop minio offen backup) +docker volume rm backup_data app_data +docker network rm test_network diff --git a/test/default/docker-compose.yml b/test/compose/docker-compose.yml similarity index 100% rename from test/default/docker-compose.yml rename to test/compose/docker-compose.yml diff --git a/test/default/run.sh b/test/compose/run.sh similarity index 92% rename from test/default/run.sh rename to test/compose/run.sh index cabb40f..48f33ec 100755 --- a/test/default/run.sh +++ b/test/compose/run.sh @@ -10,7 +10,7 @@ sleep 5 docker-compose exec backup backup docker run --rm -it \ - -v default_backup_data:/data alpine \ + -v compose_backup_data:/data alpine \ ash -c 'tar -xf /data/backup/test.tar.gz && test -f /backup/app_data/offen.db' echo "[TEST:PASS] Found relevant files in untared backup." diff --git a/test/test.sh b/test/test.sh new file mode 100755 index 0000000..b33edd4 --- /dev/null +++ b/test/test.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +set -e + +for dir in $(ls -d -- */); do + test="${dir}run.sh" + echo "################################################" + echo "Now running $test" + echo "################################################" + echo "" + /bin/sh $test + echo "" + echo "$test passed" + echo "" +done