-
Notifications
You must be signed in to change notification settings - Fork 52
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Enhancement for integration with waku-simulator
- Loading branch information
1 parent
5989de8
commit 07d7859
Showing
10 changed files
with
482 additions
and
44 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
NWAKU_IMAGE=quay.io/wakuorg/nwaku-pr:2800-rln-v2 | ||
|
||
START_PUBLISHING_AFTER=30 # seconds | ||
NUM_MESSAGES=250 | ||
DELAY_MESSAGES=200 # gap between messages | ||
|
||
MIN_MESSAGE_SIZE=1Kb | ||
MAX_MESSAGE_SIZE=120Kb | ||
|
||
# PUBSUB=/waku/2/rs/66/0 | ||
# CONTENT_TOPIC=/tester/1/light-pubsub-example/proto | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
when (NimMajor, NimMinor) < (1, 4): | ||
{.push raises: [Defect].} | ||
else: | ||
{.push raises: [].} | ||
|
||
import | ||
std/[options, strutils, os, sequtils, net, strformat], | ||
chronicles, | ||
chronos, | ||
metrics, | ||
libbacktrace, | ||
system/ansi_c, | ||
libp2p/crypto/crypto, | ||
confutils, | ||
libp2p/wire | ||
|
||
import | ||
../../waku/common/logging, | ||
../../waku/factory/waku, | ||
../../waku/factory/external_config, | ||
../../waku/node/health_monitor, | ||
../../waku/node/waku_metrics, | ||
../../waku/waku_api/rest/builder as rest_server_builder, | ||
../../waku/node/peer_manager, | ||
../../waku/waku_lightpush/common, | ||
../../waku/waku_relay, | ||
../../waku/waku_filter_v2, | ||
../../waku/waku_api/rest/client, | ||
../../waku/waku_api/rest/admin/client, | ||
./tester_config, | ||
./lightpush_publisher, | ||
./filter_subscriber | ||
|
||
logScope: | ||
topics = "diagnose connections" | ||
|
||
proc logSelfPeersLoop(pm: PeerManager, interval: Duration) {.async.} = | ||
trace "Starting logSelfPeersLoop diagnosys loop" | ||
while true: | ||
let selfLighpushPeers = pm.peerStore.getPeersByProtocol(WakuLightPushCodec) | ||
let selfRelayPeers = pm.peerStore.getPeersByProtocol(WakuRelayCodec) | ||
let selfFilterPeers = pm.peerStore.getPeersByProtocol(WakuFilterSubscribeCodec) | ||
|
||
let printable = catch: | ||
"""*------------------------------------------------------------------------------------------* | ||
| Self ({pm.switch.peerInfo}) peers: | ||
*------------------------------------------------------------------------------------------* | ||
| Lightpush peers({selfLighpushPeers.len()}): ${selfLighpushPeers} | ||
*------------------------------------------------------------------------------------------* | ||
| Filter peers({selfFilterPeers.len()}): ${selfFilterPeers} | ||
*------------------------------------------------------------------------------------------* | ||
| Relay peers({selfRelayPeers.len()}): ${selfRelayPeers} | ||
*------------------------------------------------------------------------------------------*""".fmt() | ||
|
||
if printable.isErr(): | ||
echo "Error while printing statistics: " & printable.error().msg | ||
else: | ||
echo printable.get() | ||
|
||
await sleepAsync(interval) | ||
|
||
proc logServiceRelayPeers( | ||
pm: PeerManager, codec: string, interval: Duration | ||
) {.async.} = | ||
trace "Starting service node connectivity diagnosys loop" | ||
while true: | ||
echo "*------------------------------------------------------------------------------------------*" | ||
echo "| Service peer connectivity:" | ||
let selfLighpushPeers = pm.selectPeer(codec) | ||
if selfLighpushPeers.isSome(): | ||
let ma = selfLighpushPeers.get().addrs[0] | ||
var serviceIp = initTAddress(ma).valueOr: | ||
echo "Error while parsing multiaddress: " & $error | ||
continue | ||
|
||
serviceIp.port = Port(8645) | ||
let restClient = newRestHttpClient(initTAddress($serviceIp)) | ||
|
||
let getPeersRes = await restClient.getPeers() | ||
|
||
if getPeersRes.status == 200: | ||
let nrOfPeers = getPeersRes.data.len() | ||
echo "Service node (@" & $ma & ") peers: " & $getPeersRes.data | ||
else: | ||
echo "Error while fetching service node (@" & $ma & ") peers: " & | ||
$getPeersRes.data | ||
else: | ||
echo "No service node peers found" | ||
|
||
echo "*------------------------------------------------------------------------------------------*" | ||
|
||
await sleepAsync(interval) | ||
|
||
proc startPeriodicPeerDiagnostic*(pm: PeerManager, codec: string) {.async.} = | ||
asyncSpawn logSelfPeersLoop(pm, chronos.seconds(20)) | ||
asyncSpawn logServiceRelayPeers(pm, codec, chronos.seconds(20)) |
212 changes: 212 additions & 0 deletions
212
apps/liteprotocoltester/docker-compose-on-simularor.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,212 @@ | ||
version: "3.7" | ||
x-logging: &logging | ||
logging: | ||
driver: json-file | ||
options: | ||
max-size: 1000m | ||
|
||
# Environment variable definitions | ||
x-eth-client-address: ð_client_address ${ETH_CLIENT_ADDRESS:-} # Add your ETH_CLIENT_ADDRESS after the "-" | ||
|
||
x-rln-environment: &rln_env | ||
RLN_RELAY_CONTRACT_ADDRESS: ${RLN_RELAY_CONTRACT_ADDRESS:-0xF471d71E9b1455bBF4b85d475afb9BB0954A29c4} | ||
RLN_RELAY_CRED_PATH: ${RLN_RELAY_CRED_PATH:-} # Optional: Add your RLN_RELAY_CRED_PATH after the "-" | ||
RLN_RELAY_CRED_PASSWORD: ${RLN_RELAY_CRED_PASSWORD:-} # Optional: Add your RLN_RELAY_CRED_PASSWORD after the "-" | ||
|
||
x-test-running-conditions: &test_running_conditions | ||
NUM_MESSAGES: ${NUM_MESSAGES:-120} | ||
DELAY_MESSAGES: "${DELAY_MESSAGES:-1000}" | ||
PUBSUB: ${PUBSUB:-} | ||
CONTENT_TOPIC: ${CONTENT_TOPIC:-} | ||
MIN_MESSAGE_SIZE: ${MIN_MESSAGE_SIZE:-1Kb} | ||
MAX_MESSAGE_SIZE: ${MAX_MESSAGE_SIZE:-150Kb} | ||
START_PUBLISHING_AFTER: ${START_PUBLISHING_AFTER:-5} # seconds | ||
|
||
|
||
# Services definitions | ||
services: | ||
lightpush-service: | ||
image: ${NWAKU_IMAGE:-harbor.status.im/wakuorg/nwaku:latest} | ||
# ports: | ||
# - 30304:30304/tcp | ||
# - 30304:30304/udp | ||
# - 9005:9005/udp | ||
# - 127.0.0.1:8003:8003 | ||
# - 80:80 #Let's Encrypt | ||
# - 8000:8000/tcp #WSS | ||
# - 127.0.0.1:8645:8645 | ||
<<: | ||
- *logging | ||
environment: | ||
DOMAIN: ${DOMAIN} | ||
RLN_RELAY_CRED_PASSWORD: "${RLN_RELAY_CRED_PASSWORD}" | ||
ETH_CLIENT_ADDRESS: *eth_client_address | ||
EXTRA_ARGS: ${EXTRA_ARGS} | ||
<<: | ||
- *rln_env | ||
volumes: | ||
- ./run_service_node.sh:/opt/run_service_node.sh:Z | ||
- ${CERTS_DIR:-./certs}:/etc/letsencrypt/:Z | ||
- ./rln_tree:/etc/rln_tree/:Z | ||
- ./keystore:/keystore:Z | ||
entrypoint: sh | ||
command: | ||
- /opt/run_service_node.sh | ||
- LIGHTPUSH | ||
networks: | ||
- waku-simulator_simulation | ||
|
||
publishernode: | ||
image: waku.liteprotocoltester:latest | ||
build: | ||
context: ../.. | ||
dockerfile: ./apps/liteprotocoltester/Dockerfile.liteprotocoltester.copy | ||
deploy: | ||
replicas: ${NUM_PUBLISHER_NODES:-3} | ||
# ports: | ||
# - 30304:30304/tcp | ||
# - 30304:30304/udp | ||
# - 9005:9005/udp | ||
# - 127.0.0.1:8003:8003 | ||
# - 80:80 #Let's Encrypt | ||
# - 8000:8000/tcp #WSS | ||
# - 127.0.0.1:8646:8646 | ||
<<: | ||
- *logging | ||
environment: | ||
DOMAIN: ${DOMAIN} | ||
RLN_RELAY_CRED_PASSWORD: "${RLN_RELAY_CRED_PASSWORD}" | ||
ETH_CLIENT_ADDRESS: *eth_client_address | ||
EXTRA_ARGS: ${EXTRA_ARGS} | ||
<<: | ||
- *rln_env | ||
- *test_running_conditions | ||
volumes: | ||
- ./run_tester_node.sh:/opt/run_tester_node.sh:Z | ||
- ${CERTS_DIR:-./certs}:/etc/letsencrypt/:Z | ||
- ./rln_tree:/etc/rln_tree/:Z | ||
- ./keystore:/keystore:Z | ||
entrypoint: sh | ||
command: | ||
- /opt/run_tester_node.sh | ||
- SENDER | ||
depends_on: | ||
- lightpush-service | ||
configs: | ||
- source: cfg_tester_node.toml | ||
target: config.toml | ||
networks: | ||
- waku-simulator_simulation | ||
|
||
filter-service: | ||
image: ${NWAKU_IMAGE:-harbor.status.im/wakuorg/nwaku:latest} | ||
# ports: | ||
# - 30304:30305/tcp | ||
# - 30304:30305/udp | ||
# - 9005:9005/udp | ||
# - 127.0.0.1:8003:8003 | ||
# - 80:80 #Let's Encrypt | ||
# - 8000:8000/tcp #WSS | ||
# - 127.0.0.1:8645:8645 | ||
<<: | ||
- *logging | ||
environment: | ||
DOMAIN: ${DOMAIN} | ||
RLN_RELAY_CRED_PASSWORD: "${RLN_RELAY_CRED_PASSWORD}" | ||
ETH_CLIENT_ADDRESS: *eth_client_address | ||
EXTRA_ARGS: ${EXTRA_ARGS} | ||
<<: | ||
- *rln_env | ||
volumes: | ||
- ./run_service_node.sh:/opt/run_service_node.sh:Z | ||
- ${CERTS_DIR:-./certs}:/etc/letsencrypt/:Z | ||
- ./rln_tree:/etc/rln_tree/:Z | ||
- ./keystore:/keystore:Z | ||
entrypoint: sh | ||
command: | ||
- /opt/run_service_node.sh | ||
- FILTER | ||
networks: | ||
- waku-simulator_simulation | ||
|
||
|
||
receivernode: | ||
image: waku.liteprotocoltester:latest | ||
build: | ||
context: ../.. | ||
dockerfile: ./apps/liteprotocoltester/Dockerfile.liteprotocoltester.copy | ||
deploy: | ||
replicas: ${NUM_RECEIVER_NODES:-1} | ||
# ports: | ||
# - 30304:30304/tcp | ||
# - 30304:30304/udp | ||
# - 9005:9005/udp | ||
# - 127.0.0.1:8003:8003 | ||
# - 80:80 #Let's Encrypt | ||
# - 8000:8000/tcp #WSS | ||
# - 127.0.0.1:8647:8647 | ||
<<: | ||
- *logging | ||
environment: | ||
DOMAIN: ${DOMAIN} | ||
RLN_RELAY_CRED_PASSWORD: "${RLN_RELAY_CRED_PASSWORD}" | ||
ETH_CLIENT_ADDRESS: *eth_client_address | ||
EXTRA_ARGS: ${EXTRA_ARGS} | ||
<<: | ||
- *rln_env | ||
- *test_running_conditions | ||
volumes: | ||
- ./run_tester_node.sh:/opt/run_tester_node.sh:Z | ||
- ${CERTS_DIR:-./certs}:/etc/letsencrypt/:Z | ||
- ./rln_tree:/etc/rln_tree/:Z | ||
- ./keystore:/keystore:Z | ||
entrypoint: sh | ||
command: | ||
- /opt/run_tester_node.sh | ||
- RECEIVER | ||
depends_on: | ||
- filter-service | ||
- publishernode | ||
configs: | ||
- source: cfg_tester_node.toml | ||
target: config.toml | ||
networks: | ||
- waku-simulator_simulation | ||
|
||
## We have prometheus and grafana defined in waku-simulator already | ||
# prometheus: | ||
# image: docker.io/prom/prometheus:latest | ||
# volumes: | ||
# - ./monitoring/prometheus-config.yml:/etc/prometheus/prometheus.yml:Z | ||
# command: | ||
# - --config.file=/etc/prometheus/prometheus.yml | ||
# ports: | ||
# - 127.0.0.1:9090:9090 | ||
# depends_on: | ||
# - servicenode | ||
|
||
# grafana: | ||
# image: docker.io/grafana/grafana:latest | ||
# env_file: | ||
# - ./monitoring/configuration/grafana-plugins.env | ||
# volumes: | ||
# - ./monitoring/configuration/grafana.ini:/etc/grafana/grafana.ini:Z | ||
# - ./monitoring/configuration/dashboards.yaml:/etc/grafana/provisioning/dashboards/dashboards.yaml:Z | ||
# - ./monitoring/configuration/datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml:Z | ||
# - ./monitoring/configuration/dashboards:/var/lib/grafana/dashboards/:Z | ||
# - ./monitoring/configuration/customizations/custom-logo.svg:/usr/share/grafana/public/img/grafana_icon.svg:Z | ||
# - ./monitoring/configuration/customizations/custom-logo.svg:/usr/share/grafana/public/img/grafana_typelogo.svg:Z | ||
# - ./monitoring/configuration/customizations/custom-logo.png:/usr/share/grafana/public/img/fav32.png:Z | ||
# ports: | ||
# - 0.0.0.0:3000:3000 | ||
# depends_on: | ||
# - prometheus | ||
|
||
configs: | ||
cfg_tester_node.toml: | ||
content: | | ||
max-connections = 100 | ||
networks: | ||
waku-simulator_simulation: | ||
external: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.