46 lines
1.5 KiB
Bash
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
|