#! /bin/bash
|
|
set -u
|
|
|
|
N=$1
|
|
|
|
###################################################################
|
|
# wait for all peers to come online
|
|
# for each peer:
|
|
# wait to have N-1 peers
|
|
# wait to be at height > 1
|
|
###################################################################
|
|
|
|
# wait 60s per step per peer
|
|
MAX_SLEEP=60
|
|
|
|
# wait for everyone to come online
|
|
echo "Waiting for nodes to come online"
|
|
for i in `seq 1 $N`; do
|
|
addr=$(test/p2p/ip.sh $i):46657
|
|
curl -s $addr/status > /dev/null
|
|
ERR=$?
|
|
COUNT=0
|
|
while [ "$ERR" != 0 ]; do
|
|
sleep 1
|
|
curl -s $addr/status > /dev/null
|
|
ERR=$?
|
|
COUNT=$((COUNT+1))
|
|
if [ "$COUNT" -gt "$MAX_SLEEP" ]; then
|
|
echo "Waited too long for node $i to come online"
|
|
exit 1
|
|
fi
|
|
done
|
|
echo "... node $i is up"
|
|
done
|
|
|
|
echo ""
|
|
# wait for each of them to sync up
|
|
for i in `seq 1 $N`; do
|
|
addr=$(test/p2p/ip.sh $i):46657
|
|
N_1=$(($N - 1))
|
|
|
|
# - assert everyone has N-1 other peers
|
|
N_PEERS=`curl -s $addr/net_info | jq '.result.peers | length'`
|
|
COUNT=0
|
|
while [ "$N_PEERS" != $N_1 ]; do
|
|
echo "Waiting for node $i to connect to all peers ..."
|
|
sleep 1
|
|
N_PEERS=`curl -s $addr/net_info | jq '.result.peers | length'`
|
|
COUNT=$((COUNT+1))
|
|
if [ "$COUNT" -gt "$MAX_SLEEP" ]; then
|
|
echo "Waited too long for node $i to connect to all peers"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# - assert block height is greater than 1
|
|
BLOCK_HEIGHT=`curl -s $addr/status | jq .result.latest_block_height`
|
|
COUNT=0
|
|
while [ "$BLOCK_HEIGHT" -le 1 ]; do
|
|
echo "Waiting for node $i to commit a block ..."
|
|
sleep 1
|
|
BLOCK_HEIGHT=`curl -s $addr/status | jq .result.latest_block_height`
|
|
COUNT=$((COUNT+1))
|
|
if [ "$COUNT" -gt "$MAX_SLEEP" ]; then
|
|
echo "Waited too long for node $i to commit a block"
|
|
exit 1
|
|
fi
|
|
done
|
|
echo "Node $i is connected to all peers and at block $BLOCK_HEIGHT"
|
|
done
|
|
|
|
echo ""
|
|
echo "PASS"
|
|
echo ""
|