Defining test sandbox in compose file allows swapping with multi node swarm setup

This commit is contained in:
Frederik Ring 2025-06-05 21:29:17 +02:00
parent 1dafa12561
commit 2b564a1fc0
3 changed files with 54 additions and 37 deletions

15
test/docker-compose.yml Normal file
View file

@ -0,0 +1,15 @@
services:
manager:
privileged: true
image: offen/docker-volume-backup:test-sandbox
environment:
DOCKER_TLS_CERTDIR: ''
volumes:
- $SOURCE:/code
- $TARBALL:/cache/image.tar.gz
- docker_volume_backup_test_sandbox_image:/var/lib/docker/image
- docker_volume_backup_test_sandbox_overlay2:/var/lib/docker/overlay2
volumes:
docker_volume_backup_test_sandbox_image:
docker_volume_backup_test_sandbox_overlay2:

28
test/swarm.yml Normal file
View file

@ -0,0 +1,28 @@
services:
node1:
image: docker:24-dind
privileged: true
environment:
- DOCKER_TLS_CERTDIR=
networks:
- dindnet
node2:
image: docker:24-dind
privileged: true
environment:
- DOCKER_TLS_CERTDIR=
networks:
- dindnet
node3:
image: docker:24-dind
privileged: true
environment:
- DOCKER_TLS_CERTDIR=
networks:
- dindnet
networks:
dindnet:
driver: bridge

View file

@ -12,12 +12,7 @@ trap finish EXIT INT TERM
finish () {
rm -rf $(dirname $tarball)
if [ ! -z $(docker ps -aq --filter=name=$sandbox) ]; then
docker rm -f $(docker stop $sandbox)
fi
if [ ! -z $(docker volume ls -q --filter=name="^${sandbox}\$") ]; then
docker volume rm $sandbox
fi
docker compose down
}
docker build -t offen/docker-volume-backup:test-sandbox .
@ -41,41 +36,20 @@ for dir in $(find $find_args | sort); do
echo ""
test="${dir}/run.sh"
docker_run_args="--name "$sandbox" --detach \
--privileged \
-v $(dirname $(pwd)):/code \
-v $tarball:/cache/image.tar.gz \
-v $sandbox:/var/lib/docker"
export TARBALL=$tarball
export SOURCE=$(dirname $(pwd))
docker compose up -d
if [ -z "$NO_IMAGE_CACHE" ]; then
docker_run_args="$docker_run_args \
-v "${sandbox}_image":/var/lib/docker/image \
-v "${sandbox}_overlay2":/var/lib/docker/overlay2"
fi
docker run $docker_run_args offen/docker-volume-backup:test-sandbox
retry_counter=0
until timeout 5 docker exec $sandbox /bin/sh -c 'docker info' > /dev/null 2>&1; do
if [ $retry_counter -gt 20 ]; then
echo "Gave up waiting for Docker daemon to become ready after 20 attempts"
exit 1
fi
if [ "$(docker inspect $sandbox --format '{{ .State.Running }}')" = "false" ]; then
docker rm $sandbox
docker run $docker_run_args offen/docker-volume-backup:test-sandbox
fi
sleep 0.5
retry_counter=$((retry_counter+1))
until $(docker compose exec manager /bin/sh -c 'docker info' > /dev/null 2>&1)
do
echo "Docker daemon not ready yet, retrying in 5s"
sleep 5
done
docker exec $sandbox /bin/sh -c "docker load -i /cache/image.tar.gz"
docker exec -e TEST_VERSION=$IMAGE_TAG $sandbox /bin/sh -c "/code/test/$test"
docker compose exec manager /bin/sh -c "docker load -i /cache/image.tar.gz"
docker compose exec -e TEST_VERSION=$IMAGE_TAG manager /bin/sh -c "/code/test/$test"
docker rm $(docker stop $sandbox)
docker volume rm $sandbox
docker compose down
echo ""
echo "$test passed"
echo ""