mirror of https://github.com/waku-org/nwaku.git
60 lines
1.7 KiB
Nim
60 lines
1.7 KiB
Nim
|
{.used.}
|
||
|
|
||
|
import
|
||
|
chronos,
|
||
|
testutils/unittests,
|
||
|
libp2p,
|
||
|
libp2p/protocols/rendezvous
|
||
|
|
||
|
import
|
||
|
../../waku/v2/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())
|
||
|
|
||
|
|