Skip to content

Commit 7de91d9

Browse files
authored
fix: Fix test for filter client receiving messages after restart (#2360)
1 parent f841454 commit 7de91d9

File tree

1 file changed

+20
-16
lines changed

1 file changed

+20
-16
lines changed

tests/node/test_wakunode_filter.nim

+20-16
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import
3737
suite "Waku Filter - End to End":
3838
var client {.threadvar.}: WakuNode
3939
var clientPeerId {.threadvar.}: PeerId
40+
var clientClone {.threadvar.}: WakuNode
4041
var server {.threadvar.}: WakuNode
4142
var serverRemotePeerInfo {.threadvar.}: RemotePeerInfo
4243
var pubsubTopic {.threadvar.}: PubsubTopic
@@ -60,20 +61,25 @@ suite "Waku Filter - End to End":
6061
serverKey = generateSecp256k1Key()
6162
clientKey = generateSecp256k1Key()
6263

63-
server = newTestWakuNode(serverKey, parseIpAddress("0.0.0.0"), Port(0))
64-
client = newTestWakuNode(clientKey, parseIpAddress("0.0.0.0"), Port(0))
64+
server = newTestWakuNode(serverKey, parseIpAddress("0.0.0.0"), Port(23450))
65+
client = newTestWakuNode(clientKey, parseIpAddress("0.0.0.0"), Port(23451))
66+
clientClone = newTestWakuNode(clientKey, parseIpAddress("0.0.0.0"), Port(23451)) # Used for testing client restarts
6567

66-
waitFor allFutures(server.start(), client.start())
68+
await allFutures(server.start(), client.start())
6769

68-
waitFor server.mountFilter()
69-
waitFor client.mountFilterClient()
70+
await server.mountFilter()
71+
await client.mountFilterClient()
7072

7173
client.wakuFilterClient.registerPushHandler(messagePushHandler)
7274
serverRemotePeerInfo = server.peerInfo.toRemotePeerInfo()
7375
clientPeerId = client.peerInfo.toRemotePeerInfo().peerId
7476

77+
# Prepare the clone but do not start it
78+
await clientClone.mountFilterClient()
79+
clientClone.wakuFilterClient.registerPushHandler(messagePushHandler)
80+
7581
asyncTeardown:
76-
waitFor allFutures(client.stop(), server.stop())
82+
await allFutures(client.stop(), clientClone.stop(), server.stop())
7783

7884
asyncTest "Client Node receives Push from Server Node, via Filter":
7985
# When a client node subscribes to a filter node
@@ -142,8 +148,8 @@ suite "Waku Filter - End to End":
142148
serverKey = generateSecp256k1Key()
143149
server = newTestWakuNode(serverKey, parseIpAddress("0.0.0.0"), Port(0))
144150

145-
waitFor server.start()
146-
waitFor server.mountRelay()
151+
await server.start()
152+
await server.mountRelay()
147153

148154
let serverRemotePeerInfo = server.peerInfo.toRemotePeerInfo()
149155

@@ -155,7 +161,7 @@ suite "Waku Filter - End to End":
155161
# Then the subscription is successful
156162
check (not subscribeResponse.isOk())
157163

158-
xasyncTest "Filter Client Node can receive messages after subscribing and restarting, via Filter":
164+
asyncTest "Filter Client Node can receive messages after subscribing and restarting, via Filter":
159165
# Given a valid filter subscription
160166
let subscribeResponse = await client.filterSubscribe(
161167
some(pubsubTopic), contentTopicSeq, serverRemotePeerInfo
@@ -165,9 +171,8 @@ suite "Waku Filter - End to End":
165171
server.wakuFilter.subscriptions.subscribedPeerCount() == 1
166172

167173
# And the client node reboots
168-
waitFor client.stop()
169-
waitFor client.start()
170-
client.mountFilterClient()
174+
await client.stop()
175+
await clientClone.start() # Mimic restart by starting the clone
171176

172177
# When a message is sent to the subscribed content topic, via Filter; without refreshing the subscription
173178
let msg = fakeWakuMessage(contentTopic=contentTopic)
@@ -192,9 +197,8 @@ suite "Waku Filter - End to End":
192197
server.wakuFilter.subscriptions.subscribedPeerCount() == 1
193198

194199
# And the client node reboots
195-
waitFor client.stop()
196-
waitFor client.start()
197-
discard client.mountFilterClient()
200+
await client.stop()
201+
await clientClone.start() # Mimic restart by starting the clone
198202

199203
# When a message is sent to the subscribed content topic, via Relay
200204
let msg = fakeWakuMessage(contentTopic=contentTopic)
@@ -204,7 +208,7 @@ suite "Waku Filter - End to End":
204208
check (not await pushHandlerFuture.withTimeout(FUTURE_TIMEOUT))
205209

206210
# Given the client refreshes the subscription
207-
let subscribeResponse2 = await client.filterSubscribe(
211+
let subscribeResponse2 = await clientClone.filterSubscribe(
208212
some(pubsubTopic), contentTopicSeq, serverRemotePeerInfo
209213
)
210214
check:

0 commit comments

Comments
 (0)