#!/bin/bash set -e set -x shopt -s expand_aliases export RUBYOPT="-W0" alias zold="zold --network=test" alias zold-stress="$1 --network=test" function reserve_port { python -c 'import socket; s=socket.socket(); s.bind(("", 0)); print(s.getsockname()[1]); s.close()' } function wait_for_url { i=0 while ! curl --silent --fail $1 > /dev/null; do ((i++)) || sleep 0 if ((i==30)); then echo "URL $1 is not available after ${i} attempts" exit 12 fi sleep 1 done } function wait_for_port { i=0 while ! nc -z localhost $1; do ((i++)) || sleep 0 if ((i==30)); then echo "Port $1 is not available after ${i} attempts" exit 13 fi sleep 1 done } function halt_nodes { for p in "$@"; do pid=$(curl --silent "http://localhost:$p/pid?halt=test" || echo 'absent') if [[ "${pid}" =~ ^[0-9]+$ ]]; then i=0 while kill -0 ${pid}; do ((i++)) || sleep 0 if ((i==30)); then echo "Process ${pid} didn't die, it's a bug" exit 15 fi echo "Still waiting for process ${pid} to die, attempt no.${i}" sleep 1 done echo "Process ${pid} is dead!" fi echo "Node at TCP port ${p} stopped!" done }