2018-11-11 08:19:04 -08:00
|
|
|
#!/usr/bin/env bash
|
2018-07-02 14:14:34 -07:00
|
|
|
#
|
|
|
|
# Wallet sanity test
|
|
|
|
#
|
2018-11-11 09:25:59 -08:00
|
|
|
set -e
|
2018-07-02 14:14:34 -07:00
|
|
|
|
2018-09-07 09:46:21 -07:00
|
|
|
cd "$(dirname "$0")"/..
|
2018-07-02 14:14:34 -07:00
|
|
|
|
2018-09-16 13:53:24 -07:00
|
|
|
# shellcheck source=multinode-demo/common.sh
|
|
|
|
source multinode-demo/common.sh
|
|
|
|
|
|
|
|
if [[ -z $1 ]]; then # no network argument, use default
|
|
|
|
entrypoint=()
|
2018-07-13 22:10:39 -07:00
|
|
|
else
|
2019-01-16 20:43:00 -08:00
|
|
|
entrypoint=("$@")
|
2018-07-13 22:10:39 -07:00
|
|
|
fi
|
2018-07-02 14:14:34 -07:00
|
|
|
|
|
|
|
# Tokens transferred to this address are lost forever...
|
|
|
|
garbage_address=vS3ngn1TfQmpsW1Z4NkLuqNAQFF3dYQw8UZ6TCx9bmq
|
|
|
|
|
|
|
|
check_balance_output() {
|
2018-08-16 15:11:58 -07:00
|
|
|
declare expected_output="$1"
|
2018-08-16 14:33:14 -07:00
|
|
|
exec 42>&1
|
2018-11-01 10:08:50 -07:00
|
|
|
attempts=3
|
|
|
|
while [[ $attempts -gt 0 ]]; do
|
|
|
|
output=$($solana_wallet "${entrypoint[@]}" balance | tee >(cat - >&42))
|
|
|
|
if [[ "$output" =~ $expected_output ]]; then
|
|
|
|
break
|
|
|
|
else
|
|
|
|
sleep 1
|
|
|
|
(( attempts=attempts-1 ))
|
|
|
|
if [[ $attempts -eq 0 ]]; then
|
|
|
|
echo "Balance is incorrect. Expected: $expected_output"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
done
|
2018-07-02 14:14:34 -07:00
|
|
|
}
|
|
|
|
|
2018-07-02 17:40:17 -07:00
|
|
|
pay_and_confirm() {
|
|
|
|
exec 42>&1
|
2018-09-16 13:53:24 -07:00
|
|
|
signature=$($solana_wallet "${entrypoint[@]}" pay "$@" | tee >(cat - >&42))
|
|
|
|
$solana_wallet "${entrypoint[@]}" confirm "$signature"
|
2018-07-02 17:40:17 -07:00
|
|
|
}
|
|
|
|
|
2018-11-10 17:07:31 -08:00
|
|
|
$solana_keygen
|
|
|
|
|
2019-01-16 16:00:12 -08:00
|
|
|
node_readiness=false
|
2018-10-24 21:56:46 -07:00
|
|
|
timeout=60
|
2018-10-25 10:20:17 -07:00
|
|
|
while [[ $timeout -gt 0 ]]; do
|
2018-10-24 21:56:46 -07:00
|
|
|
expected_output="Leader ready"
|
|
|
|
exec 42>&1
|
2018-10-25 10:20:17 -07:00
|
|
|
output=$($solana_wallet "${entrypoint[@]}" get-transaction-count | tee >(cat - >&42))
|
|
|
|
if [[ $output -gt 0 ]]; then
|
2019-01-16 16:00:12 -08:00
|
|
|
node_readiness=true
|
2018-10-24 21:56:46 -07:00
|
|
|
break
|
|
|
|
fi
|
|
|
|
sleep 2
|
|
|
|
(( timeout=timeout-2 ))
|
|
|
|
done
|
2019-01-16 16:00:12 -08:00
|
|
|
if ! "$node_readiness"; then
|
|
|
|
echo "Timed out waiting for cluster to start"
|
2018-10-24 21:56:46 -07:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2018-09-16 13:53:24 -07:00
|
|
|
$solana_wallet "${entrypoint[@]}" address
|
2018-08-16 14:33:14 -07:00
|
|
|
check_balance_output "No account found" "Your balance is: 0"
|
2018-09-21 18:46:52 -07:00
|
|
|
$solana_wallet "${entrypoint[@]}" airdrop 60
|
2018-07-02 17:40:17 -07:00
|
|
|
check_balance_output "Your balance is: 60"
|
2018-09-21 18:46:52 -07:00
|
|
|
$solana_wallet "${entrypoint[@]}" airdrop 40
|
2018-07-02 17:40:17 -07:00
|
|
|
check_balance_output "Your balance is: 100"
|
2018-09-21 18:46:52 -07:00
|
|
|
pay_and_confirm $garbage_address 99
|
2018-07-02 17:40:17 -07:00
|
|
|
check_balance_output "Your balance is: 1"
|
2018-07-02 14:14:34 -07:00
|
|
|
|
|
|
|
echo PASS
|
|
|
|
exit 0
|