Files
easyai/scripts/test-redis-persistence-guard.sh
T

36 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
tmp_dir="$(mktemp -d)"
trap 'rm -rf "$tmp_dir"' EXIT
cat > "$tmp_dir/docker" <<'SH'
#!/usr/bin/env bash
case "$1" in
info) [ "${DOCKER_STUB_STATE:-}" != unavailable ] ;;
container) [ "${DOCKER_STUB_STATE:-}" != absent ] ;;
inspect) printf '%s\n' "${DOCKER_STUB_MOUNT:-}" ;;
*) exit 2 ;;
esac
SH
chmod +x "$tmp_dir/docker"
export PATH="$tmp_dir:$PATH"
DOCKER_STUB_STATE=absent "$script_dir/check-redis-persistence.sh"
DOCKER_STUB_MOUNT="bind|$(cd "$script_dir/../data" && pwd -P)/redis" "$script_dir/check-redis-persistence.sh"
for state in unavailable no_mount wrong_mount; do
case "$state" in
unavailable) export DOCKER_STUB_STATE=unavailable DOCKER_STUB_MOUNT='' ;;
no_mount) export DOCKER_STUB_STATE=present DOCKER_STUB_MOUNT='' ;;
wrong_mount) export DOCKER_STUB_STATE=present DOCKER_STUB_MOUNT='bind|/other/redis' ;;
esac
if "$script_dir/check-redis-persistence.sh" > /dev/null 2>&1; then
echo "unsafe Redis state accepted: $state" >&2
exit 1
fi
done
echo 'Redis persistence guard tests passed'