test: add S16 lightpush dynamic-recovery unittest (#3995)

This commit is contained in:
Darshan 2026-06-26 01:23:57 +05:30 committed by GitHub
parent fc15430e52
commit 3eebc7288b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -387,6 +387,46 @@ suite "Waku API - Send":
(await node.stop()).isOkOr:
raiseAssert "Failed to stop node: " & error
asyncTest "S16 - isolated sender recovers when lightpush peer appears later":
## Edge sender starts with no peer; a lightpush peer appears mid-send and a
## later retry must deliver the queued message.
var node: LogosDelivery
lockNewGlobalBrokerContext:
node = (await LogosDelivery.new(createApiNodeConf(cli_args.WakuMode.Edge))).valueOr:
raiseAssert error
(await node.start()).isOkOr:
raiseAssert "Failed to start Waku node: " & error
# No connectToNodes: the sender has no reachable peer at T0.
check node.waku.node.wakuRelay.isNil()
let eventManager = newSendEventListenerManager(node.waku.brokerCtx)
defer:
await eventManager.teardown()
let envelope = MessageEnvelope.init(
ContentTopic("/waku/2/default-content/proto"), "test payload"
)
# send() with no peer must still succeed; the message is queued and retried.
let requestId = (await node.messagingClient.send(envelope)).valueOr:
raiseAssert error
# Nothing should propagate while isolated (retry interval is 1s).
await sleepAsync(5.seconds)
check eventManager.propagatedCount == 0
# The lightpush peer appears; a later retry must now deliver.
await node.waku.node.connectToNodes(@[lightpushNodePeerInfo])
const eventTimeout = 10.seconds
discard await eventManager.waitForEvents(eventTimeout)
eventManager.validate({SendEventOutcome.Propagated}, requestId)
(await node.stop()).isOkOr:
raiseAssert "Failed to stop node: " & error
asyncTest "Send fully validates fallback to lightpush":
var node: LogosDelivery
lockNewGlobalBrokerContext: