#! /bin/bash set -eu DOCKER_IMAGE=$1 NETWORK_NAME=local_testnet N=4 PROXY_APP=persistent_kvstore IPV=${2:-4} # Default to IPv4 if [[ "$IPV" != "4" && "$IPV" != "6" ]]; then echo "IP version must be 4 or 6" >&2 exit 1 fi # stop the existing testnet and remove local network set +e bash test/p2p/local_testnet_stop.sh "$NETWORK_NAME" "$N" set -e PERSISTENT_PEERS=$(bash test/p2p/persistent_peers.sh $IPV $N $DOCKER_IMAGE) # start the testnet on a local network # NOTE we re-use the same network for all tests bash test/p2p/local_testnet_start.sh "$DOCKER_IMAGE" "$NETWORK_NAME" "$IPV" "$N" "$PROXY_APP" "$PERSISTENT_PEERS" # test basic connectivity and consensus # start client container and check the num peers and height for all nodes bash test/p2p/client.sh "$DOCKER_IMAGE" "$NETWORK_NAME" "$IPV" basic "test/p2p/basic/test.sh $IPV $N" # test atomic broadcast: # start client container and test sending a tx to each node bash test/p2p/client.sh "$DOCKER_IMAGE" "$NETWORK_NAME" "$IPV" ab "test/p2p/atomic_broadcast/test.sh $IPV $N" # test fast sync (from current state of network): # for each node, kill it and readd via fast sync bash test/p2p/fast_sync/test.sh "$DOCKER_IMAGE" "$NETWORK_NAME" "$IPV" "$N" "$PROXY_APP" # test double sign risk reduction for each node bash test/p2p/dsrr/test.sh "$DOCKER_IMAGE" "$NETWORK_NAME" "$IPV" "$N" "$PROXY_APP" # test killing all peers 3 times bash test/p2p/kill_all/test.sh "$DOCKER_IMAGE" "$NETWORK_NAME" "$IPV" "$N" 3 # test pex bash test/p2p/pex/test.sh "$DOCKER_IMAGE" "$NETWORK_NAME" "$IPV" "$N" "$PROXY_APP"