140 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			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=solana-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: solana-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
 |