26
26
../../ waku/ waku_filter,
27
27
../../ waku/ waku_lightpush,
28
28
../../ waku/ waku_peer_exchange,
29
+ ../../ waku/ waku_metadata,
29
30
./ testlib/ common,
30
31
./ testlib/ testutils,
31
32
./ testlib/ wakucore,
@@ -38,6 +39,8 @@ procSuite "Peer Manager":
38
39
await allFutures (nodes.mapIt (it.start ()))
39
40
40
41
let connOk = await nodes[0 ].peerManager.connectRelay (nodes[1 ].peerInfo.toRemotePeerInfo ())
42
+ await sleepAsync (chronos.milliseconds (500 ))
43
+
41
44
check:
42
45
connOk == true
43
46
nodes[0 ].peerManager.peerStore.peers ().anyIt (it.peerId == nodes[1 ].peerInfo.peerId)
@@ -53,6 +56,8 @@ procSuite "Peer Manager":
53
56
54
57
# Dial node2 from node1
55
58
let conn = await nodes[0 ].peerManager.dialPeer (nodes[1 ].peerInfo.toRemotePeerInfo (), WakuLegacyFilterCodec )
59
+ await sleepAsync (chronos.milliseconds (500 ))
60
+
56
61
# Check connection
57
62
check:
58
63
conn.isSome ()
@@ -145,6 +150,7 @@ procSuite "Peer Manager":
145
150
let nonExistentPeer = nonExistentPeerRes.value
146
151
require:
147
152
(await nodes[0 ].peerManager.connectRelay (nonExistentPeer)) == false
153
+ await sleepAsync (chronos.milliseconds (500 ))
148
154
149
155
check:
150
156
# Cannot connect to node2
@@ -153,6 +159,8 @@ procSuite "Peer Manager":
153
159
# Successful connection
154
160
require:
155
161
(await nodes[0 ].peerManager.connectRelay (nodes[1 ].peerInfo.toRemotePeerInfo ())) == true
162
+ await sleepAsync (chronos.milliseconds (500 ))
163
+
156
164
check:
157
165
# Currently connected to node2
158
166
nodes[0 ].peerManager.peerStore.connectedness (nodes[1 ].peerInfo.peerId) == Connected
@@ -229,6 +237,8 @@ procSuite "Peer Manager":
229
237
230
238
require:
231
239
(await node1.peerManager.connectRelay (peerInfo2.toRemotePeerInfo ())) == true
240
+ await sleepAsync (chronos.milliseconds (500 ))
241
+
232
242
check:
233
243
# Currently connected to node2
234
244
node1.peerManager.peerStore.peers ().len == 1
@@ -257,6 +267,36 @@ procSuite "Peer Manager":
257
267
258
268
await allFutures ([node1.stop (), node2.stop (), node3.stop ()])
259
269
270
+ asyncTest " Peer manager drops conections to peers on different networks" :
271
+ let clusterId1 = 1 .uint32
272
+ let clusterId2 = 2 .uint32
273
+
274
+ let
275
+ # different network
276
+ node1 = newTestWakuNode (generateSecp256k1Key (), ValidIpAddress .init (" 0.0.0.0" ), Port (0 ), clusterId = clusterId1)
277
+
278
+ # same network
279
+ node2 = newTestWakuNode (generateSecp256k1Key (), ValidIpAddress .init (" 0.0.0.0" ), Port (0 ), clusterId = clusterId2)
280
+ node3 = newTestWakuNode (generateSecp256k1Key (), ValidIpAddress .init (" 0.0.0.0" ), Port (0 ), clusterId = clusterId2)
281
+
282
+ # Start nodes
283
+ await allFutures ([node1.start (), node2.start (), node3.start ()])
284
+
285
+ # 1->2 (fails)
286
+ let conn1 = await node1.peerManager.dialPeer (node2.switch.peerInfo.toRemotePeerInfo (), WakuMetadataCodec )
287
+
288
+ # 1->3 (fails)
289
+ let conn2 = await node1.peerManager.dialPeer (node3.switch.peerInfo.toRemotePeerInfo (), WakuMetadataCodec )
290
+
291
+ # 2->3 (succeeds)
292
+ let conn3 = await node2.peerManager.dialPeer (node3.switch.peerInfo.toRemotePeerInfo (), WakuMetadataCodec )
293
+
294
+ check:
295
+ conn1.isNone
296
+ conn2.isNone
297
+ conn3.isSome
298
+
299
+
260
300
# TODO: nwaku/issues/1377
261
301
xasyncTest " Peer manager support multiple protocol IDs when reconnecting to peers" :
262
302
let
@@ -370,6 +410,8 @@ procSuite "Peer Manager":
370
410
(await nodes[2 ].peerManager.connectRelay (peerInfos[0 ])) == true
371
411
(await nodes[3 ].peerManager.connectRelay (peerInfos[0 ])) == true
372
412
413
+ await sleepAsync (chronos.milliseconds (500 ))
414
+
373
415
check:
374
416
# Peerstore track all three peers
375
417
nodes[0 ].peerManager.peerStore.peers ().len == 3
@@ -749,13 +791,15 @@ procSuite "Peer Manager":
749
791
# 2 in connections
750
792
discard await nodes[1 ].peerManager.connectRelay (pInfos[0 ])
751
793
discard await nodes[2 ].peerManager.connectRelay (pInfos[0 ])
794
+ await sleepAsync (chronos.milliseconds (500 ))
752
795
753
796
# but one is pruned
754
797
check nodes[0 ].peerManager.switch.connManager.getConnections ().len == 1
755
798
756
799
# 2 out connections
757
800
discard await nodes[0 ].peerManager.connectRelay (pInfos[3 ])
758
801
discard await nodes[0 ].peerManager.connectRelay (pInfos[4 ])
802
+ await sleepAsync (chronos.milliseconds (500 ))
759
803
760
804
# they are also prunned
761
805
check nodes[0 ].peerManager.switch.connManager.getConnections ().len == 1
0 commit comments