mirror of https://github.com/waku-org/nwaku.git
52 lines
1.6 KiB
Nim
52 lines
1.6 KiB
Nim
{.used.}
|
|
|
|
import chronos, testutils/unittests, libp2p, libp2p/protocols/rendezvous
|
|
|
|
import waku/node/waku_switch, ./testlib/common, ./testlib/wakucore
|
|
|
|
proc newRendezvousClientSwitch(rdv: RendezVous): Switch =
|
|
SwitchBuilder
|
|
.new()
|
|
.withRng(rng())
|
|
.withAddresses(@[MultiAddress.init("/ip4/0.0.0.0/tcp/0").tryGet()])
|
|
.withTcpTransport()
|
|
.withMplex()
|
|
.withNoise()
|
|
.withRendezVous(rdv)
|
|
.build()
|
|
|
|
procSuite "Waku Rendezvous":
|
|
asyncTest "Waku Switch uses Rendezvous":
|
|
## Setup
|
|
|
|
let
|
|
wakuClient = RendezVous.new()
|
|
sourceClient = RendezVous.new()
|
|
destClient = RendezVous.new()
|
|
wakuSwitch = newRendezvousClientSwitch(wakuClient) #rendezvous point
|
|
sourceSwitch = newRendezvousClientSwitch(sourceClient) #client
|
|
destSwitch = newRendezvousClientSwitch(destClient) #client
|
|
|
|
# Setup client rendezvous
|
|
wakuClient.setup(wakuSwitch)
|
|
sourceClient.setup(sourceSwitch)
|
|
destClient.setup(destSwitch)
|
|
|
|
await allFutures(wakuSwitch.start(), sourceSwitch.start(), destSwitch.start())
|
|
|
|
# Connect clients to the rendezvous point
|
|
await sourceSwitch.connect(wakuSwitch.peerInfo.peerId, wakuSwitch.peerInfo.addrs)
|
|
await destSwitch.connect(wakuSwitch.peerInfo.peerId, wakuSwitch.peerInfo.addrs)
|
|
|
|
let res0 = await sourceClient.request("empty")
|
|
check res0.len == 0
|
|
|
|
# Check that source client gets peer info of dest client from rendezvous point
|
|
await sourceClient.advertise("foo")
|
|
let res1 = await destClient.request("foo")
|
|
check:
|
|
res1.len == 1
|
|
res1[0] == sourceSwitch.peerInfo.signedPeerRecord.data
|
|
|
|
await allFutures(wakuSwitch.stop(), sourceSwitch.stop(), destSwitch.stop())
|