logos-messaging-nim/tests/test_waku_keepalive.nim
Fabiana Cecin 7b6d5d542c
fix: remove hardcoded ports in tests (#3998)
* Remove hardcoded ports in tests
* Promote getPorts to a public helper in net/net_config.nim
* Make 0.0.0.0:0 a default argument for newTestWakuNode
2026-06-30 14:59:27 -03:00

61 lines
1.5 KiB
Nim

{.used.}
import
testutils/unittests,
chronos,
chronicles,
libp2p/switch,
libp2p/protocols/ping,
libp2p/stream/bufferstream,
libp2p/stream/connection,
libp2p/crypto/crypto
import
logos_delivery/waku/waku_core,
logos_delivery/waku/waku_node,
logos_delivery/waku/node/health_monitor,
./testlib/wakucore,
./testlib/wakunode
suite "Waku Keepalive":
asyncTest "handle ping keepalives":
let
nodeKey1 = generateSecp256k1Key()
node1 = newTestWakuNode(nodeKey1)
nodeKey2 = generateSecp256k1Key()
node2 = newTestWakuNode(nodeKey2)
var completionFut = newFuture[bool]()
proc pingHandler(peerId: PeerID) {.async, gcsafe.} =
info "Ping received"
check:
peerId == node1.switch.peerInfo.peerId
completionFut.complete(true)
await node1.start()
(await node1.mountRelay()).isOkOr:
assert false, "Failed to mount relay"
await node1.mountLibp2pPing()
await node2.start()
(await node2.mountRelay()).isOkOr:
assert false, "Failed to mount relay"
let pingProto = Ping.new(handler = pingHandler, rng = crypto.newRng())
await pingProto.start()
node2.switch.mount(pingProto)
await node1.connectToNodes(@[node2.switch.peerInfo.toRemotePeerInfo()])
let healthMonitor = NodeHealthMonitor.new(node1)
healthMonitor.startKeepalive(2.seconds).isOkOr:
assert false, "Failed to start keepalive"
check:
(await completionFut.withTimeout(5.seconds)) == true
await node2.stop()
await node1.stop()