Add simple gossip DoS test

This commit is contained in:
Michael Vines 2020-02-14 21:58:03 -07:00
parent 8a2d4e2f72
commit 9bcca268a3
4 changed files with 71 additions and 2 deletions

View File

@ -6,6 +6,7 @@
set -e
cd "$(dirname "$0")"
SOLANA_ROOT="$(cd ../..; pwd)"
logDir="$PWD"/logs
ledgerDir="$PWD"/config
@ -29,8 +30,7 @@ solanaInstallGlobalOpts=(
bootstrapInstall() {
declare v=$1
if [[ ! -h $solanaInstallDataDir/active_release ]]; then
curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v"$v"/install/solana-install-init.sh \
| sh -s - "$v" "${solanaInstallGlobalOpts[@]}"
sh "$SOLANA_ROOT"/install/solana-install-init.sh "$v" "${solanaInstallGlobalOpts[@]}"
fi
export PATH="$solanaInstallDataDir/active_release/bin/:$PATH"
}

View File

@ -0,0 +1 @@
/releases/

View File

@ -0,0 +1,65 @@
#!/usr/bin/env bash
set -e
cd "$(dirname "$0")"
SOLANA_ROOT="$(cd ../..; pwd)"
if [[ $(uname) != Linux ]]; then
echo Error: this test is Linux only
exit 1
fi
logDir="$PWD"/logs
rm -rf "$logDir"
mkdir "$logDir"
solanaInstallDataDir=$PWD/releases
solanaInstallGlobalOpts=(
--data-dir "$solanaInstallDataDir"
--config "$solanaInstallDataDir"/config.yml
--no-modify-path
)
# Install all the solana versions
bootstrapInstall() {
declare v=$1
if [[ ! -h $solanaInstallDataDir/active_release ]]; then
sh "$SOLANA_ROOT"/install/solana-install-init.sh "$v" "${solanaInstallGlobalOpts[@]}"
fi
export PATH="$solanaInstallDataDir/active_release/bin/:$PATH"
}
bootstrapInstall "edge"
killall solana-gossip || true
solana-gossip spy --gossip-port 8001 > "$logDir"/gossip.log 2>&1 &
solanaGossipPid=$!
echo "solana-gossip pid: $solanaGossipPid"
sleep 5
dd if=/dev/zero bs=1232 > /dev/udp/127.0.0.1/8001 &
ddPid=$!
echo "dd pid: $ddPid"
pass=true
SECONDS=
while ((SECONDS < 600)); do
if ! kill -0 $solanaGossipPid; then
echo "solana-gossip is no longer running after $SECONDS seconds"
pass=false
break
fi
if ! kill -0 $ddPid; then
echo "dd is no longer running after $SECONDS seconds"
pass=false
break
fi
sleep 1
done
kill $solanaGossipPid || true
kill $ddPid || true
wait || true
$pass && echo Pass

View File

@ -0,0 +1,3 @@
steps:
- command: "system-test/stability-testcases/gossip-dos-test.sh"
label: "Gossip DoS Test"