#!/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