parent
337e19d2b4
commit
35ff532f2f
@ -0,0 +1,121 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
ROOT=$(dirname $0)/.. |
||||||
|
USER=$(whoami) |
||||||
|
|
||||||
|
. "${ROOT}/scripts/setup_bls_build_flags.sh" |
||||||
|
|
||||||
|
set -x |
||||||
|
set -eo pipefail |
||||||
|
|
||||||
|
function check_result() { |
||||||
|
find $log_folder -name leader-*.log > $log_folder/all-leaders.txt |
||||||
|
find $log_folder -name validator-*.log > $log_folder/all-validators.txt |
||||||
|
|
||||||
|
echo ====== RESULTS ====== |
||||||
|
results=$($ROOT/test/cal_tps.sh $log_folder/all-leaders.txt $log_folder/all-validators.txt) |
||||||
|
echo $results | tee -a $LOG_FILE |
||||||
|
echo $results > $log_folder/tps.log |
||||||
|
} |
||||||
|
|
||||||
|
function cleanup() { |
||||||
|
for pid in `/bin/ps -fu $USER| grep "harmony\|txgen\|soldier\|commander\|profiler\|beacon\|bootnode" | grep -v "grep" | grep -v "vi" | awk '{print $2}'`; |
||||||
|
do |
||||||
|
echo 'Killed process: '$pid |
||||||
|
$DRYRUN kill -9 $pid 2> /dev/null |
||||||
|
done |
||||||
|
# Remove bc_config.json before starting experiment. |
||||||
|
rm -f bc_config.json |
||||||
|
rm -rf ./db/harmony_* |
||||||
|
} |
||||||
|
|
||||||
|
function killnode() { |
||||||
|
local port=$1 |
||||||
|
|
||||||
|
if [ -n "port" ]; then |
||||||
|
pid=$(/bin/ps -fu $USER | grep "harmony" | grep "$port" | awk '{print $2}') |
||||||
|
echo "killing node with port: $port" |
||||||
|
$DRYRUN kill -9 $pid 2> /dev/null |
||||||
|
echo "node with port: $port is killed" |
||||||
|
fi |
||||||
|
} |
||||||
|
|
||||||
|
trap cleanup SIGINT SIGTERM |
||||||
|
|
||||||
|
function usage { |
||||||
|
local ME=$(basename $0) |
||||||
|
|
||||||
|
cat<<EOU |
||||||
|
USAGE: $ME [OPTIONS] config_file_name |
||||||
|
|
||||||
|
-h print this help message |
||||||
|
-d enable db support (default: $DB) |
||||||
|
-t toggle txgen (default: $TXGEN) |
||||||
|
-D duration txgen run duration (default: $DURATION) |
||||||
|
-m min_peers minimal number of peers to start consensus (default: $MIN) |
||||||
|
-s shards number of shards (default: $SHARDS) |
||||||
|
-k nodeport kill the node with specified port number (default: $KILLPORT) |
||||||
|
-n dryrun mode (default: $DRYRUN) |
||||||
|
-S enable sync test (default: $SYNC) |
||||||
|
-P enable libp2p peer discovery test (default: $P2P) |
||||||
|
|
||||||
|
This script will build all the binaries and start harmony and txgen based on the configuration file. |
||||||
|
|
||||||
|
EXAMPLES: |
||||||
|
|
||||||
|
$ME local_config.txt |
||||||
|
$ME -p local_config.txt |
||||||
|
|
||||||
|
EOU |
||||||
|
exit 0 |
||||||
|
} |
||||||
|
|
||||||
|
DB= |
||||||
|
TXGEN=true |
||||||
|
DURATION=90 |
||||||
|
MIN=5 |
||||||
|
SHARDS=2 |
||||||
|
KILLPORT=9004 |
||||||
|
SYNC=true |
||||||
|
DRYRUN= |
||||||
|
P2P=false |
||||||
|
|
||||||
|
while getopts "hdtD:m:s:k:nSP" option; do |
||||||
|
case $option in |
||||||
|
h) usage ;; |
||||||
|
d) DB='-db_supported' ;; |
||||||
|
t) TXGEN=false ;; |
||||||
|
D) DURATION=$OPTARG ;; |
||||||
|
m) MIN=$OPTARG ;; |
||||||
|
s) SHARDS=$OPTARG ;; |
||||||
|
k) KILLPORT=$OPTARG ;; |
||||||
|
n) DRYRUN=echo ;; |
||||||
|
S) SYNC=true ;; |
||||||
|
P) P2P=true ;; |
||||||
|
esac |
||||||
|
done |
||||||
|
|
||||||
|
shift $((OPTIND-1)) |
||||||
|
|
||||||
|
# Since `go run` will generate a temporary exe every time, |
||||||
|
# On windows, your system will pop up a network security dialog for each instance |
||||||
|
# and you won't be able to turn it off. With `go build` generating one |
||||||
|
# exe, the dialog will only pop up once at the very first time. |
||||||
|
# Also it's recommended to use `go build` for testing the whole exe. |
||||||
|
pushd $ROOT |
||||||
|
echo "compiling ..." |
||||||
|
go build -o bin/harmony cmd/harmony.go |
||||||
|
popd |
||||||
|
|
||||||
|
# Create a tmp folder for logs |
||||||
|
t=`date +"%Y%m%d-%H%M%S"` |
||||||
|
log_folder="tmp_log/log-$t" |
||||||
|
|
||||||
|
mkdir -p $log_folder |
||||||
|
LOG_FILE=$log_folder/r.log |
||||||
|
|
||||||
|
HMY_OPT= |
||||||
|
HMY_OPT2= |
||||||
|
HMY_OPT3= |
||||||
|
|
||||||
|
($DRYRUN $ROOT/bin/harmony -ip 127.0.0.1 -port 9100 -log_folder $log_folder -is_newnode $DB -min_peers $MIN $HMY_OPT $HMY_OPT2 $HMY_OPT3 -key /tmp/127.0.0.1-9100.key 2>&1 | tee -a $LOG_FILE ) & |
Loading…
Reference in new issue