Add filter stress scenarios & store

This commit is contained in:
aya 2025-09-09 14:23:47 +03:00
parent 4f5ac4308e
commit 013b5028a0
2 changed files with 166 additions and 57 deletions

View File

@ -1,57 +1,79 @@
#!/bin/bash #!/bin/bash
set -e # Stress Filter with high receiver (subscribe/unsubscribe) while publishing continuously.
set -e
STORE_NODES="/ip4/10.2.0.101/tcp/60001/p2p/16Uiu2HAkyte8uj451tGkbww4Mjcg6DRnmAHxNeWyF4zp23RbpG3n"
RELAY_NODE_REST_ADDRESS="http://127.0.0.1:8645" STORE_NODES="/ip4/10.2.0.101/tcp/60001/p2p/16Uiu2HAkyte8uj451tGkbww4Mjcg6DRnmAHxNeWyF4zp23RbpG3n"
STORE_NODE_REST_ADDRESS="http://127.0.0.1:8644" RELAY_NODE_REST_ADDRESS="http://127.0.0.1:8645"
PUBSUB_TOPIC="/waku/2/default-waku/proto" STORE_NODE_REST_ADDRESS="http://127.0.0.1:8644"
CONTENT_TOPIC="/sonda/2/polls/proto" PUBSUB_TOPIC="/waku/2/default-waku/proto"
PHASE_SLEEP=600 CONTENT_TOPIC="/sonda/2/polls/proto"
PHASE_SLEEP=120
echo "Running test..."
current_time=$(date +"%Y-%m-%d %H:%M:%S") echo "Running test..."
echo "Bringing up simulator at $current_time" current_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "Bringing up simulator at $current_time"
cd ./waku-simulator
export SERVICENODE_CPU_CORES=0 cd ./waku-simulator
export POSTGRES_CPU_CORES=1-3 export SERVICENODE_CPU_CORES=0
export GF_SECURITY_ADMIN_USER=admin export POSTGRES_CPU_CORES=1-3
export GF_SECURITY_ADMIN_PASSWORD=admin export GF_SECURITY_ADMIN_USER=admin
docker compose up -d export GF_SECURITY_ADMIN_PASSWORD=admin
while [ "$(docker inspect --format "{{.State.Status}}" $(docker compose ps -q servicenode))" != "running" ]; do docker compose up -d
sleep 1 while [ "$(docker inspect --format "{{.State.Status}}" $(docker compose ps -q servicenode))" != "running" ]; do
done sleep 1
cd .. done
cd ..
cd ./sonda
docker build -t local-perf-sonda -f ./Dockerfile.sonda . cd ./sonda
cat > ./perf-test.env <<EOF docker build -t local-perf-sonda -f ./Dockerfile.sonda .
RELAY_NODE_REST_ADDRESS=${RELAY_NODE_REST_ADDRESS} cat > ./perf-test.env <<EOF
STORE_NODE_REST_ADDRESS=${STORE_NODE_REST_ADDRESS} RELAY_NODE_REST_ADDRESS=${RELAY_NODE_REST_ADDRESS}
STORE_NODES=${STORE_NODES} STORE_NODE_REST_ADDRESS=${STORE_NODE_REST_ADDRESS}
QUERY_DELAY=5 STORE_NODES=${STORE_NODES}
CLUSTER_ID=66 QUERY_DELAY=0.5
SHARD=0 CLUSTER_ID=66
HEALTH_THRESHOLD=0.9 SHARD=0
PUBSUB_TOPIC=${PUBSUB_TOPIC} HEALTH_THRESHOLD=0.9
CONTENT_TOPIC=${CONTENT_TOPIC} PUBSUB_TOPIC=${PUBSUB_TOPIC}
EOF CONTENT_TOPIC=${CONTENT_TOPIC}
docker run --env-file ./perf-test.env -l sonda -d --network host local-perf-sonda EOF
cd .. docker run --env-file ./perf-test.env -l sonda -d --network host local-perf-sonda
cd ..
cd ./lpt
export LPT_IMAGE=harbor.status.im/wakuorg/liteprotocoltester:latest cd ./lpt
export START_PUBLISHING_AFTER=15 export LPT_IMAGE=harbor.status.im/wakuorg/liteprotocoltester:latest
export NUM_PUBLISHER_NODES=20 export START_PUBLISHING_AFTER=15
export NUM_RECEIVER_NODES=5 export NUM_PUBLISHER_NODES=12
export MESSAGE_MIN_BYTES=4096 export NUM_RECEIVER_NODES=30
export MESSAGE_MAX_BYTES=65536 export MESSAGE_MIN_BYTES=2048
export LIGHTPUSH_INTERVAL_MS=40 export MESSAGE_MAX_BYTES=32768
docker compose up -d export LIGHTPUSH_INTERVAL_MS=80
current_time=$(date +"%Y-%m-%d %H:%M:%S") docker compose up -d
echo "Scenario 1 started (20 pub / 5 recv, 40ms, 464KB). Time: $current_time" current_time=$(date +"%Y-%m-%d %H:%M:%S")
sleep ${PHASE_SLEEP} echo "Phase 1: up recv, 12 pub / 30 recv (80ms, 232KB) $current_time"
docker compose down sleep ${PHASE_SLEEP}
cd ..
current_time=$(date +"%Y-%m-%d %H:%M:%S") docker compose down receivernode
echo "Scenario 1 finished at $current_time" current_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "Phase 2: down recv, publishers + sonda $current_time"
sleep ${PHASE_SLEEP}
docker compose up -d receivernode
current_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "Phase 3: up recv again $current_time"
sleep ${PHASE_SLEEP}
docker compose down receivernode
current_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "Phase 4: down recv again $current_time"
sleep ${PHASE_SLEEP}
docker compose up -d receivernode
current_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "Phase 5: up recv final $current_time"
sleep ${PHASE_SLEEP}
docker compose down
cd ..
current_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "Scenario 3 finished at $current_time"

