1
0
mirror of https://github.com/offen/docker-volume-backup.git synced 2025-11-23 21:44:40 +02:00
Files
docker-volume-backup/test/test.sh
Frederik Ring 7ab06cea59 Current test setup is too restrictive, allow running a series of executables in different contexts instead (#597)
* Current test setup is too restrictive, allow running a series of executables in different contexts instead

* Split existing tests that test against swarm
2025-06-11 19:46:41 +02:00

74 lines
2.1 KiB
Bash
Executable File

#!/bin/sh
set -e
MATCH_PATTERN=$1
IMAGE_TAG=${IMAGE_TAG:-canary}
sandbox="docker_volume_backup_test_sandbox"
tarball="$(mktemp -d)/image.tar.gz"
compose_profile="default"
trap finish EXIT INT TERM
finish () {
rm -rf $(dirname $tarball)
docker compose --profile $compose_profile down
}
docker build -t offen/docker-volume-backup:test-sandbox .
if [ ! -z "$BUILD_IMAGE" ]; then
docker build -t offen/docker-volume-backup:$IMAGE_TAG $(dirname $(pwd))
fi
docker save offen/docker-volume-backup:$IMAGE_TAG -o $tarball
find_args="-mindepth 1 -maxdepth 1 -type d"
if [ ! -z "$MATCH_PATTERN" ]; then
find_args="$find_args -name $MATCH_PATTERN"
fi
for dir in $(find $find_args | sort); do
dir=$(echo $dir | cut -c 3-)
echo "################################################"
echo "Now running ${dir}"
echo "################################################"
echo ""
export TARBALL=$tarball
export SOURCE=$(dirname $(pwd))
if [ -f ${dir}/.multinode ]; then
compose_profile="multinode"
fi
docker compose --profile $compose_profile up -d --wait
if [ -f "${dir}/.swarm" ]; then
docker compose exec manager docker swarm init
elif [ -f "${dir}/.multinode" ]; then
docker compose exec manager docker swarm init
manager_ip=$(docker compose exec manager docker node inspect $(docker compose exec manager docker node ls -q) --format '{{ .Status.Addr }}')
token=$(docker compose exec manager docker swarm join-token -q worker)
docker compose exec worker1 docker swarm join --token $token $manager_ip:2377
docker compose exec worker2 docker swarm join --token $token $manager_ip:2377
fi
for svc in $(docker compose ps -q); do
docker exec $svc /bin/sh -c "docker load -i /cache/image.tar.gz"
done
for executable in $(find $dir -type f -executable | sort); do
context="manager"
if [ -f "$executable.context" ]; then
context=$(cat "$executable.context")
fi
docker compose exec -e TEST_VERSION=$IMAGE_TAG $context /bin/sh -c "/code/$executable"
done
docker compose --profile $compose_profile down
echo ""
echo "$dir passed"
echo ""
done