From 146b71214ef84ea745275cb6cee6ef9457cabb97 Mon Sep 17 00:00:00 2001 From: Alejandro Cabeza Romero Date: Thu, 13 Jun 2024 23:37:08 +0200 Subject: [PATCH 1/7] Various fixes --- deploy_rln_contract.sh | 0 docker-compose.yml | 5 ++++- inject_traffic.sh | 5 +++++ run_nwaku.sh | 6 +++++- 4 files changed, 14 insertions(+), 2 deletions(-) mode change 100644 => 100755 deploy_rln_contract.sh create mode 100755 inject_traffic.sh diff --git a/deploy_rln_contract.sh b/deploy_rln_contract.sh old mode 100644 new mode 100755 diff --git a/docker-compose.yml b/docker-compose.yml index 075dffa..1c7f72c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -44,7 +44,7 @@ services: command: - '/opt/deploy_rln_contract.sh' volumes: - - ./deploy_rln_contract.sh:/opt/deploy_rln_contract.sh + - ./deploy_rln_contract.sh:/opt/deploy_rln_contract.sh:Z depends_on: - foundry networks: @@ -152,6 +152,7 @@ services: - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro + - /dev:/dev depends_on: - redis networks: @@ -203,6 +204,8 @@ services: - api networks: - simulation + ports: + - 0.0.0.0:3000:3000 ingestion: image: web3labs/epirus-free-ingestion:latest diff --git a/inject_traffic.sh b/inject_traffic.sh new file mode 100755 index 0000000..871d423 --- /dev/null +++ b/inject_traffic.sh @@ -0,0 +1,5 @@ +docker run -it --network waku-simulator_simulation alrevuelta/rest-traffic:d936446 \ +--delay-seconds=${TRAFFIC_DELAY_SECONDS:-10} \ +--msg-size-kbytes=${MSG_SIZE_KBYTES:-5} \ +--pubsub-topic=/waku/2/rs/66/0 \ +--multiple-nodes="http://waku-simulator_nwaku_[1..${NUM_NWAKU_NODES:-5}]:8645" diff --git a/run_nwaku.sh b/run_nwaku.sh index 3b2eb5a..ee799eb 100755 --- a/run_nwaku.sh +++ b/run_nwaku.sh @@ -81,6 +81,7 @@ get_private_key(){ current_index=1 for key in $private_keys do + INDEX=`echo $INDEX | sed -n "1p" | awk '{print $1}'` if [ $current_index -eq $INDEX ]; then pk=$key echo $key @@ -114,6 +115,9 @@ else --execute fi +echo $RLN_CREDENTIAL_PATH +ls -la / +ls -la $RLN_CREDENTIAL_PATH echo "I am a nwaku node" RETRIES=${RETRIES:=10} @@ -158,4 +162,4 @@ exec /usr/bin/wakunode\ --discv5-bootstrap-node=${BOOTSTRAP_ENR}\ --nat=extip:${IP}\ --pubsub-topic=/waku/2/rs/66/0\ - --cluster-id=66 \ No newline at end of file + --cluster-id=66 From 5296ac6bf853aa60386bf3539c8225d16b92a999 Mon Sep 17 00:00:00 2001 From: Alejandro Cabeza Romero Date: Mon, 17 Jun 2024 22:39:27 +0200 Subject: [PATCH 2/7] Implement two scripts to launch compose and traffic injection easily. --- docker-compose.yml | 4 +- inject_traffic.sh | 97 ++++++++++++++++++++++++++-- run_compose.sh | 153 +++++++++++++++++++++++++++++++++++++++++++++ run_nwaku.sh | 3 - 4 files changed, 248 insertions(+), 9 deletions(-) create mode 100755 run_compose.sh diff --git a/docker-compose.yml b/docker-compose.yml index 1c7f72c..140612e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -205,7 +205,7 @@ services: networks: - simulation ports: - - 0.0.0.0:3000:3000 + - 3000 ingestion: image: web3labs/epirus-free-ingestion:latest @@ -235,4 +235,4 @@ services: - simulation volumes: - privatekeys-volume: \ No newline at end of file + privatekeys-volume: diff --git a/inject_traffic.sh b/inject_traffic.sh index 871d423..e5e8c17 100755 --- a/inject_traffic.sh +++ b/inject_traffic.sh @@ -1,5 +1,94 @@ +#!/bin/bash + +# Function to print the usage of the script +usage() { + echo "Usage: $0 --delay-seconds --msg-size-kbytes --pubsub-topic --nodes " + exit 1 +} + +# Default values +DEFAULT_MSG_SIZE=10 +DEFAULT_PUBSUB_TOPIC="/waku/2/rs/66/0" + +# Initialize variables +DELAY_SECONDS="" +MSG_SIZE_KBYTES=$DEFAULT_MSG_SIZE +PUBSUB_TOPIC=$DEFAULT_PUBSUB_TOPIC +NODES="" + +# Parse named parameters +while [[ "$#" -gt 0 ]]; do + case $1 in + --delay-seconds) + DELAY_SECONDS="$2" + shift 2 + ;; + --msg-size-kbytes) + MSG_SIZE_KBYTES="$2" + shift 2 + ;; + --pubsub-topic) + PUBSUB_TOPIC="$2" + shift 2 + ;; + --nodes) + NODES="$2" + shift 2 + ;; + *) + echo "Unknown parameter passed: $1" + usage + ;; + esac +done + +# Validate required parameters +if [[ -z "$DELAY_SECONDS" || -z "$NODES" ]]; then + echo "Error: --delay-seconds and --nodes are required." + usage +fi + +# Validate delay-seconds is an integer +if ! [[ "$DELAY_SECONDS" =~ ^[0-9]+$ ]]; then + echo "Error: --delay-seconds must be an integer." + exit 1 +fi + +# Validate msg-size-kbytes is an integer +if ! [[ "$MSG_SIZE_KBYTES" =~ ^[0-9]+$ ]]; then + echo "Error: --msg-size-kbytes must be an integer." + exit 1 +fi + +# Validate nodes format +if ! [[ "$NODES" =~ ^[0-9]+\.\.[0-9]+$ ]]; then + echo "Error: --nodes must be a range of integers." + exit 1 +fi + +# Check if default values are used and warn +if [[ "$MSG_SIZE_KBYTES" -eq $DEFAULT_MSG_SIZE ]]; then + echo "Warning: Using default value for --msg-size-kbytes: $DEFAULT_MSG_SIZE" +fi + +if [[ "$PUBSUB_TOPIC" == "$DEFAULT_PUBSUB_TOPIC" ]]; then + echo "Warning: Using default value for --pubsub-topic: $DEFAULT_PUBSUB_TOPIC" +fi + +# Output the parameters as a summary +echo "=====================================" +echo " Summary of Parameters " +echo "=====================================" +echo "- Delay: ${DELAY_SECONDS}s" +echo "- Msg Size: ${MSG_SIZE_KBYTES}KB" +echo "- Pubsub Topic: ${PUBSUB_TOPIC}" +echo "- Nodes: ${NODES}" +echo "=====================================" + +# Run the command docker run -it --network waku-simulator_simulation alrevuelta/rest-traffic:d936446 \ ---delay-seconds=${TRAFFIC_DELAY_SECONDS:-10} \ ---msg-size-kbytes=${MSG_SIZE_KBYTES:-5} \ ---pubsub-topic=/waku/2/rs/66/0 \ ---multiple-nodes="http://waku-simulator_nwaku_[1..${NUM_NWAKU_NODES:-5}]:8645" +--delay-seconds=$DELAY_SECONDS \ +--msg-size-kbytes=$MSG_SIZE_KBYTES \ +--pubsub-topic=$PUBSUB_TOPIC \ +--multiple-nodes="http://waku-simulator_nwaku_[$NODES]:8645" + diff --git a/run_compose.sh b/run_compose.sh new file mode 100755 index 0000000..d3968bf --- /dev/null +++ b/run_compose.sh @@ -0,0 +1,153 @@ +#!/bin/bash + +# Function to print the usage of the script +usage() { + echo "Usage: $0 --nwaku-image --num-nwaku-nodes --traffic-delay-seconds --message-size-kbytes --private-key --eth-from --rln-relay-epoch-seconds --rln-relay-messages-limit " + exit 1 +} + +# Default values +DEFAULT_NWAKU_IMAGE="qiuay.io/wakuorg/nwaku-pr:2759-rln-v2" +DEFAULT_NUM_NWAKU_NODES=5 +DEFAULT_TRAFFIC_DELAY_SECONDS=60 +DEFAULT_MSG_SIZE_KBYTES=10 +DEFAULT_PRIVATE_KEY="0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" +DEFAULT_ETH_FROM="0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" +DEFAULT_RLN_RELAY_EPOCH_SEC=60 +DEFAULT_RLN_RELAY_MSG_LIMIT=1 + +# Initialize variables +NWAKU_IMAGE=$DEFAULT_NWAKU_IMAGE +NUM_NWAKU_NODES=$DEFAULT_NUM_NWAKU_NODES +TRAFFIC_DELAY_SECONDS=$DEFAULT_TRAFFIC_DELAY_SECONDS +MSG_SIZE_KBYTES=$DEFAULT_MSG_SIZE_KBYTES +PRIVATE_KEY=$DEFAULT_PRIVATE_KEY +ETH_FROM=$DEFAULT_ETH_FROM +RLN_RELAY_EPOCH_SEC=$DEFAULT_RLN_RELAY_EPOCH_SEC +RLN_RELAY_MSG_LIMIT=$DEFAULT_RLN_RELAY_MSG_LIMIT + +# Parse named parameters +while [[ "$#" -gt 0 ]]; do + case $1 in + --nwaku-image) + NWAKU_IMAGE="$2" + shift 2 + ;; + --num-nwaku-nodes) + NUM_NWAKU_NODES="$2" + shift 2 + ;; + --traffic-delay-seconds) + TRAFFIC_DELAY_SECONDS="$2" + shift 2 + ;; + --message-size-kbytes) + MSG_SIZE_KBYTES="$2" + shift 2 + ;; + --private-key) + PRIVATE_KEY="$2" + shift 2 + ;; + --eth-from) + ETH_FROM="$2" + shift 2 + ;; + --rln-relay-epoch-seconds) + RLN_RELAY_EPOCH_SEC="$2" + shift 2 + ;; + --rln-relay-messages-limit) + RLN_RELAY_MSG_LIMIT="$2" + shift 2 + ;; + *) + echo "Unknown parameter passed: $1" + usage + ;; + esac +done + +# Validate num-nwaku-nodes is an integer +if ! [[ "$NUM_NWAKU_NODES" =~ ^[0-9]+$ ]]; then + echo "Error: --num-nwaku-nodes must be an integer." + exit 1 +fi + +# Validate traffic-delay-seconds is an integer +if ! [[ "$TRAFFIC_DELAY_SECONDS" =~ ^[0-9]+$ ]]; then + echo "Error: --traffic-delay-seconds must be an integer." + exit 1 +fi + +# Validate msg-size-kbytes +if ! [[ "$MSG_SIZE_KBYTES" =~ ^[0-9]+$ ]]; then + echo "Error: --msg-size-kbytes must be an integer." + exit 1 +fi + +# Validate rln-relay-epoch-seconds +if ! [[ "$RLN_RELAY_EPOCH_SEC" =~ ^[0-9]+$ ]]; then + echo "Error: --rln-relay-epoch-seconds must be an integer." + exit 1 +fi + +# Validate rln-relay-messages-limit +if ! [[ "$RLN_RELAY_MSG_LIMIT" =~ ^[0-9]+$ ]]; then + echo "Error: --rln-relay-messages-limit must be an integer." + exit 1 +fi + +# Check if default values are used and warn +if [[ "$NWAKU_IMAGE" == "$DEFAULT_NWAKU_IMAGE" ]]; then + echo "Warning: Using default value for --nwaku-image: $DEFAULT_NWAKU_IMAGE" +fi + +if [[ "$NUM_NWAKU_NODES" -eq "$DEFAULT_NUM_NWAKU_NODES" ]]; then + echo "Warning: Using default value for --num-nwaku-nodes: $DEFAULT_NUM_NWAKU_NODES" +fi + +if [[ "$TRAFFIC_DELAY_SECONDS" -eq "$DEFAULT_TRAFFIC_DELAY_SECONDS" ]]; then + echo "Warning: Using default value for --traffic-delay-seconds: $DEFAULT_TRAFFIC_DELAY_SECONDS" +fi + +if [[ "$MSG_SIZE_KBYTES" -eq "$DEFAULT_MSG_SIZE_KBYTES" ]]; then + echo "Warning: Using default value for --message-size-kbytes: $DEFAULT_MSG_SIZE_KBYTES" +fi + +if [[ "$PRIVATE_KEY" == "$DEFAULT_PRIVATE_KEY" ]]; then + echo "Warning: Using default value for --private-key: $DEFAULT_PRIVATE_KEY" +fi + +if [[ "$ETH_FROM" == "$DEFAULT_ETH_FROM" ]]; then + echo "Warning: Using default value for --eth-from: $DEFAULT_ETH_FROM" +fi + +if [[ "$RLN_RELAY_EPOCH_SEC" -eq "$DEFAULT_RLN_RELAY_EPOCH_SEC" ]]; then + echo "Warning: Using default value for --rln-relay-epoch-seconds: $DEFAULT_RLN_RELAY_EPOCH_SEC" +fi + +if [[ "$RLN_RELAY_MSG_LIMIT" -eq "$DEFAULT_RLN_RELAY_MSG_LIMIT" ]]; then + echo "Warning: Using default value for --rln-relay-messages-limit: $DEFAULT_RLN_RELAY_MSG_LIMIT" +fi + +# Output the parameters as a summary +echo "" +echo "=================================================================================================" +echo " Summary of Parameters " +echo "=================================================================================================" +echo "- Nwaku Image: ${NWAKU_IMAGE}" +echo "- Number of Nwaku Nodes: ${NUM_NWAKU_NODES}" +echo "- Message Publishing Delay: ${TRAFFIC_DELAY_SECONDS}s" +echo "- Message Size: ${MSG_SIZE_KBYTES}KB" +echo "- Private Key: ${PRIVATE_KEY}" +echo "- ETH From: ${ETH_FROM}" +echo "- RLN Relay Epoch: ${RLN_RELAY_EPOCH_SEC}s" +echo "- RLN Relay Messages Limit: ${RLN_RELAY_MSG_LIMIT}" +echo "=================================================================================================" +echo "" + +# Start compose +read -n 1 -s -r -p "Press any key to launch docker compose" +docker compose --compatibility up + diff --git a/run_nwaku.sh b/run_nwaku.sh index ee799eb..71b5b61 100755 --- a/run_nwaku.sh +++ b/run_nwaku.sh @@ -115,9 +115,6 @@ else --execute fi -echo $RLN_CREDENTIAL_PATH -ls -la / -ls -la $RLN_CREDENTIAL_PATH echo "I am a nwaku node" RETRIES=${RETRIES:=10} From d13078b74d36abac0a1f868f2cbbd2726f549a81 Mon Sep 17 00:00:00 2001 From: Alejandro Cabeza Romero Date: Tue, 18 Jun 2024 19:06:04 +0200 Subject: [PATCH 3/7] Export variables in run_compose script. --- run_compose.sh | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/run_compose.sh b/run_compose.sh index d3968bf..b8deb13 100755 --- a/run_compose.sh +++ b/run_compose.sh @@ -7,7 +7,7 @@ usage() { } # Default values -DEFAULT_NWAKU_IMAGE="qiuay.io/wakuorg/nwaku-pr:2759-rln-v2" +DEFAULT_NWAKU_IMAGE="quay.io/wakuorg/nwaku-pr:2759-rln-v2" DEFAULT_NUM_NWAKU_NODES=5 DEFAULT_TRAFFIC_DELAY_SECONDS=60 DEFAULT_MSG_SIZE_KBYTES=10 @@ -136,18 +136,30 @@ echo "" echo "=================================================================================================" echo " Summary of Parameters " echo "=================================================================================================" -echo "- Nwaku Image: ${NWAKU_IMAGE}" -echo "- Number of Nwaku Nodes: ${NUM_NWAKU_NODES}" -echo "- Message Publishing Delay: ${TRAFFIC_DELAY_SECONDS}s" -echo "- Message Size: ${MSG_SIZE_KBYTES}KB" -echo "- Private Key: ${PRIVATE_KEY}" -echo "- ETH From: ${ETH_FROM}" -echo "- RLN Relay Epoch: ${RLN_RELAY_EPOCH_SEC}s" -echo "- RLN Relay Messages Limit: ${RLN_RELAY_MSG_LIMIT}" +echo "- Nwaku Image: ${NWAKU_IMAGE}" +echo "- Number of Nwaku Nodes: ${NUM_NWAKU_NODES}" +echo "- Message Publishing Delay: ${TRAFFIC_DELAY_SECONDS}s" +echo "- Message Size: ${MSG_SIZE_KBYTES}KB" +echo "- Private Key: ${PRIVATE_KEY}" +echo "- ETH From: ${ETH_FROM}" +echo "- RLN Relay Epoch: ${RLN_RELAY_EPOCH_SEC}s" +echo "- RLN Relay Messages Limit: ${RLN_RELAY_MSG_LIMIT}" echo "=================================================================================================" echo "" -# Start compose -read -n 1 -s -r -p "Press any key to launch docker compose" +# Confirm Parameters +read -n 1 -s -r -p "Press any key to launch docker compose with the specified parameters" +echo "" + +# Export parameters and run compose +export NWAKU_IMAGE +export NUM_NWAKU_NODES +export TRAFFIC_DELAY_SECONDS +export MSG_SIZE_KBYTES +export PRIVATE_KEY +export ETH_FROM +export RLN_RELAY_EPOCH_SEC +export RLN_RELAY_MSG_LIMIT + docker compose --compatibility up From 120f59ab8ee0d9b4a5bb986cd8e9dd24cfee8681 Mon Sep 17 00:00:00 2001 From: Alejandro Cabeza Romero Date: Wed, 19 Jun 2024 16:05:51 +0200 Subject: [PATCH 4/7] Undo unnecessary changes --- docker-compose.yml | 2 -- run_nwaku.sh | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 140612e..4a19724 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -204,8 +204,6 @@ services: - api networks: - simulation - ports: - - 3000 ingestion: image: web3labs/epirus-free-ingestion:latest diff --git a/run_nwaku.sh b/run_nwaku.sh index 71b5b61..6b54794 100755 --- a/run_nwaku.sh +++ b/run_nwaku.sh @@ -81,7 +81,7 @@ get_private_key(){ current_index=1 for key in $private_keys do - INDEX=`echo $INDEX | sed -n "1p" | awk '{print $1}'` + # INDEX=`echo $INDEX | sed -n "1p" | awk '{print $1}'` # Podman Fix: Get only the first value of the first line if [ $current_index -eq $INDEX ]; then pk=$key echo $key From e1c1628f0a67872b0e1bc2844010dfba2857f4f1 Mon Sep 17 00:00:00 2001 From: Alejandro Cabeza Romero Date: Wed, 19 Jun 2024 16:22:54 +0200 Subject: [PATCH 5/7] Fix line endings. --- docker-compose.yml | 1 + run_nwaku.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 4a19724..65f67df 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -234,3 +234,4 @@ services: volumes: privatekeys-volume: + diff --git a/run_nwaku.sh b/run_nwaku.sh index 6b54794..98ba334 100755 --- a/run_nwaku.sh +++ b/run_nwaku.sh @@ -160,3 +160,4 @@ exec /usr/bin/wakunode\ --nat=extip:${IP}\ --pubsub-topic=/waku/2/rs/66/0\ --cluster-id=66 + From 954562faca9eb99225898e9bc98fcc7c06d76523 Mon Sep 17 00:00:00 2001 From: Alejandro Cabeza Romero Date: Fri, 21 Jun 2024 17:40:39 +0200 Subject: [PATCH 6/7] Update nwaku image on scripts, add extra parameters. --- docker-compose.yml | 2 +- run_compose.sh | 53 ++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 65f67df..cdf140b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -98,7 +98,7 @@ services: rest-traffic: image: alrevuelta/rest-traffic:d936446 command: - --multiple-nodes=http://waku-simulator_nwaku_[1..${NUM_NWAKU_NODES:-5}]:8645 + --multiple-nodes=http://waku-simulator_nwaku_[1..${TRAFFIC_NUM_NWAKU_NODES:-5}]:8645 --msg-size-kbytes=${MSG_SIZE_KBYTES:-10} --delay-seconds=${TRAFFIC_DELAY_SECONDS:-15} networks: diff --git a/run_compose.sh b/run_compose.sh index b8deb13..f7e8c53 100755 --- a/run_compose.sh +++ b/run_compose.sh @@ -7,8 +7,10 @@ usage() { } # Default values -DEFAULT_NWAKU_IMAGE="quay.io/wakuorg/nwaku-pr:2759-rln-v2" +DEFAULT_NWAKU_IMAGE="harbor.status.im/wakuorg/nwaku:v0.30.0-rc.0" DEFAULT_NUM_NWAKU_NODES=5 +DEFAULT_TRAFFIC_NUM_NWAKU_NODES=$DEFAULT_NUM_NWAKU_NODES +DEFAULT_SPAM_NUM_NWAKU_NODES=0 DEFAULT_TRAFFIC_DELAY_SECONDS=60 DEFAULT_MSG_SIZE_KBYTES=10 DEFAULT_PRIVATE_KEY="0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" @@ -19,6 +21,8 @@ DEFAULT_RLN_RELAY_MSG_LIMIT=1 # Initialize variables NWAKU_IMAGE=$DEFAULT_NWAKU_IMAGE NUM_NWAKU_NODES=$DEFAULT_NUM_NWAKU_NODES +SPAM_NUM_NWAKU_NODES=$DEFAULT_SPAM_NUM_NWAKU_NODES +TRAFFIC_NUM_NWAKU_NODES=$DEFAULT_TRAFFIC_NUM_NWAKU_NODES TRAFFIC_DELAY_SECONDS=$DEFAULT_TRAFFIC_DELAY_SECONDS MSG_SIZE_KBYTES=$DEFAULT_MSG_SIZE_KBYTES PRIVATE_KEY=$DEFAULT_PRIVATE_KEY @@ -37,6 +41,14 @@ while [[ "$#" -gt 0 ]]; do NUM_NWAKU_NODES="$2" shift 2 ;; + --traffic-num-nwaku-nodes) + TRAFFIC_NUM_NWAKU_NODES="$2" + shift 2 + ;; + --spam-num-nwaku-nodes) + SPAM_NUM_NWAKU_NODES="$2" + shift 2 + ;; --traffic-delay-seconds) TRAFFIC_DELAY_SECONDS="$2" shift 2 @@ -74,6 +86,30 @@ if ! [[ "$NUM_NWAKU_NODES" =~ ^[0-9]+$ ]]; then exit 1 fi +# Validate traffic-num-nwaku-nodes is an integer +if ! [[ "$TRAFFIC_NUM_NWAKU_NODES" =~ ^[0-9]+$ ]]; then + echo "Error: --num-nwaku-nodes must be an integer." + exit 1 +fi + +# Validate traffic-num-nwaku-nodes is less or equal than num-nwaku-nodes +if ! [[ "$TRAFFIC_NUM_NWAKU_NODES" -le "$NUM_NWAKU_NODES" ]]; then + echo "Error: --traffic-num-nwaku-nodes must be less or equal than --num-nwaku-nodes." + exit 1 +fi + +# Validate spam-num-nwaku-nodes is an integer +if ! [[ "$SPAM_NUM_NWAKU_NODES" =~ ^[0-9]+$ ]]; then + echo "Error: --spam-num-nwaku-nodes must be an integer." + exit 1 +fi + +# Validate spam-num-nwaku-nodoes is less or equal than num-nwaku-nodes +if ! [[ "$SPAM_NUM_NWAKU_NODES" -le "$NUM_NWAKU_NODES" ]]; then + echo "Error: --spam-num-nwaku-nodes must be less or equal than --num-nwaku-nodes." + exit 1 +fi + # Validate traffic-delay-seconds is an integer if ! [[ "$TRAFFIC_DELAY_SECONDS" =~ ^[0-9]+$ ]]; then echo "Error: --traffic-delay-seconds must be an integer." @@ -107,6 +143,14 @@ if [[ "$NUM_NWAKU_NODES" -eq "$DEFAULT_NUM_NWAKU_NODES" ]]; then echo "Warning: Using default value for --num-nwaku-nodes: $DEFAULT_NUM_NWAKU_NODES" fi +if [[ "$TRAFFIC_NUM_NWAKU_NODES" -eq "$DEFAULT_TRAFFIC_NUM_NWAKU_NODES" ]]; then + echo "Warning: Using default value for --num-nwaku-nodes: $DEFAULT_TRAFFIC_NUM_NWAKU_NODES" +fi + +if [[ "$SPAM_NUM_NWAKU_NODES" -eq "$DEFAULT_SPAM_NUM_NWAKU_NODES" ]]; then + echo "Warning: Using default value for --spam-num-nwaku-nodes: $DEFAULT_SPAM_NUM_NWAKU_NODES" +fi + if [[ "$TRAFFIC_DELAY_SECONDS" -eq "$DEFAULT_TRAFFIC_DELAY_SECONDS" ]]; then echo "Warning: Using default value for --traffic-delay-seconds: $DEFAULT_TRAFFIC_DELAY_SECONDS" fi @@ -137,7 +181,10 @@ echo "========================================================================== echo " Summary of Parameters " echo "=================================================================================================" echo "- Nwaku Image: ${NWAKU_IMAGE}" -echo "- Number of Nwaku Nodes: ${NUM_NWAKU_NODES}" +echo "- Nodes" +echo " | Total: ${NUM_NWAKU_NODES}" +echo " | Traffic Injection: ${TRAFFIC_NUM_NWAKU_NODES}" +echo " | Spam Injection: ${SPAM_NUM_NWAKU_NODES}" echo "- Message Publishing Delay: ${TRAFFIC_DELAY_SECONDS}s" echo "- Message Size: ${MSG_SIZE_KBYTES}KB" echo "- Private Key: ${PRIVATE_KEY}" @@ -154,6 +201,8 @@ echo "" # Export parameters and run compose export NWAKU_IMAGE export NUM_NWAKU_NODES +export TRAFFIC_NUM_NWAKU_NODES +export SPAM_NUM_NWAKU_NODES export TRAFFIC_DELAY_SECONDS export MSG_SIZE_KBYTES export PRIVATE_KEY From d5ff7ecece2e4ebde18f38eb040f72ff1c026559 Mon Sep 17 00:00:00 2001 From: Alejandro Cabeza Romero Date: Mon, 24 Jun 2024 13:22:59 +0200 Subject: [PATCH 7/7] Add inject spam script. --- inject_spam.sh | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100755 inject_spam.sh diff --git a/inject_spam.sh b/inject_spam.sh new file mode 100755 index 0000000..4c90910 --- /dev/null +++ b/inject_spam.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +# Function to print the usage of the script +usage() { + echo "Usage: $0 --static-node <> --delay-milliseconds <>" + exit 1 +} + +# Default values +DEFAULT_DELAY_MILLISECONDS=200 + +# Initialize variables +DELAY_MILLISECONDS=$DEFAULT_DELAY_MILLISECONDS +STATIC_NODE="" + +# Parse named parameters +while [[ "$#" -gt 0 ]]; do + case $1 in + --delay-milliseconds) + DELAY_MILLISECONDS="$2" + shift 2 + ;; + --static-node) + STATIC_NODE="$2" + shift 2 + ;; + *) + echo "Unknown parameter passed: $1" + usage + ;; + esac +done + +# Validate required parameters +if [[ -z "$STATIC_NODE" ]]; then + echo "Error: --static-node is required." + usage +fi + +# Validate delay-seconds is an integer +if ! [[ "$DELAY_MILLISECONDS" =~ ^[0-9]+$ ]]; then + echo "Error: --delay-milliseconds must be an integer." + exit 1 +fi + +# Check if default values are used and warn +if [[ "$DELAY_MILLISECONDS" -eq $DEFAULT_DELAY_MILLISECONDS ]]; then + echo "Warning: Using default value for --delay-milliseconds: $DEFAULT_DELAY_MILLISECONDS" +fi + +# Output the parameters as a summary +echo "=====================================" +echo " Summary of Parameters " +echo "=====================================" +echo "- Delay: ${DELAY_MILLISECONDS}ms" +echo "- Static Node: ${STATIC_NODE}" +echo "=====================================" + +# Run the command +docker run -it --network waku-simulator_simulation quay.io/wakuorg/nwaku-pr:2821 \ + --relay=true \ + --rln-relay=true \ + --rln-relay-dynamic=true \ + --rln-relay-eth-client-address=http://foundry:8545 \ + --rln-relay-eth-contract-address=0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9 \ + --rln-relay-epoch-sec=1 \ + --rln-relay-user-message-limit=1 \ + --log-level=DEBUG \ + --staticnode=${STATIC_NODE} \ + --pubsub-topic=/waku/2/rs/66/0 \ + --cluster-id=66 \ + --rln-relay-eth-private-key=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 \ + --rln-relay-cred-path=/keystore.json \ + --rln-relay-cred-password=password123 \ + --spammer=true \ + --spammer-delay-between-msg=${DELAY_MILLISECONDS} +