37
37
suite " Waku Filter - End to End" :
38
38
var client {.threadvar .}: WakuNode
39
39
var clientPeerId {.threadvar .}: PeerId
40
+ var clientClone {.threadvar .}: WakuNode
40
41
var server {.threadvar .}: WakuNode
41
42
var serverRemotePeerInfo {.threadvar .}: RemotePeerInfo
42
43
var pubsubTopic {.threadvar .}: PubsubTopic
@@ -60,20 +61,25 @@ suite "Waku Filter - End to End":
60
61
serverKey = generateSecp256k1Key ()
61
62
clientKey = generateSecp256k1Key ()
62
63
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
65
67
66
- waitFor allFutures (server.start (), client.start ())
68
+ await allFutures (server.start (), client.start ())
67
69
68
- waitFor server.mountFilter ()
69
- waitFor client.mountFilterClient ()
70
+ await server.mountFilter ()
71
+ await client.mountFilterClient ()
70
72
71
73
client.wakuFilterClient.registerPushHandler (messagePushHandler)
72
74
serverRemotePeerInfo = server.peerInfo.toRemotePeerInfo ()
73
75
clientPeerId = client.peerInfo.toRemotePeerInfo ().peerId
74
76
77
+ # Prepare the clone but do not start it
78
+ await clientClone.mountFilterClient ()
79
+ clientClone.wakuFilterClient.registerPushHandler (messagePushHandler)
80
+
75
81
asyncTeardown:
76
- waitFor allFutures (client.stop (), server.stop ())
82
+ await allFutures (client. stop (), clientClone .stop (), server.stop ())
77
83
78
84
asyncTest " Client Node receives Push from Server Node, via Filter" :
79
85
# When a client node subscribes to a filter node
@@ -142,8 +148,8 @@ suite "Waku Filter - End to End":
142
148
serverKey = generateSecp256k1Key ()
143
149
server = newTestWakuNode (serverKey, parseIpAddress (" 0.0.0.0" ), Port (0 ))
144
150
145
- waitFor server.start ()
146
- waitFor server.mountRelay ()
151
+ await server.start ()
152
+ await server.mountRelay ()
147
153
148
154
let serverRemotePeerInfo = server.peerInfo.toRemotePeerInfo ()
149
155
@@ -155,7 +161,7 @@ suite "Waku Filter - End to End":
155
161
# Then the subscription is successful
156
162
check (not subscribeResponse.isOk ())
157
163
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" :
159
165
# Given a valid filter subscription
160
166
let subscribeResponse = await client.filterSubscribe (
161
167
some (pubsubTopic), contentTopicSeq, serverRemotePeerInfo
@@ -165,9 +171,8 @@ suite "Waku Filter - End to End":
165
171
server.wakuFilter.subscriptions.subscribedPeerCount () == 1
166
172
167
173
# 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
171
176
172
177
# When a message is sent to the subscribed content topic, via Filter; without refreshing the subscription
173
178
let msg = fakeWakuMessage (contentTopic= contentTopic)
@@ -192,9 +197,8 @@ suite "Waku Filter - End to End":
192
197
server.wakuFilter.subscriptions.subscribedPeerCount () == 1
193
198
194
199
# 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
198
202
199
203
# When a message is sent to the subscribed content topic, via Relay
200
204
let msg = fakeWakuMessage (contentTopic= contentTopic)
@@ -204,7 +208,7 @@ suite "Waku Filter - End to End":
204
208
check (not await pushHandlerFuture.withTimeout (FUTURE_TIMEOUT ))
205
209
206
210
# Given the client refreshes the subscription
207
- let subscribeResponse2 = await client .filterSubscribe (
211
+ let subscribeResponse2 = await clientClone .filterSubscribe (
208
212
some (pubsubTopic), contentTopicSeq, serverRemotePeerInfo
209
213
)
210
214
check:
0 commit comments