#!/usr/bin/env bash # Requires: killall command and jq JSON processor. # Get the parent directory of where this script is. SOURCE="${BASH_SOURCE[0]}" while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done DIR="$( cd -P "$( dirname "$SOURCE" )/../.." && pwd )" # Change into that dir because we expect that. cd "$DIR" || exit 1 # Make sure we have a tendermint command. if ! hash tendermint 2>/dev/null; then make install fi # Make sure we have a cutWALUntil binary. cutWALUntil=./scripts/cutWALUntil/cutWALUntil cutWALUntilDir=$(dirname $cutWALUntil) if ! hash $cutWALUntil 2>/dev/null; then cd "$cutWALUntilDir" && go build && cd - || exit 1 fi TMHOME=$(mktemp -d) export TMHOME="$TMHOME" if [[ ! -d "$TMHOME" ]]; then echo "Could not create temp directory" exit 1 else echo "TMHOME: ${TMHOME}" fi # TODO: eventually we should replace with `tendermint init --test` DIR_TO_COPY=$HOME/.tendermint_test/consensus_state_test if [ ! -d "$DIR_TO_COPY" ]; then echo "$DIR_TO_COPY does not exist. Please run: go test ./consensus" exit 1 fi echo "==> Copying ${DIR_TO_COPY} to ${TMHOME} directory..." cp -r "$DIR_TO_COPY"/* "$TMHOME" # preserve original genesis file because later it will be modified (see small_block2) cp "$TMHOME/genesis.json" "$TMHOME/genesis.json.bak" function reset(){ echo "==> Resetting tendermint..." tendermint unsafe_reset_all cp "$TMHOME/genesis.json.bak" "$TMHOME/genesis.json" } reset # function empty_block(){ # echo "==> Starting tendermint..." # tendermint node --proxy_app=persistent_dummy &> /dev/null & # sleep 5 # echo "==> Killing tendermint..." # killall tendermint # echo "==> Copying WAL log..." # $cutWALUntil "$TMHOME/data/cs.wal/wal" 1 consensus/test_data/new_empty_block.cswal # mv consensus/test_data/new_empty_block.cswal consensus/test_data/empty_block.cswal # reset # } function many_blocks(){ bash scripts/txs/random.sh 1000 36657 &> /dev/null & PID=$! echo "==> Starting tendermint..." tendermint node --proxy_app=persistent_dummy &> /dev/null & sleep 10 echo "==> Killing tendermint..." kill -9 $PID killall tendermint echo "==> Copying WAL log..." $cutWALUntil "$TMHOME/data/cs.wal/wal" 6 consensus/test_data/new_many_blocks.cswal mv consensus/test_data/new_many_blocks.cswal consensus/test_data/many_blocks.cswal reset } # function small_block1(){ # bash scripts/txs/random.sh 1000 36657 &> /dev/null & # PID=$! # echo "==> Starting tendermint..." # tendermint node --proxy_app=persistent_dummy &> /dev/null & # sleep 10 # echo "==> Killing tendermint..." # kill -9 $PID # killall tendermint # echo "==> Copying WAL log..." # $cutWALUntil "$TMHOME/data/cs.wal/wal" 1 consensus/test_data/new_small_block1.cswal # mv consensus/test_data/new_small_block1.cswal consensus/test_data/small_block1.cswal # reset # } # # block part size = 512 # function small_block2(){ # cat "$TMHOME/genesis.json" | jq '. + {consensus_params: {block_size_params: {max_bytes: 22020096}, block_gossip_params: {block_part_size_bytes: 512}}}' > "$TMHOME/new_genesis.json" # mv "$TMHOME/new_genesis.json" "$TMHOME/genesis.json" # bash scripts/txs/random.sh 1000 36657 &> /dev/null & # PID=$! # echo "==> Starting tendermint..." # tendermint node --proxy_app=persistent_dummy &> /dev/null & # sleep 5 # echo "==> Killing tendermint..." # kill -9 $PID # killall tendermint # echo "==> Copying WAL log..." # $cutWALUntil "$TMHOME/data/cs.wal/wal" 1 consensus/test_data/new_small_block2.cswal # mv consensus/test_data/new_small_block2.cswal consensus/test_data/small_block2.cswal # reset # } case "$1" in # "small_block1") # small_block1 # ;; # "small_block2") # small_block2 # ;; # "empty_block") # empty_block # ;; "many_blocks") many_blocks ;; *) # small_block1 # small_block2 # empty_block many_blocks esac echo "==> Cleaning up..." rm -rf "$TMHOME"