- #!/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"
|