Add simple gossip DoS test
This commit is contained in:
parent
8a2d4e2f72
commit
9bcca268a3
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
cd "$(dirname "$0")"
|
cd "$(dirname "$0")"
|
||||||
|
SOLANA_ROOT="$(cd ../..; pwd)"
|
||||||
|
|
||||||
logDir="$PWD"/logs
|
logDir="$PWD"/logs
|
||||||
ledgerDir="$PWD"/config
|
ledgerDir="$PWD"/config
|
||||||
|
@ -29,8 +30,7 @@ solanaInstallGlobalOpts=(
|
||||||
bootstrapInstall() {
|
bootstrapInstall() {
|
||||||
declare v=$1
|
declare v=$1
|
||||||
if [[ ! -h $solanaInstallDataDir/active_release ]]; then
|
if [[ ! -h $solanaInstallDataDir/active_release ]]; then
|
||||||
curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v"$v"/install/solana-install-init.sh \
|
sh "$SOLANA_ROOT"/install/solana-install-init.sh "$v" "${solanaInstallGlobalOpts[@]}"
|
||||||
| sh -s - "$v" "${solanaInstallGlobalOpts[@]}"
|
|
||||||
fi
|
fi
|
||||||
export PATH="$solanaInstallDataDir/active_release/bin/:$PATH"
|
export PATH="$solanaInstallDataDir/active_release/bin/:$PATH"
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
/releases/
|
|
@ -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
|
|
@ -0,0 +1,3 @@
|
||||||
|
steps:
|
||||||
|
- command: "system-test/stability-testcases/gossip-dos-test.sh"
|
||||||
|
label: "Gossip DoS Test"
|
Loading…
Reference in New Issue