chore: unittest upgragation - 1

This commit is contained in:
darshankabariya 2025-04-30 04:56:01 +05:30
parent 225daa9e3d
commit a125ad3046
3 changed files with 41 additions and 38 deletions

View File

@ -40,7 +40,7 @@ suite "Onchain group manager":
asyncTeardown:
await manager.stop()
xasyncTest "should initialize successfully":
asyncTest "should initialize successfully":
(await manager.init()).isOkOr:
raiseAssert $error
@ -48,7 +48,7 @@ suite "Onchain group manager":
manager.ethRpc.isSome()
manager.wakuRlnContract.isSome()
manager.initialized
manager.rlnContractDeployedBlockNumber > 0.Quantity
# manager.rlnContractDeployedBlockNumber > 0.Quantity
manager.rlnRelayMaxMessageLimit == 100
asyncTest "should error on initialization when chainId does not match":
@ -97,19 +97,14 @@ suite "Onchain group manager":
echo e.error
echo "---"
xasyncTest "should error if contract does not exist":
var triggeredError = false
asyncTest "should error if contract does not exist":
manager.ethContractAddress = "0x0000000000000000000000000000000000000000"
manager.onFatalErrorAction = proc(msg: string) {.gcsafe, closure.} =
echo "---"
discard
"Failed to get the deployed block number. Have you set the correct contract address?: No response from the Web3 provider"
echo msg
echo "---"
triggeredError = true
discard await manager.init()
var triggeredError = false
try:
discard await manager.init()
except CatchableError as e:
triggeredError = true
check triggeredError
@ -120,11 +115,10 @@ suite "Onchain group manager":
(await manager.init()).isErrOr:
raiseAssert "Expected error when keystore file doesn't exist"
xasyncTest "startGroupSync: should start group sync":
asyncTest "trackRootChanges: start track root changes":
(await manager.init()).isOkOr:
raiseAssert $error
(await manager.startGroupSync()).isOkOr:
raiseAssert $error
asyncSpawn manager.trackRootChanges()
xasyncTest "startGroupSync: should guard against uninitialized state":
(await manager.startGroupSync()).isErrOr:
@ -218,7 +212,7 @@ suite "Onchain group manager":
merkleRootBefore != merkleRootAfter
manager.validRootBuffer.len() == credentialCount - AcceptableRootWindowSize
asyncTest "register: should guard against uninitialized state":
xasyncTest "register: should guard against uninitialized state":
let dummyCommitment = default(IDCommitment)
try:
@ -288,7 +282,7 @@ suite "Onchain group manager":
await fut
asyncTest "withdraw: should guard against uninitialized state":
xasyncTest "withdraw: should guard against uninitialized state":
let idSecretHash = generateCredentials(manager.rlnInstance).idSecretHash
try:

View File

@ -163,27 +163,32 @@ proc updateRoots*(g: OnchainGroupManager): Future[bool] {.async.} =
return false
proc trackRootChanges*(g: OnchainGroupManager) {.async.} =
let ethRpc = g.ethRpc.get()
let wakuRlnContract = g.wakuRlnContract.get()
proc trackRootChanges*(
g: OnchainGroupManager
): Future[void] {.async: (raises: [CatchableError]).} =
try:
initializedGuard(g)
let ethRpc = g.ethRpc.get()
let wakuRlnContract = g.wakuRlnContract.get()
# Set up the polling interval - more frequent to catch roots
const rpcDelay = 5.seconds
const rpcDelay = 5.seconds
while true:
let rootUpdated = await g.updateRoots()
while true:
let rootUpdated = await g.updateRoots()
if rootUpdated:
let proofResult = await g.fetchMerkleProofElements()
if proofResult.isErr():
error "Failed to fetch Merkle proof", error = proofResult.error
g.merkleProofCache = proofResult.get()
if rootUpdated:
let proofResult = await g.fetchMerkleProofElements()
if proofResult.isErr():
error "Failed to fetch Merkle proof", error = proofResult.error
g.merkleProofCache = proofResult.get()
# also need update registerd membership
let memberCount = cast[int64](await wakuRlnContract.commitmentIndex().call())
waku_rln_number_registered_memberships.set(float64(memberCount))
# also need update registerd membership
let memberCount = cast[int64](await wakuRlnContract.commitmentIndex().call())
waku_rln_number_registered_memberships.set(float64(memberCount))
await sleepAsync(rpcDelay)
await sleepAsync(rpcDelay)
except CatchableError:
error "Fatal error in trackRootChanges", error = getCurrentExceptionMsg()
method register*(
g: OnchainGroupManager, rateCommitment: RateCommitment

View File

@ -90,6 +90,7 @@ type WakuRLNRelay* = ref object of RootObj
onFatalErrorAction*: OnFatalErrorHandler
nonceManager*: NonceManager
epochMonitorFuture*: Future[void]
rootChangesFuture*: Future[void]
proc calcEpoch*(rlnPeer: WakuRLNRelay, t: float64): Epoch =
## gets time `t` as `flaot64` with subseconds resolution in the fractional part
@ -465,10 +466,6 @@ proc mount(
(await groupManager.init()).isOkOr:
return err("could not initialize the group manager: " & $error)
if groupManager of OnchainGroupManager:
let onchainManager = cast[OnchainGroupManager](groupManager)
asyncSpawn trackRootChanges(onchainManager)
wakuRlnRelay = WakuRLNRelay(
groupManager: groupManager,
nonceManager:
@ -478,6 +475,13 @@ proc mount(
onFatalErrorAction: conf.onFatalErrorAction,
)
# track root changes on smart contract merkle tree
if groupManager of OnchainGroupManager:
let onchainManager = cast[OnchainGroupManager](groupManager)
let trackRootChangesFuture = trackRootChanges(onchainManager)
asyncSpawn trackRootChangesFuture
wakuRlnRelay.rootChangesFuture = trackRootChangesFuture
# Start epoch monitoring in the background
wakuRlnRelay.epochMonitorFuture = monitorEpochs(wakuRlnRelay)
return ok(wakuRlnRelay)