solana/net/remote/remote-sanity.sh

139 lines
2.8 KiB
Bash
Raw Normal View History

2018-09-07 08:46:20 -07:00
#!/bin/bash -e
2018-09-04 23:24:33 -07:00
#
# This script is to be run on the leader node
#
2018-09-03 22:33:40 -07:00
2018-09-04 09:21:03 -07:00
cd "$(dirname "$0")"/../..
2018-09-03 22:33:40 -07:00
2018-09-04 09:21:03 -07:00
deployMethod=
entrypointIp=
2018-09-04 09:21:03 -07:00
numNodes=
[[ -r deployConfig ]] || {
echo deployConfig missing
exit 1
}
# shellcheck source=/dev/null # deployConfig is written by remote-node.sh
2018-09-04 09:21:03 -07:00
source deployConfig
2018-09-03 22:33:40 -07:00
2018-09-07 08:46:20 -07:00
missing() {
echo "Error: $1 not specified"
2018-09-04 09:21:03 -07:00
exit 1
}
2018-09-03 22:33:40 -07:00
2018-09-07 08:46:20 -07:00
[[ -n $deployMethod ]] || missing deployMethod
[[ -n $entrypointIp ]] || missing entrypointIp
[[ -n $numNodes ]] || missing numNodes
2018-09-03 22:33:40 -07:00
ledgerVerify=true
validatorSanity=true
while [[ $1 = -o ]]; do
2018-09-03 22:33:40 -07:00
opt="$2"
shift 2
case $opt in
noLedgerVerify)
ledgerVerify=false
;;
noValidatorSanity)
validatorSanity=false
;;
*)
echo "Error: unknown option: $opt"
exit 1
;;
esac
done
source net/common.sh
loadConfigFile
case $deployMethod in
snap)
2018-09-04 09:21:03 -07:00
PATH="/snap/bin:$PATH"
2018-09-03 22:33:40 -07:00
export USE_SNAP=1
entrypointRsyncUrl="$entrypointIp"
2018-09-04 09:21:03 -07:00
solana_bench_tps=solana.bench-tps
solana_ledger_tool=solana.ledger-tool
solana_keygen=solana.keygen
2018-09-03 22:33:40 -07:00
ledger=/var/snap/solana/current/config/ledger
client_id=~/snap/solana/current/config/client-id.json
2018-09-05 07:56:26 -07:00
2018-09-03 22:33:40 -07:00
;;
local)
PATH="$HOME"/.cargo/bin:"$PATH"
export USE_INSTALL=1
2018-09-05 07:56:26 -07:00
entrypointRsyncUrl="$entrypointIp:~/solana"
solana_bench_tps=solana-bench-tps
2018-09-03 22:33:40 -07:00
solana_ledger_tool=solana-ledger-tool
solana_keygen=solana-keygen
2018-09-03 22:33:40 -07:00
ledger=config/ledger
client_id=config/client-id.json
2018-09-03 22:33:40 -07:00
;;
*)
echo "Unknown deployment method: $deployMethod"
exit 1
esac
echo "--- $entrypointIp: wallet sanity"
2018-09-03 22:33:40 -07:00
(
set -x
scripts/wallet-sanity.sh "$entrypointRsyncUrl"
2018-09-03 22:33:40 -07:00
)
2018-09-08 14:12:32 -07:00
echo "+++ $entrypointIp: node count ($numNodes expected)"
2018-09-03 22:33:40 -07:00
(
set -x
2018-09-08 14:12:32 -07:00
$solana_keygen -o "$client_id"
$solana_bench_tps --network "$entrypointIp:8001" --identity "$client_id" --num-nodes "$numNodes" --converge-only
2018-09-03 22:33:40 -07:00
)
echo "--- $entrypointIp: verify ledger"
2018-09-03 22:33:40 -07:00
if $ledgerVerify; then
if [[ -d $ledger ]]; then
(
set -x
rm -rf /var/tmp/ledger-verify
2018-09-07 12:36:19 -07:00
du -hs "$ledger"
time cp -r "$ledger" /var/tmp/ledger-verify
time $solana_ledger_tool --ledger /var/tmp/ledger-verify verify
2018-09-03 22:33:40 -07:00
)
else
echo "^^^ +++"
2018-09-08 14:10:09 -07:00
echo "Ledger verify skipped: directory does not exist: $ledger"
2018-09-03 22:33:40 -07:00
fi
else
echo "^^^ +++"
2018-09-08 14:10:09 -07:00
echo "Note: ledger verify disabled"
2018-09-03 22:33:40 -07:00
fi
echo "--- $entrypointIp: validator sanity"
2018-09-03 22:33:40 -07:00
if $validatorSanity; then
(
2018-09-04 15:16:25 -07:00
set -ex -o pipefail
2018-09-03 22:33:40 -07:00
./multinode-demo/setup.sh -t validator
2018-09-05 07:56:26 -07:00
timeout 10s ./multinode-demo/validator.sh "$entrypointRsyncUrl" "$entrypointIp:8001" 2>&1 | tee validator.log
2018-09-04 15:16:25 -07:00
) || {
exitcode=$?
[[ $exitcode -eq 124 ]] || exit $exitcode
}
2018-09-03 22:33:40 -07:00
wc -l validator.log
if grep -C100 panic validator.log; then
echo "^^^ +++"
echo "Panic observed"
exit 1
else
echo "Validator log looks ok"
fi
else
echo "^^^ +++"
2018-09-08 14:10:09 -07:00
echo "Note: validator sanity disabled"
2018-09-03 22:33:40 -07:00
fi
2018-09-08 14:12:32 -07:00
echo --- Pass