Files
kra-new/deploy/docker/wait-backend.test.sh
T

46 lines
1.5 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
SCRIPT=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)/wait-backend.sh
TEST_TMP=$(cd -- "${TMPDIR:-/tmp}" && pwd -P)
TEST_ROOT=$(mktemp -d "$TEST_TMP/sw-backend-readiness.XXXXXX")
cleanup() {
[[ "$TEST_ROOT" == "$TEST_TMP/sw-backend-readiness."* ]] || exit 1
rm -rf -- "$TEST_ROOT"
}
trap cleanup EXIT
mkdir "$TEST_ROOT/bin"
cat > "$TEST_ROOT/bin/docker" <<'DOCKER'
#!/usr/bin/env bash
set -euo pipefail
[[ "$1" == inspect && "${!#}" == sw2-backend ]]
case "$TEST_MODE" in
exited) echo 'false 0' ;;
restarted) echo 'true 1' ;;
inspect-failed) exit 1 ;;
*) echo 'true 0' ;;
esac
DOCKER
cat > "$TEST_ROOT/bin/curl" <<'CURL'
#!/usr/bin/env bash
set -euo pipefail
count=$(cat "$TEST_ROOT/polls")
count=$((count + 1))
echo "$count" > "$TEST_ROOT/polls"
[[ "$TEST_MODE" == ready || "$count" -gt 60 ]]
CURL
printf '#!/usr/bin/env bash\nexit 0\n' > "$TEST_ROOT/bin/sleep"
chmod +x "$TEST_ROOT/bin/"*
export TEST_ROOT PATH="$TEST_ROOT/bin:$PATH"
for scenario in ready long-migration exited restarted inspect-failed; do
export TEST_MODE="$scenario"
echo 0 > "$TEST_ROOT/polls"
result=0
bash "$SCRIPT" > "$TEST_ROOT/output" 2>&1 || result=$?
case "$scenario" in
ready) [[ "$result" == 0 && "$(cat "$TEST_ROOT/polls")" == 1 ]] ;;
long-migration) [[ "$result" == 0 && "$(cat "$TEST_ROOT/polls")" == 61 ]] ;;
*) [[ "$result" != 0 && "$(cat "$TEST_ROOT/polls")" == 0 ]] ;;
esac
printf 'passed: %s\n' "$scenario"
done