#!/bin/bash
|
|
|
|
DATA=$GOPATH/src/github.com/tendermint/tendermint/benchmarks/blockchain/data
|
|
if [ ! -d $DATA ]; then
|
|
echo "no data found, generating a chain... (this only has to happen once)"
|
|
|
|
tendermint init --home $DATA
|
|
cp $DATA/config.toml $DATA/config2.toml
|
|
echo "
|
|
[consensus]
|
|
timeout_commit = 0
|
|
" >> $DATA/config.toml
|
|
|
|
echo "starting node"
|
|
tendermint node \
|
|
--home $DATA \
|
|
--proxy_app kvstore \
|
|
--p2p.laddr tcp://127.0.0.1:56656 \
|
|
--rpc.laddr tcp://127.0.0.1:56657 \
|
|
--log_level error &
|
|
|
|
echo "making blocks for 60s"
|
|
sleep 60
|
|
|
|
mv $DATA/config2.toml $DATA/config.toml
|
|
|
|
kill %1
|
|
|
|
echo "done generating chain."
|
|
fi
|
|
|
|
# validator node
|
|
HOME1=$TMPDIR$RANDOM$RANDOM
|
|
cp -R $DATA $HOME1
|
|
echo "starting validator node"
|
|
tendermint node \
|
|
--home $HOME1 \
|
|
--proxy_app kvstore \
|
|
--p2p.laddr tcp://127.0.0.1:56656 \
|
|
--rpc.laddr tcp://127.0.0.1:56657 \
|
|
--log_level error &
|
|
sleep 1
|
|
|
|
# downloader node
|
|
HOME2=$TMPDIR$RANDOM$RANDOM
|
|
tendermint init --home $HOME2
|
|
cp $HOME1/genesis.json $HOME2
|
|
printf "starting downloader node"
|
|
tendermint node \
|
|
--home $HOME2 \
|
|
--proxy_app kvstore \
|
|
--p2p.laddr tcp://127.0.0.1:56666 \
|
|
--rpc.laddr tcp://127.0.0.1:56667 \
|
|
--p2p.persistent_peers 127.0.0.1:56656 \
|
|
--log_level error &
|
|
|
|
# wait for node to start up so we only count time where we are actually syncing
|
|
sleep 0.5
|
|
while curl localhost:56667/status 2> /dev/null | grep "\"latest_block_height\": 0," > /dev/null
|
|
do
|
|
printf '.'
|
|
sleep 0.2
|
|
done
|
|
echo
|
|
|
|
echo "syncing blockchain for 10s"
|
|
for i in {1..10}
|
|
do
|
|
sleep 1
|
|
HEIGHT="$(curl localhost:56667/status 2> /dev/null \
|
|
| grep 'latest_block_height' \
|
|
| grep -o ' [0-9]*' \
|
|
| xargs)"
|
|
let 'RATE = HEIGHT / i'
|
|
echo "height: $HEIGHT, blocks/sec: $RATE"
|
|
done
|
|
|
|
kill %1
|
|
kill %2
|
|
rm -rf $HOME1 $HOME2
|