solana/net/remote/remote-sanity.sh

140 lines
2.8 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
#
# This script is to be run on the bootstrap validator
#
cd "$(dirname "$0")"/../..
sanityTargetIp="$1"
shift
deployMethod=
entrypointIp=
numNodes=
failOnValidatorBootupFailure=
airdropsEnabled=true
[[ -r deployConfig ]] || {
echo deployConfig missing
exit 1
}
# shellcheck source=/dev/null # deployConfig is written by remote-node.sh
source deployConfig
missing() {
echo "Error: $1 not specified"
exit 1
}
[[ -n $sanityTargetIp ]] || missing sanityTargetIp
[[ -n $deployMethod ]] || missing deployMethod
[[ -n $entrypointIp ]] || missing entrypointIp
[[ -n $numNodes ]] || missing numNodes
[[ -n $failOnValidatorBootupFailure ]] || missing failOnValidatorBootupFailure
installCheck=true
rejectExtraNodes=false
while [[ $1 = -o ]]; do
opt="$2"
shift 2
case $opt in
noInstallCheck)
installCheck=false
;;
rejectExtraNodes)
rejectExtraNodes=true
;;
*)
echo "Error: unknown option: $opt"
exit 1
;;
esac
done
if [[ -n $1 ]]; then
export RUST_LOG="$1"
fi
source net/common.sh
loadConfigFile
case $deployMethod in
local|tar|skip)
PATH="$HOME"/.cargo/bin:"$PATH"
export USE_INSTALL=1
solana_cli=solana
solana_gossip=solana-gossip
solana_install=agave-install
;;
*)
echo "Unknown deployment method: $deployMethod"
exit 1
esac
if $failOnValidatorBootupFailure; then
numSanityNodes="$numNodes"
else
numSanityNodes=1
if $rejectExtraNodes; then
echo "rejectExtraNodes cannot be used with failOnValidatorBootupFailure"
exit 1
fi
fi
echo "--- $sanityTargetIp: validators"
(
set -x
$solana_cli --url http://"$sanityTargetIp":8899 validators
)
echo "--- $sanityTargetIp: node count ($numSanityNodes expected)"
(
set -x
nodeArg="num-nodes"
if $rejectExtraNodes; then
nodeArg="num-nodes-exactly"
fi
$solana_gossip --allow-private-addr spy --entrypoint "$sanityTargetIp:8001" \
--$nodeArg "$numSanityNodes" --timeout 60 \
)
echo "--- $sanityTargetIp: RPC API: getTransactionCount"
(
set -x
curl --retry 5 --retry-delay 2 --retry-connrefused \
-X POST -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1, "method":"getTransactionCount"}' \
http://"$sanityTargetIp":8899
)
if [[ "$airdropsEnabled" = true ]]; then
echo "--- $sanityTargetIp: wallet sanity"
(
set -x
scripts/wallet-sanity.sh --url http://"$sanityTargetIp":8899
)
else
echo "^^^ +++"
echo "Note: wallet sanity is disabled as airdrops are disabled"
fi
if $installCheck && [[ -r update_manifest_keypair.json ]]; then
echo "--- $sanityTargetIp: agave-install test"
(
set -x
rm -rf install-data-dir
$solana_install init \
--no-modify-path \
--data-dir install-data-dir \
--url http://"$sanityTargetIp":8899 \
$solana_install info
)
fi
echo --- Pass