View File

@ -0,0 +1,87 @@
#!/bin/bash
set -e
# Stress Store with multiple Store nodes while running phased LPT publishers/receivers.
STORE_NODES="/ip4/10.2.0.101/tcp/60001/p2p/16Uiu2HAkyte8uj451tGkbww4Mjcg6DRnmAHxNeWyF4zp23RbpG3n,/ip4/10.2.0.102/tcp/60001/p2p/16Uiu2HA7abcDEF451tGkbzz4Mjcg6DRnmAHxNeWyF4zp23RbpXYZ2,/ip4/10.2.0.103/tcp/60001/p2p/16Uiu2HA9LMNoPQ451tGkbww4Mjcg6DRnmAHxNeWyF4zp23Rbppppp"
RELAY_NODE_REST_ADDRESS="http://127.0.0.1:8645"
STORE_NODE_REST_ADDRESS="http://127.0.0.1:8644"
PUBSUB_TOPIC="/waku/2/default-waku/proto"
CONTENT_TOPIC="/sonda/2/polls/proto"
PHASE_SLEEP=300
echo "Running test..."
current_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "Bringing up simulator at $current_time"
cd ./waku-simulator
export SERVICENODE_CPU_CORES=0
export POSTGRES_CPU_CORES=1-3
export GF_SECURITY_ADMIN_USER=admin
export GF_SECURITY_ADMIN_PASSWORD=admin
docker compose up -d
while [ "$(docker inspect --format "{{.State.Status}}" $(docker compose ps -q servicenode))" != "running" ]; do
sleep 1
done
cd ..
cd ./sonda
docker build -t local-perf-sonda -f ./Dockerfile.sonda .
cat > ./perf-test.env <<EOF
RELAY_NODE_REST_ADDRESS=${RELAY_NODE_REST_ADDRESS}
STORE_NODE_REST_ADDRESS=${STORE_NODE_REST_ADDRESS}
STORE_NODES=${STORE_NODES}
QUERY_DELAY=0.25
CLUSTER_ID=66
SHARD=0
HEALTH_THRESHOLD=0.9
PUBSUB_TOPIC=${PUBSUB_TOPIC}
CONTENT_TOPIC=${CONTENT_TOPIC}
EOF
docker run --env-file ./perf-test.env -l sonda -d --network host local-perf-sonda
cd ..
cd ./lpt
export LPT_IMAGE=harbor.status.im/wakuorg/liteprotocoltester:latest
export START_PUBLISHING_AFTER=15
export NUM_PUBLISHER_NODES=10
export NUM_RECEIVER_NODES=10
export MESSAGE_MIN_BYTES=2048
export MESSAGE_MAX_BYTES=32768
export LIGHTPUSH_INTERVAL_MS=100
docker compose up -d
current_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "Phase 1: 10 pub / 10 recv (100ms, 232KB) $current_time"
sleep ${PHASE_SLEEP}
docker compose down
export NUM_PUBLISHER_NODES=15
export NUM_RECEIVER_NODES=15
export MESSAGE_MIN_BYTES=4096
export MESSAGE_MAX_BYTES=65536
export LIGHTPUSH_INTERVAL_MS=80
docker compose up -d
current_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "Phase 2: 15 pub / 15 recv (80ms, 464KB) $current_time"
sleep ${PHASE_SLEEP}
docker compose down
export NUM_PUBLISHER_NODES=20
export NUM_RECEIVER_NODES=10
export MESSAGE_MIN_BYTES=2048
export MESSAGE_MAX_BYTES=32768
export LIGHTPUSH_INTERVAL_MS=80
docker compose up -d
current_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "Phase 3: 20 pub / 10 recv (80ms, 232KB) $current_time"
sleep ${PHASE_SLEEP}
docker compose down receivernode
current_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "Phase 4: receivers down, publishers + sonda $current_time"
sleep ${PHASE_SLEEP}
docker compose down
cd ..
current_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "Scenario 2 finished at $current_time"