mirror of
https://github.com/logos-messaging/logos-messaging-interop-tests.git
synced 2026-01-07 08:23:07 +00:00
144 lines
4.6 KiB
Bash
144 lines
4.6 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
set -e
|
|||
|
|
|
|||
|
|
# Store stress via high Sonda concurrency & query rate,
|
|||
|
|
# while stepping message sizes and LPT counts to fill history fast.
|
|||
|
|
|
|||
|
|
cd ./waku-simulator
|
|||
|
|
|
|||
|
|
export NWAKU_IMAGE=wakuorg/nwaku:latest
|
|||
|
|
export NUM_NWAKU_NODES=15
|
|||
|
|
export RLN_ENABLED=false
|
|||
|
|
|
|||
|
|
# Service node config
|
|||
|
|
export SERVICENODE_CPU_CORES="0-3"
|
|||
|
|
export SERVICENODE_MEM_LIMIT=2g
|
|||
|
|
export POSTGRES_CPU_CORES="0-3"
|
|||
|
|
export POSTGRES_MEM_LIMIT=2g
|
|||
|
|
export POSTGRES_SHM=1g
|
|||
|
|
|
|||
|
|
docker compose up -d
|
|||
|
|
|
|||
|
|
# Wait until service node is running
|
|||
|
|
while true; do
|
|||
|
|
sid="$(docker compose ps -q servicenode || true)"
|
|||
|
|
if [[ -n "$sid" ]]; then
|
|||
|
|
state="$(docker inspect --format '{{.State.Status}}' "$sid" 2>/dev/null || true)"
|
|||
|
|
[[ "$state" == "running" ]] && break
|
|||
|
|
fi
|
|||
|
|
sleep 1
|
|||
|
|
done
|
|||
|
|
|
|||
|
|
cd ../lpt
|
|||
|
|
|
|||
|
|
# -------------------- LPT config ---------------------------
|
|||
|
|
export LPT_IMAGE=harbor.status.im/wakuorg/liteprotocoltester:latest
|
|||
|
|
export START_PUBLISHING_AFTER=15
|
|||
|
|
export NUM_MESSAGES=0
|
|||
|
|
export MESSAGE_INTERVAL_MILLIS=100
|
|||
|
|
|
|||
|
|
# Service peers
|
|||
|
|
export LIGHTPUSH_SERVICE_PEER=/ip4/10.2.0.101/tcp/60001/p2p/16Uiu2HAkyte8uj451tGkbww4Mjcg6DRnmAHxNeWyF4zp23RbpG3n
|
|||
|
|
export FILTER_SERVICE_PEER=/ip4/10.2.0.101/tcp/60001/p2p/16Uiu2HAkyte8uj451tGkbww4Mjcg6DRnmAHxNeWyF4zp23RbpG3n
|
|||
|
|
|
|||
|
|
# Topics
|
|||
|
|
export PUBSUB=/waku/2/rs/66/0
|
|||
|
|
export CONTENT_TOPIC=/tester/2/light-pubsub-test/wakusim
|
|||
|
|
export CLUSTER_ID=66
|
|||
|
|
|
|||
|
|
# sleep before traffic
|
|||
|
|
sleep 60
|
|||
|
|
|
|||
|
|
cd ../sonda
|
|||
|
|
docker build -t local-perf-sonda -f ./Dockerfile.sonda .
|
|||
|
|
|
|||
|
|
cat <<EOF > perf-test.env
|
|||
|
|
RELAY_NODE_REST_ADDRESS=http://127.0.0.1:8645
|
|||
|
|
STORE_NODE_REST_ADDRESS=http://127.0.0.1:8644
|
|||
|
|
QUERY_DELAY=0.5
|
|||
|
|
STORE_NODES=/ip4/10.2.0.101/tcp/60001/p2p/16Uiu2HAkyte8uj451tGkbww4Mjcg6DRnmAHxNeWyF4zp23RbpG3n
|
|||
|
|
CLUSTER_ID=66
|
|||
|
|
SHARD=0
|
|||
|
|
EOF
|
|||
|
|
|
|||
|
|
sleep 5
|
|||
|
|
|
|||
|
|
# Clean up
|
|||
|
|
docker rm -f sonda1 sonda2 sonda3 sonda4 sonda5 >/dev/null 2>&1 || true
|
|||
|
|
|
|||
|
|
# Start a baseline Sonda (0.5s)
|
|||
|
|
docker run -d --name sonda1 --network host -l sonda \
|
|||
|
|
--env-file ./perf-test.env local-perf-sonda
|
|||
|
|
|
|||
|
|
cd ../lpt
|
|||
|
|
|
|||
|
|
# ============================================================================ #
|
|||
|
|
# PHASE 1: Moderate traffic
|
|||
|
|
# LPT 6/6, 50–90 KB; Sonda x1 time 0.5s
|
|||
|
|
# ============================================================================ #
|
|||
|
|
export NUM_PUBLISHER_NODES=6
|
|||
|
|
export NUM_RECEIVER_NODES=6
|
|||
|
|
export MIN_MESSAGE_SIZE=50Kb
|
|||
|
|
export MAX_MESSAGE_SIZE=90Kb
|
|||
|
|
|
|||
|
|
docker compose down -v >/dev/null 2>&1 || true
|
|||
|
|
docker compose up -d
|
|||
|
|
|
|||
|
|
current_time=$(date +"%Y-%m-%d %H:%M:%S")
|
|||
|
|
echo "[scenario_6_store_stress] Phase 1: LPT 6/6, 50–90KB; Sonda x1 @0.5s — $current_time"
|
|||
|
|
sleep 120
|
|||
|
|
|
|||
|
|
# ============================================================================ #
|
|||
|
|
# PHASE 2: Same traffic but triple query rate
|
|||
|
|
# Keep LPT, add Sonda x2 more time 0.1s
|
|||
|
|
# ============================================================================ #
|
|||
|
|
docker run -d --name sonda2 --network host -l sonda \
|
|||
|
|
--env-file ../sonda/perf-test.env -e QUERY_DELAY=0.1 local-perf-sonda
|
|||
|
|
docker run -d --name sonda3 --network host -l sonda \
|
|||
|
|
--env-file ../sonda/perf-test.env -e QUERY_DELAY=0.1 local-perf-sonda
|
|||
|
|
|
|||
|
|
current_time=$(date +"%Y-%m-%d %H:%M:%S")
|
|||
|
|
echo "[scenario_6_store_stress] Phase 2: add Sonda x2 @0.1s (total 3) — $current_time"
|
|||
|
|
sleep 120
|
|||
|
|
|
|||
|
|
# ============================================================================ #
|
|||
|
|
# PHASE 3: Heavier traffic + peak query rate
|
|||
|
|
# LPT 10/10, 130–149 KB; add Sonda x2 more time 0.05s
|
|||
|
|
# ============================================================================ #
|
|||
|
|
docker compose down -v
|
|||
|
|
export NUM_PUBLISHER_NODES=10
|
|||
|
|
export NUM_RECEIVER_NODES=10
|
|||
|
|
export MIN_MESSAGE_SIZE=130Kb
|
|||
|
|
export MAX_MESSAGE_SIZE=149Kb
|
|||
|
|
docker compose up -d
|
|||
|
|
|
|||
|
|
docker run -d --name sonda4 --network host -l sonda \
|
|||
|
|
--env-file ../sonda/perf-test.env -e QUERY_DELAY=0.05 local-perf-sonda
|
|||
|
|
docker run -d --name sonda5 --network host -l sonda \
|
|||
|
|
--env-file ../sonda/perf-test.env -e QUERY_DELAY=0.05 local-perf-sonda
|
|||
|
|
|
|||
|
|
current_time=$(date +"%Y-%m-%d %H:%M:%S")
|
|||
|
|
echo "[scenario_6_store_stress] Phase 3: LPT 10/10, 130–149KB; Sonda total x5 (0.5s + 0.1s + 0.05s) — $current_time"
|
|||
|
|
sleep 120
|
|||
|
|
|
|||
|
|
# ============================================================================ #
|
|||
|
|
# PHASE 4: Store-only
|
|||
|
|
# Stop LPT; keep all Sonda x5 times
|
|||
|
|
# ============================================================================ #
|
|||
|
|
docker compose down -v
|
|||
|
|
|
|||
|
|
current_time=$(date +"%Y-%m-%d %H:%M:%S")
|
|||
|
|
echo "[scenario_6_store_stress] Phase 4: LPT down; Store-only flood via Sonda x5 — $current_time"
|
|||
|
|
sleep 120
|
|||
|
|
|
|||
|
|
# -------------------- Cleanup -------------------------------------------------
|
|||
|
|
docker rm -f sonda1 sonda2 sonda3 sonda4 sonda5 >/dev/null 2>&1 || true
|
|||
|
|
|
|||
|
|
cd ..
|
|||
|
|
|
|||
|
|
current_time=$(date +"%Y-%m-%d %H:%M:%S")
|
|||
|
|
echo "[scenario_6_store_stress] Test finished at $current_time"
|
|||
|
|
|
|||
|
|
# finish
|
|||
|
|
# exec ./stop_test.sh
|