2018-11-11 08:19:04 -08:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
set -e
|
2018-07-30 12:51:35 -07:00
|
|
|
#
|
|
|
|
# Perform a quick sanity test on a leader, drone, validator and client running
|
|
|
|
# locally on the same machine
|
|
|
|
#
|
|
|
|
|
|
|
|
cd "$(dirname "$0")"/..
|
2018-12-13 21:44:50 -08:00
|
|
|
source ci/upload-ci-artifact.sh
|
2018-08-27 10:23:22 -07:00
|
|
|
source scripts/configure-metrics.sh
|
2018-07-30 12:51:35 -07:00
|
|
|
|
2018-08-27 10:23:22 -07:00
|
|
|
multinode-demo/setup.sh
|
2018-07-30 12:51:35 -07:00
|
|
|
|
2018-12-06 13:38:45 -08:00
|
|
|
backgroundCommands="drone bootstrap-leader fullnode fullnode-x"
|
2018-07-30 12:51:35 -07:00
|
|
|
pids=()
|
|
|
|
|
|
|
|
for cmd in $backgroundCommands; do
|
|
|
|
echo "--- Start $cmd"
|
|
|
|
rm -f log-"$cmd".txt
|
2018-08-27 10:23:22 -07:00
|
|
|
multinode-demo/"$cmd".sh > log-"$cmd".txt 2>&1 &
|
2018-07-30 12:51:35 -07:00
|
|
|
declare pid=$!
|
|
|
|
pids+=("$pid")
|
|
|
|
echo "pid: $pid"
|
|
|
|
done
|
|
|
|
|
2018-08-07 09:29:58 -07:00
|
|
|
killBackgroundCommands() {
|
2018-07-30 12:51:35 -07:00
|
|
|
set +e
|
|
|
|
for pid in "${pids[@]}"; do
|
|
|
|
if kill "$pid"; then
|
|
|
|
wait "$pid"
|
|
|
|
else
|
|
|
|
echo -e "^^^ +++\\nWarning: unable to kill $pid"
|
|
|
|
fi
|
|
|
|
done
|
2018-08-07 09:29:58 -07:00
|
|
|
set -e
|
|
|
|
pids=()
|
|
|
|
}
|
|
|
|
|
|
|
|
shutdown() {
|
|
|
|
exitcode=$?
|
|
|
|
killBackgroundCommands
|
|
|
|
|
|
|
|
set +e
|
2018-07-30 12:51:35 -07:00
|
|
|
|
2018-08-07 09:29:58 -07:00
|
|
|
echo "--- Upload artifacts"
|
2018-07-30 12:51:35 -07:00
|
|
|
for cmd in $backgroundCommands; do
|
|
|
|
declare logfile=log-$cmd.txt
|
2018-12-13 21:44:50 -08:00
|
|
|
upload-ci-artifact "$logfile"
|
2018-07-30 12:51:35 -07:00
|
|
|
tail "$logfile"
|
|
|
|
done
|
2018-07-30 17:09:05 -07:00
|
|
|
|
|
|
|
exit $exitcode
|
2018-07-30 12:51:35 -07:00
|
|
|
}
|
|
|
|
|
2018-07-30 17:09:05 -07:00
|
|
|
trap shutdown EXIT INT
|
2018-07-30 12:51:35 -07:00
|
|
|
|
|
|
|
set -e
|
|
|
|
|
2018-08-14 11:31:52 -07:00
|
|
|
flag_error() {
|
|
|
|
echo Failed
|
|
|
|
echo "^^^ +++"
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
2018-08-27 17:57:04 -07:00
|
|
|
echo "--- Node count"
|
|
|
|
(
|
2018-09-07 15:07:10 -07:00
|
|
|
source multinode-demo/common.sh
|
2018-09-08 12:50:43 -07:00
|
|
|
set -x
|
2018-09-07 15:07:10 -07:00
|
|
|
client_id=/tmp/client-id.json-$$
|
2018-12-04 21:30:08 -08:00
|
|
|
$solana_keygen -o $client_id || exit $?
|
|
|
|
$solana_bench_tps \
|
|
|
|
--identity $client_id \
|
|
|
|
--num-nodes 3 \
|
|
|
|
--reject-extra-nodes \
|
|
|
|
--converge-only || exit $?
|
2018-09-07 15:07:10 -07:00
|
|
|
rm -rf $client_id
|
2018-08-27 17:57:04 -07:00
|
|
|
) || flag_error
|
2018-07-30 12:51:35 -07:00
|
|
|
|
2018-12-24 11:10:53 -08:00
|
|
|
echo "--- RPC API: getTransactionCount"
|
|
|
|
(
|
|
|
|
set -x
|
2019-01-08 08:29:41 -08:00
|
|
|
curl --retry 5 --retry-delay 2 --retry-connrefused \
|
|
|
|
-X POST -H 'Content-Type: application/json' \
|
2018-12-24 11:10:53 -08:00
|
|
|
-d '{"jsonrpc":"2.0","id":1, "method":"getTransactionCount"}' \
|
|
|
|
http://localhost:8899
|
|
|
|
) || flag_error
|
|
|
|
|
2019-01-09 11:39:27 -08:00
|
|
|
echo "--- Wallet sanity"
|
|
|
|
(
|
|
|
|
set -x
|
|
|
|
timeout 60s scripts/wallet-sanity.sh
|
|
|
|
) || flag_error
|
|
|
|
|
2018-08-07 09:29:58 -07:00
|
|
|
killBackgroundCommands
|
2018-08-14 11:31:52 -07:00
|
|
|
|
|
|
|
echo "--- Ledger verification"
|
|
|
|
(
|
2018-08-27 10:23:22 -07:00
|
|
|
source multinode-demo/common.sh
|
2018-09-08 12:50:43 -07:00
|
|
|
set -x
|
2018-12-06 13:38:45 -08:00
|
|
|
cp -R "$SOLANA_CONFIG_DIR"/bootstrap-leader-ledger /tmp/ledger-$$
|
2018-12-04 21:30:08 -08:00
|
|
|
$solana_ledger_tool --ledger /tmp/ledger-$$ verify || exit $?
|
2018-08-27 17:57:04 -07:00
|
|
|
rm -rf /tmp/ledger-$$
|
2018-08-14 11:31:52 -07:00
|
|
|
) || flag_error
|
2018-07-30 12:51:35 -07:00
|
|
|
|
|
|
|
echo +++
|
|
|
|
echo Ok
|
|
|
|
exit 0
|