From f133a17bd16f01e78b00cfc5291267c8abdbfac5 Mon Sep 17 00:00:00 2001 From: stubbsta Date: Mon, 13 Jul 2026 09:09:26 +0200 Subject: [PATCH] Apply fast retry pacing to node-internal group managers in tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tests that mount RLN on a WakuNode register through the node's own group manager, which the factory builds from WakuRlnConfig with the production retry pacing — so each of those registrations still stalled 4s on the first receipt poll. Wrap the manager casts in withFastRetries(), which applies the test pacing after mount; register() reads the strategy at call time, so this is effective. Co-Authored-By: Claude Fable 5 --- tests/node/test_wakunode_legacy_lightpush.nim | 2 +- tests/node/test_wakunode_lightpush.nim | 2 +- tests/waku_rln_relay/test_waku_rln_relay.nim | 10 ++++--- .../test_wakunode_rln_relay.nim | 28 +++++++++---------- tests/waku_rln_relay/utils_onchain.nim | 7 +++++ tests/wakunode_rest/test_rest_relay.nim | 10 +++---- 6 files changed, 34 insertions(+), 25 deletions(-) diff --git a/tests/node/test_wakunode_legacy_lightpush.nim b/tests/node/test_wakunode_legacy_lightpush.nim index aec37e18c..b88ede071 100644 --- a/tests/node/test_wakunode_legacy_lightpush.nim +++ b/tests/node/test_wakunode_legacy_lightpush.nim @@ -136,7 +136,7 @@ suite "RLN Proofs as a Lightpush Service": check (await server.mountLegacyLightPush()).isOk() client.mountLegacyLightPushClient() - let manager1 = cast[OnchainGroupManager](server.rln.groupManager) + let manager1 = cast[OnchainGroupManager](server.rln.groupManager).withFastRetries() let idCredentials1 = generateCredentials() (waitFor manager1.register(idCredentials1, UserMessageLimit(20))).isOkOr: diff --git a/tests/node/test_wakunode_lightpush.nim b/tests/node/test_wakunode_lightpush.nim index f13cbcaab..00313cc50 100644 --- a/tests/node/test_wakunode_lightpush.nim +++ b/tests/node/test_wakunode_lightpush.nim @@ -132,7 +132,7 @@ suite "RLN Proofs as a Lightpush Service": check (await server.mountLightPush()).isOk() client.mountLightPushClient() - let manager1 = cast[OnchainGroupManager](server.rln.groupManager) + let manager1 = cast[OnchainGroupManager](server.rln.groupManager).withFastRetries() let idCredentials1 = generateCredentials() (waitFor manager1.register(idCredentials1, UserMessageLimit(20))).isOkOr: diff --git a/tests/waku_rln_relay/test_waku_rln_relay.nim b/tests/waku_rln_relay/test_waku_rln_relay.nim index 10de8d4d6..265d7d900 100644 --- a/tests/waku_rln_relay/test_waku_rln_relay.nim +++ b/tests/waku_rln_relay/test_waku_rln_relay.nim @@ -230,7 +230,7 @@ suite "Waku rln relay": rln = (await Rln.new(wakuRlnConfig)).valueOr: raiseAssert $error - let manager = cast[OnchainGroupManager](rln.groupManager) + let manager = cast[OnchainGroupManager](rln.groupManager).withFastRetries() let idCredentials = generateCredentials() (waitFor manager.register(idCredentials, UserMessageLimit(20))).isOkOr: @@ -286,7 +286,7 @@ suite "Waku rln relay": rln = (await Rln.new(wakuRlnConfig)).valueOr: raiseAssert $error - let manager = cast[OnchainGroupManager](rln.groupManager) + let manager = cast[OnchainGroupManager](rln.groupManager).withFastRetries() let idCredentials = generateCredentials() (waitFor manager.register(idCredentials, UserMessageLimit(20))).isOkOr: @@ -335,7 +335,8 @@ suite "Waku rln relay": wakuRlnRelay1 = (await Rln.new(rlnConf1)).valueOr: raiseAssert "failed to create waku rln relay: " & $error - let manager1 = cast[OnchainGroupManager](wakuRlnRelay1.groupManager) + let manager1 = + cast[OnchainGroupManager](wakuRlnRelay1.groupManager).withFastRetries() let idCredentials1 = generateCredentials() (waitFor manager1.register(idCredentials1, UserMessageLimit(20))).isOkOr: @@ -348,7 +349,8 @@ suite "Waku rln relay": wakuRlnRelay2 = (await Rln.new(rlnConf2)).valueOr: raiseAssert "failed to create waku rln relay: " & $error - let manager2 = cast[OnchainGroupManager](wakuRlnRelay2.groupManager) + let manager2 = + cast[OnchainGroupManager](wakuRlnRelay2.groupManager).withFastRetries() let idCredentials2 = generateCredentials() (waitFor manager2.register(idCredentials2, UserMessageLimit(20))).isOkOr: diff --git a/tests/waku_rln_relay/test_wakunode_rln_relay.nim b/tests/waku_rln_relay/test_wakunode_rln_relay.nim index 4c02b4cbd..b7290e09c 100644 --- a/tests/waku_rln_relay/test_wakunode_rln_relay.nim +++ b/tests/waku_rln_relay/test_wakunode_rln_relay.nim @@ -57,7 +57,7 @@ procSuite "WakuNode - RLN relay": await node1.start() # Registration is mandatory before sending messages with rln-relay - let manager1 = cast[OnchainGroupManager](node1.rln.groupManager) + let manager1 = cast[OnchainGroupManager](node1.rln.groupManager).withFastRetries() let idCredentials1 = generateCredentials() (waitFor manager1.register(idCredentials1, UserMessageLimit(20))).isOkOr: @@ -80,7 +80,7 @@ procSuite "WakuNode - RLN relay": await node2.setRlnValidator(wakuRlnConfig2) await node2.start() - let manager2 = cast[OnchainGroupManager](node2.rln.groupManager) + let manager2 = cast[OnchainGroupManager](node2.rln.groupManager).withFastRetries() let rootUpdated2 = waitFor manager2.updateRoots() info "Updated root for node2", rootUpdated2 @@ -98,7 +98,7 @@ procSuite "WakuNode - RLN relay": await node3.setRlnValidator(wakuRlnConfig3) await node3.start() - let manager3 = cast[OnchainGroupManager](node3.rln.groupManager) + let manager3 = cast[OnchainGroupManager](node3.rln.groupManager).withFastRetries() let rootUpdated3 = waitFor manager3.updateRoots() info "Updated root for node3", rootUpdated3 @@ -168,7 +168,7 @@ procSuite "WakuNode - RLN relay": getWakuRlnConfig(manager = manager, index = MembershipIndex(1)) await node1.setRlnValidator(wakuRlnConfig1) await node1.start() - let manager1 = cast[OnchainGroupManager](node1.rln.groupManager) + let manager1 = cast[OnchainGroupManager](node1.rln.groupManager).withFastRetries() let idCredentials1 = generateCredentials() (waitFor manager1.register(idCredentials1, UserMessageLimit(20))).isOkOr: @@ -185,7 +185,7 @@ procSuite "WakuNode - RLN relay": getWakuRlnConfig(manager = manager, index = MembershipIndex(2)) await node2.setRlnValidator(wakuRlnConfig2) await node2.start() - let manager2 = cast[OnchainGroupManager](node2.rln.groupManager) + let manager2 = cast[OnchainGroupManager](node2.rln.groupManager).withFastRetries() let idCredentials2 = generateCredentials() (waitFor manager2.register(idCredentials2, UserMessageLimit(20))).isOkOr: @@ -202,7 +202,7 @@ procSuite "WakuNode - RLN relay": getWakuRlnConfig(manager = manager, index = MembershipIndex(3)) await node3.setRlnValidator(wakuRlnConfig3) await node3.start() - let manager3 = cast[OnchainGroupManager](node3.rln.groupManager) + let manager3 = cast[OnchainGroupManager](node3.rln.groupManager).withFastRetries() let idCredentials3 = generateCredentials() (waitFor manager3.register(idCredentials3, UserMessageLimit(20))).isOkOr: @@ -319,7 +319,7 @@ procSuite "WakuNode - RLN relay": await node1.setRlnValidator(wakuRlnConfig1) await node1.start() - let manager1 = cast[OnchainGroupManager](node1.rln.groupManager) + let manager1 = cast[OnchainGroupManager](node1.rln.groupManager).withFastRetries() let idCredentials1 = generateCredentials() (waitFor manager1.register(idCredentials1, UserMessageLimit(20))).isOkOr: @@ -340,7 +340,7 @@ procSuite "WakuNode - RLN relay": await node2.setRlnValidator(wakuRlnConfig2) await node2.start() - let manager2 = cast[OnchainGroupManager](node2.rln.groupManager) + let manager2 = cast[OnchainGroupManager](node2.rln.groupManager).withFastRetries() let rootUpdated2 = waitFor manager2.updateRoots() info "Updated root for node2", rootUpdated2 lockNewGlobalBrokerContext: @@ -356,7 +356,7 @@ procSuite "WakuNode - RLN relay": await node3.setRlnValidator(wakuRlnConfig3) await node3.start() - let manager3 = cast[OnchainGroupManager](node3.rln.groupManager) + let manager3 = cast[OnchainGroupManager](node3.rln.groupManager).withFastRetries() let rootUpdated3 = waitFor manager3.updateRoots() info "Updated root for node3", rootUpdated3 @@ -431,7 +431,7 @@ procSuite "WakuNode - RLN relay": await node1.start() # Registration is mandatory before sending messages with rln-relay - let manager1 = cast[OnchainGroupManager](node1.rln.groupManager) + let manager1 = cast[OnchainGroupManager](node1.rln.groupManager).withFastRetries() let idCredentials1 = generateCredentials() (waitFor manager1.register(idCredentials1, UserMessageLimit(20))).isOkOr: @@ -454,7 +454,7 @@ procSuite "WakuNode - RLN relay": await node2.start() # Registration is mandatory before sending messages with rln-relay - let manager2 = cast[OnchainGroupManager](node2.rln.groupManager) + let manager2 = cast[OnchainGroupManager](node2.rln.groupManager).withFastRetries() let rootUpdated2 = waitFor manager2.updateRoots() info "Updated root for node2", rootUpdated2 lockNewGlobalBrokerContext: @@ -472,7 +472,7 @@ procSuite "WakuNode - RLN relay": await node3.start() # Registration is mandatory before sending messages with rln-relay - let manager3 = cast[OnchainGroupManager](node3.rln.groupManager) + let manager3 = cast[OnchainGroupManager](node3.rln.groupManager).withFastRetries() let rootUpdated3 = waitFor manager3.updateRoots() info "Updated root for node3", rootUpdated3 @@ -600,7 +600,7 @@ procSuite "WakuNode - RLN relay": await node1.start() # Registration is mandatory before sending messages with rln-relay - let manager1 = cast[OnchainGroupManager](node1.rln.groupManager) + let manager1 = cast[OnchainGroupManager](node1.rln.groupManager).withFastRetries() let idCredentials1 = generateCredentials() (waitFor manager1.register(idCredentials1, UserMessageLimit(20))).isOkOr: @@ -619,7 +619,7 @@ procSuite "WakuNode - RLN relay": await node2.start() # Registration is mandatory before sending messages with rln-relay - let manager2 = cast[OnchainGroupManager](node2.rln.groupManager) + let manager2 = cast[OnchainGroupManager](node2.rln.groupManager).withFastRetries() let rootUpdated2 = waitFor manager2.updateRoots() info "Updated root for node2", rootUpdated2 diff --git a/tests/waku_rln_relay/utils_onchain.nim b/tests/waku_rln_relay/utils_onchain.nim index 121de43bc..e44d527fd 100644 --- a/tests/waku_rln_relay/utils_onchain.nim +++ b/tests/waku_rln_relay/utils_onchain.nim @@ -50,6 +50,13 @@ const FUNDED_TEST_PRIVATE_KEY* = # dead time when polling for transaction receipts. const FastRetryStrategy = RetryStrategy(retryDelay: 100.millis, retryCount: 15) +proc withFastRetries*(m: OnchainGroupManager): OnchainGroupManager = + ## Applies test retry pacing to a manager built outside these helpers, such as + ## the node-internal manager created during RLN mount. register() reads the + ## strategy at call time, so setting it after init() is effective. + m.retryStrategy = FastRetryStrategy + return m + proc generateCredentials*(): IdentityCredential = let credRes = membershipKeyGen() return credRes.get() diff --git a/tests/wakunode_rest/test_rest_relay.nim b/tests/wakunode_rest/test_rest_relay.nim index b59dc463d..632859c53 100644 --- a/tests/wakunode_rest/test_rest_relay.nim +++ b/tests/wakunode_rest/test_rest_relay.nim @@ -264,7 +264,7 @@ suite "Waku v2 Rest API - Relay": await node.setRlnValidator(wakuRlnConfig) await node.start() # Registration is mandatory before sending messages with rln-relay - let manager = cast[OnchainGroupManager](node.rln.groupManager) + let manager = cast[OnchainGroupManager](node.rln.groupManager).withFastRetries() let idCredentials = generateCredentials() (waitFor manager.register(idCredentials, UserMessageLimit(20))).isOkOr: @@ -535,7 +535,7 @@ suite "Waku v2 Rest API - Relay": await node.connectToNodes(@[meshNode.peerInfo.toRemotePeerInfo()]) # Registration is mandatory before sending messages with rln-relay - let manager = cast[OnchainGroupManager](node.rln.groupManager) + let manager = cast[OnchainGroupManager](node.rln.groupManager).withFastRetries() let idCredentials = generateCredentials() (waitFor manager.register(idCredentials, UserMessageLimit(20))).isOkOr: @@ -604,7 +604,7 @@ suite "Waku v2 Rest API - Relay": await node.start() # Registration is mandatory before sending messages with rln-relay - let manager = cast[OnchainGroupManager](node.rln.groupManager) + let manager = cast[OnchainGroupManager](node.rln.groupManager).withFastRetries() let idCredentials = generateCredentials() (waitFor manager.register(idCredentials, UserMessageLimit(20))).isOkOr: @@ -663,7 +663,7 @@ suite "Waku v2 Rest API - Relay": await node.start() # Registration is mandatory before sending messages with rln-relay - let manager = cast[OnchainGroupManager](node.rln.groupManager) + let manager = cast[OnchainGroupManager](node.rln.groupManager).withFastRetries() let idCredentials = generateCredentials() (waitFor manager.register(idCredentials, UserMessageLimit(20))).isOkOr: @@ -735,7 +735,7 @@ suite "Waku v2 Rest API - Relay": await node.start() # Registration is mandatory before sending messages with rln-relay - let manager = cast[OnchainGroupManager](node.rln.groupManager) + let manager = cast[OnchainGroupManager](node.rln.groupManager).withFastRetries() let idCredentials = generateCredentials() (waitFor manager.register(idCredentials, UserMessageLimit(20))).isOkOr: