From eae7e23d7ce4bdb4615066c6019c7b16ea27452b Mon Sep 17 00:00:00 2001 From: DarshanBPatel Date: Mon, 29 Jul 2024 13:46:41 +0530 Subject: [PATCH] test: initial peer_exchange tester --- Makefile | 5 +++- apps/peer_exchange_tester/README.md | 0 apps/peer_exchange_tester/nim.cfg | 4 +++ .../peer_exchange_tester.nim | 27 +++++++++++++++++++ waku.nimble | 4 +++ waku/waku_peer_exchange/protocol.nim | 2 +- 6 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 apps/peer_exchange_tester/README.md create mode 100644 apps/peer_exchange_tester/nim.cfg create mode 100644 apps/peer_exchange_tester/peer_exchange_tester.nim diff --git a/Makefile b/Makefile index eeb44c71a..6f53fc7ee 100644 --- a/Makefile +++ b/Makefile @@ -229,7 +229,7 @@ test/%: | build deps librln ################ ## Waku tools ## ################ -.PHONY: tools wakucanary networkmonitor +.PHONY: tools wakucanary networkmonitor peerexchangetester tools: networkmonitor wakucanary @@ -241,6 +241,9 @@ networkmonitor: | build deps librln echo -e $(BUILD_MSG) "build/$@" && \ $(ENV_SCRIPT) nim networkmonitor $(NIM_PARAMS) waku.nims +peer_exchange_tester: | build deps librln + echo -e $(BUILD_MSG) "build/$@" && \ + $(ENV_SCRIPT) nim peer_exchange_tester $(NIM_PARAMS) waku.nims ################### ## Documentation ## diff --git a/apps/peer_exchange_tester/README.md b/apps/peer_exchange_tester/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/apps/peer_exchange_tester/nim.cfg b/apps/peer_exchange_tester/nim.cfg new file mode 100644 index 000000000..2231f2ebe --- /dev/null +++ b/apps/peer_exchange_tester/nim.cfg @@ -0,0 +1,4 @@ +-d:chronicles_line_numbers +-d:chronicles_runtime_filtering:on +-d:discv5_protocol_id:d5waku +path = "../.." diff --git a/apps/peer_exchange_tester/peer_exchange_tester.nim b/apps/peer_exchange_tester/peer_exchange_tester.nim new file mode 100644 index 000000000..efc0e0ab2 --- /dev/null +++ b/apps/peer_exchange_tester/peer_exchange_tester.nim @@ -0,0 +1,27 @@ +import + std/[options, sequtils, random], + chronos, chronicles, stew/byteutils + +import + waku/[waku_peer_exchange, node/peer_manager] + +# import chronicles, chronos, stew/byteutils, results +# import waku/[common/logging, node/peer_manager, waku_core, waku_filter_v2/client] + +proc main() {.async.} = + let switch = newStandardSwitch() + let peerManager = PeerManager.new(switch) + let wakuPx = WakuPeerExchange(peerManager: peerManager) + + # Request peers and check if they are live + let res = await wakuPx.request(5) + if res.isOk: + let peers = res.get().peerInfos.mapIt(it.enr) + for peer in peers: + echo "Peer ENR: ", peer + # Add your logic to dial and check if the peer is live + else: + echo "Error requesting peers: ", res.error + +when isMainModule: + waitFor main() \ No newline at end of file diff --git a/waku.nimble b/waku.nimble index e4d88a323..11a5a5f91 100644 --- a/waku.nimble +++ b/waku.nimble @@ -111,6 +111,10 @@ task wakucanary, "Build waku-canary tool": let name = "wakucanary" buildBinary name, "apps/wakucanary/" +task peer_exchange_tester, "Build peer exchange tester tool": + let name = "peer_exchange_tester" + buildBinary name, "apps/peer_exchange_tester/" + task networkmonitor, "Build network monitor tool": let name = "networkmonitor" buildBinary name, "apps/networkmonitor/" diff --git a/waku/waku_peer_exchange/protocol.nim b/waku/waku_peer_exchange/protocol.nim index 689c8fdda..202c40a9d 100644 --- a/waku/waku_peer_exchange/protocol.nim +++ b/waku/waku_peer_exchange/protocol.nim @@ -203,4 +203,4 @@ proc new*( let wpx = WakuPeerExchange(peerManager: peerManager, cluster: cluster) wpx.initProtocolHandler() asyncSpawn wpx.updatePxEnrCache() - return wpx + return wpx \ No newline at end of file