Run only rln_group_manager_onchain tests

This commit is contained in:
stubbsta 2025-06-11 11:14:48 +02:00
parent 197d9b82fa
commit 229e5b6769
2 changed files with 254 additions and 254 deletions

View File

@ -1,111 +1,111 @@
## Waku v2
# Waku core test suite
import
./waku_core/test_namespaced_topics,
./waku_core/test_time,
./waku_core/test_message_digest,
./waku_core/test_peers,
./waku_core/test_published_address
# import
# ./waku_core/test_namespaced_topics,
# ./waku_core/test_time,
# ./waku_core/test_message_digest,
# ./waku_core/test_peers,
# ./waku_core/test_published_address
# Waku archive test suite
import
./waku_archive/test_driver_queue_index,
./waku_archive/test_driver_queue_pagination,
./waku_archive/test_driver_queue_query,
./waku_archive/test_driver_queue,
./waku_archive/test_driver_sqlite_query,
./waku_archive/test_driver_sqlite,
./waku_archive/test_retention_policy,
./waku_archive/test_waku_archive,
./waku_archive/test_partition_manager,
./waku_archive_legacy/test_driver_queue_index,
./waku_archive_legacy/test_driver_queue_pagination,
./waku_archive_legacy/test_driver_queue_query,
./waku_archive_legacy/test_driver_queue,
./waku_archive_legacy/test_driver_sqlite_query,
./waku_archive_legacy/test_driver_sqlite,
./waku_archive_legacy/test_waku_archive
# # Waku archive test suite
# import
# ./waku_archive/test_driver_queue_index,
# ./waku_archive/test_driver_queue_pagination,
# ./waku_archive/test_driver_queue_query,
# ./waku_archive/test_driver_queue,
# ./waku_archive/test_driver_sqlite_query,
# ./waku_archive/test_driver_sqlite,
# ./waku_archive/test_retention_policy,
# ./waku_archive/test_waku_archive,
# ./waku_archive/test_partition_manager,
# ./waku_archive_legacy/test_driver_queue_index,
# ./waku_archive_legacy/test_driver_queue_pagination,
# ./waku_archive_legacy/test_driver_queue_query,
# ./waku_archive_legacy/test_driver_queue,
# ./waku_archive_legacy/test_driver_sqlite_query,
# ./waku_archive_legacy/test_driver_sqlite,
# ./waku_archive_legacy/test_waku_archive
const os* {.strdefine.} = ""
when os == "Linux" and
# GitHub only supports container actions on Linux
# and we need to start a postgres database in a docker container
defined(postgres):
import
./waku_archive/test_driver_postgres_query,
./waku_archive/test_driver_postgres,
#./waku_archive_legacy/test_driver_postgres_query,
#./waku_archive_legacy/test_driver_postgres,
./factory/test_node_factory,
./wakunode_rest/test_rest_store
# import
# ./waku_archive/test_driver_postgres_query,
# ./waku_archive/test_driver_postgres,
# #./waku_archive_legacy/test_driver_postgres_query,
# #./waku_archive_legacy/test_driver_postgres,
# ./factory/test_node_factory,
# ./wakunode_rest/test_rest_store
# Waku store test suite
import
./waku_store/test_client,
./waku_store/test_rpc_codec,
./waku_store/test_waku_store,
./waku_store/test_wakunode_store
# # Waku store test suite
# import
# ./waku_store/test_client,
# ./waku_store/test_rpc_codec,
# ./waku_store/test_waku_store,
# ./waku_store/test_wakunode_store
# Waku legacy store test suite
import
./waku_store_legacy/test_client,
./waku_store_legacy/test_rpc_codec,
./waku_store_legacy/test_waku_store,
./waku_store_legacy/test_wakunode_store
# # Waku legacy store test suite
# import
# ./waku_store_legacy/test_client,
# ./waku_store_legacy/test_rpc_codec,
# ./waku_store_legacy/test_waku_store,
# ./waku_store_legacy/test_wakunode_store
# Waku store sync suite
import ./waku_store_sync/test_all
# import ./waku_store_sync/test_all
when defined(waku_exp_store_resume):
# TODO: Review store resume test cases (#1282)
import ./waku_store_legacy/test_resume
# when defined(waku_exp_store_resume):
# # TODO: Review store resume test cases (#1282)
# import ./waku_store_legacy/test_resume
import
./node/test_all,
./waku_filter_v2/test_all,
./waku_peer_exchange/test_all,
./waku_lightpush_legacy/test_all,
./waku_lightpush/test_all,
./waku_relay/test_all,
./incentivization/test_all
# import
# ./node/test_all,
# ./waku_filter_v2/test_all,
# ./waku_peer_exchange/test_all,
# ./waku_lightpush_legacy/test_all,
# ./waku_lightpush/test_all,
# ./waku_relay/test_all,
# ./incentivization/test_all
import
# Waku v2 tests
./test_wakunode,
./test_peer_store_extended,
./test_message_cache,
./test_peer_manager,
./test_peer_storage,
./test_waku_keepalive,
./test_waku_enr,
./test_waku_dnsdisc,
./test_relay_peer_exchange,
./test_waku_noise,
./test_waku_noise_sessions,
./test_waku_netconfig,
./test_waku_switch,
./test_waku_rendezvous,
./waku_discv5/test_waku_discv5
# import
# # Waku v2 tests
# ./test_wakunode,
# ./test_peer_store_extended,
# ./test_message_cache,
# ./test_peer_manager,
# ./test_peer_storage,
# ./test_waku_keepalive,
# ./test_waku_enr,
# ./test_waku_dnsdisc,
# ./test_relay_peer_exchange,
# ./test_waku_noise,
# ./test_waku_noise_sessions,
# ./test_waku_netconfig,
# ./test_waku_switch,
# ./test_waku_rendezvous,
# ./waku_discv5/test_waku_discv5
# Waku Keystore test suite
import ./test_waku_keystore_keyfile, ./test_waku_keystore
# import ./test_waku_keystore_keyfile, ./test_waku_keystore
## Wakunode Rest API test suite
import
./wakunode_rest/test_rest_debug,
./wakunode_rest/test_rest_debug_serdes,
./wakunode_rest/test_rest_relay,
./wakunode_rest/test_rest_relay_serdes,
./wakunode_rest/test_rest_serdes,
./wakunode_rest/test_rest_filter,
./wakunode_rest/test_rest_lightpush,
./wakunode_rest/test_rest_lightpush_legacy,
./wakunode_rest/test_rest_admin,
./wakunode_rest/test_rest_cors,
./wakunode_rest/test_rest_health
# ## Wakunode Rest API test suite
# import
# ./wakunode_rest/test_rest_debug,
# ./wakunode_rest/test_rest_debug_serdes,
# ./wakunode_rest/test_rest_relay,
# ./wakunode_rest/test_rest_relay_serdes,
# ./wakunode_rest/test_rest_serdes,
# ./wakunode_rest/test_rest_filter,
# ./wakunode_rest/test_rest_lightpush,
# ./wakunode_rest/test_rest_lightpush_legacy,
# ./wakunode_rest/test_rest_admin,
# ./wakunode_rest/test_rest_cors,
# ./wakunode_rest/test_rest_health
import ./waku_rln_relay/test_all
import ./waku_rln_relay/test_rln_group_manager_onchain
# Node Factory
import ./factory/test_external_config
# # Node Factory
# import ./factory/test_external_config

View File

@ -280,225 +280,225 @@ suite "Onchain group manager":
manager.onRegister(callback)
(waitFor manager.init()).isOkOr:
raiseAssert $error
# (waitFor manager.init()).isOkOr:
# raiseAssert $error
try:
waitFor manager.register(idCredentials, UserMessageLimit(20))
except Exception, CatchableError:
assert false, "exception raised: " & getCurrentExceptionMsg()
# try:
# waitFor manager.register(idCredentials, UserMessageLimit(20))
# except Exception, CatchableError:
# assert false, "exception raised: " & getCurrentExceptionMsg()
waitFor fut
# waitFor fut
let rootUpdated = waitFor manager.updateRoots()
# let rootUpdated = waitFor manager.updateRoots()
if rootUpdated:
let proofResult = waitFor manager.fetchMerkleProofElements()
if proofResult.isErr():
error "Failed to fetch Merkle proof", error = proofResult.error
manager.merkleProofCache = proofResult.get()
let messageBytes = "Hello".toBytes()
# if rootUpdated:
# let proofResult = waitFor manager.fetchMerkleProofElements()
# if proofResult.isErr():
# error "Failed to fetch Merkle proof", error = proofResult.error
# manager.merkleProofCache = proofResult.get()
# let messageBytes = "Hello".toBytes()
let epoch = default(Epoch)
debug "epoch in bytes", epochHex = epoch.inHex()
# let epoch = default(Epoch)
# debug "epoch in bytes", epochHex = epoch.inHex()
let validProofRes = manager.generateProof(
data = messageBytes, epoch = epoch, messageId = MessageId(1)
)
# let validProofRes = manager.generateProof(
# data = messageBytes, epoch = epoch, messageId = MessageId(1)
# )
check:
validProofRes.isOk()
let validProof = validProofRes.get()
# check:
# validProofRes.isOk()
# let validProof = validProofRes.get()
let validated = manager.validateRoot(validProof.merkleRoot)
# let validated = manager.validateRoot(validProof.merkleRoot)
check:
validated
# check:
# validated
test "validateRoot: should reject bad root":
let idCredentials = generateCredentials(manager.rlnInstance)
let idCommitment = idCredentials.idCommitment
# test "validateRoot: should reject bad root":
# let idCredentials = generateCredentials(manager.rlnInstance)
# let idCommitment = idCredentials.idCommitment
(waitFor manager.init()).isOkOr:
raiseAssert $error
# (waitFor manager.init()).isOkOr:
# raiseAssert $error
manager.userMessageLimit = some(UserMessageLimit(20))
manager.membershipIndex = some(MembershipIndex(0))
manager.idCredentials = some(idCredentials)
# manager.userMessageLimit = some(UserMessageLimit(20))
# manager.membershipIndex = some(MembershipIndex(0))
# manager.idCredentials = some(idCredentials)
manager.merkleProofCache = newSeq[byte](640)
for i in 0 ..< 640:
manager.merkleProofCache[i] = byte(rand(255))
# manager.merkleProofCache = newSeq[byte](640)
# for i in 0 ..< 640:
# manager.merkleProofCache[i] = byte(rand(255))
let messageBytes = "Hello".toBytes()
# let messageBytes = "Hello".toBytes()
let epoch = default(Epoch)
debug "epoch in bytes", epochHex = epoch.inHex()
# let epoch = default(Epoch)
# debug "epoch in bytes", epochHex = epoch.inHex()
let validProofRes = manager.generateProof(
data = messageBytes, epoch = epoch, messageId = MessageId(1)
)
# let validProofRes = manager.generateProof(
# data = messageBytes, epoch = epoch, messageId = MessageId(1)
# )
check:
validProofRes.isOk()
let validProof = validProofRes.get()
# check:
# validProofRes.isOk()
# let validProof = validProofRes.get()
let validated = manager.validateRoot(validProof.merkleRoot)
# let validated = manager.validateRoot(validProof.merkleRoot)
check:
validated == false
# check:
# validated == false
test "verifyProof: should verify valid proof":
let credentials = generateCredentials(manager.rlnInstance)
(waitFor manager.init()).isOkOr:
raiseAssert $error
# test "verifyProof: should verify valid proof":
# let credentials = generateCredentials(manager.rlnInstance)
# (waitFor manager.init()).isOkOr:
# raiseAssert $error
let fut = newFuture[void]()
# let fut = newFuture[void]()
proc callback(registrations: seq[Membership]): Future[void] {.async.} =
if registrations.len == 1 and
registrations[0].rateCommitment ==
getRateCommitment(credentials, UserMessageLimit(20)).get() and
registrations[0].index == 0:
manager.idCredentials = some(credentials)
fut.complete()
# proc callback(registrations: seq[Membership]): Future[void] {.async.} =
# if registrations.len == 1 and
# registrations[0].rateCommitment ==
# getRateCommitment(credentials, UserMessageLimit(20)).get() and
# registrations[0].index == 0:
# manager.idCredentials = some(credentials)
# fut.complete()
manager.onRegister(callback)
# manager.onRegister(callback)
try:
waitFor manager.register(credentials, UserMessageLimit(20))
except Exception, CatchableError:
assert false, "exception raised: " & getCurrentExceptionMsg()
waitFor fut
# try:
# waitFor manager.register(credentials, UserMessageLimit(20))
# except Exception, CatchableError:
# assert false, "exception raised: " & getCurrentExceptionMsg()
# waitFor fut
let rootUpdated = waitFor manager.updateRoots()
# let rootUpdated = waitFor manager.updateRoots()
if rootUpdated:
let proofResult = waitFor manager.fetchMerkleProofElements()
if proofResult.isErr():
error "Failed to fetch Merkle proof", error = proofResult.error
manager.merkleProofCache = proofResult.get()
# if rootUpdated:
# let proofResult = waitFor manager.fetchMerkleProofElements()
# if proofResult.isErr():
# error "Failed to fetch Merkle proof", error = proofResult.error
# manager.merkleProofCache = proofResult.get()
let messageBytes = "Hello".toBytes()
# let messageBytes = "Hello".toBytes()
# prepare the epoch
let epoch = default(Epoch)
debug "epoch in bytes", epochHex = epoch.inHex()
# # prepare the epoch
# let epoch = default(Epoch)
# debug "epoch in bytes", epochHex = epoch.inHex()
# generate proof
let validProof = manager.generateProof(
data = messageBytes, epoch = epoch, messageId = MessageId(0)
).valueOr:
raiseAssert $error
# # generate proof
# let validProof = manager.generateProof(
# data = messageBytes, epoch = epoch, messageId = MessageId(0)
# ).valueOr:
# raiseAssert $error
let verified = manager.verifyProof(messageBytes, validProof).valueOr:
raiseAssert $error
# let verified = manager.verifyProof(messageBytes, validProof).valueOr:
# raiseAssert $error
check:
verified
# check:
# verified
test "verifyProof: should reject invalid proof":
(waitFor manager.init()).isOkOr:
raiseAssert $error
# test "verifyProof: should reject invalid proof":
# (waitFor manager.init()).isOkOr:
# raiseAssert $error
let idCredential = generateCredentials(manager.rlnInstance)
# let idCredential = generateCredentials(manager.rlnInstance)
try:
waitFor manager.register(idCredential, UserMessageLimit(20))
except Exception, CatchableError:
assert false,
"exception raised when calling startGroupSync: " & getCurrentExceptionMsg()
# try:
# waitFor manager.register(idCredential, UserMessageLimit(20))
# except Exception, CatchableError:
# assert false,
# "exception raised when calling startGroupSync: " & getCurrentExceptionMsg()
let messageBytes = "Hello".toBytes()
# let messageBytes = "Hello".toBytes()
let rootUpdated = waitFor manager.updateRoots()
# let rootUpdated = waitFor manager.updateRoots()
manager.merkleProofCache = newSeq[byte](640)
for i in 0 ..< 640:
manager.merkleProofCache[i] = byte(rand(255))
# manager.merkleProofCache = newSeq[byte](640)
# for i in 0 ..< 640:
# manager.merkleProofCache[i] = byte(rand(255))
let epoch = default(Epoch)
debug "epoch in bytes", epochHex = epoch.inHex()
# let epoch = default(Epoch)
# debug "epoch in bytes", epochHex = epoch.inHex()
# generate proof
let invalidProofRes = manager.generateProof(
data = messageBytes, epoch = epoch, messageId = MessageId(0)
)
# # generate proof
# let invalidProofRes = manager.generateProof(
# data = messageBytes, epoch = epoch, messageId = MessageId(0)
# )
check:
invalidProofRes.isOk()
let invalidProof = invalidProofRes.get()
# check:
# invalidProofRes.isOk()
# let invalidProof = invalidProofRes.get()
# verify the proof (should be false)
let verified = manager.verifyProof(messageBytes, invalidProof).valueOr:
raiseAssert $error
# # verify the proof (should be false)
# let verified = manager.verifyProof(messageBytes, invalidProof).valueOr:
# raiseAssert $error
check:
verified == false
# check:
# verified == false
test "root queue should be updated correctly":
const credentialCount = 12
let credentials = generateCredentials(manager.rlnInstance, credentialCount)
(waitFor manager.init()).isOkOr:
raiseAssert $error
# test "root queue should be updated correctly":
# const credentialCount = 12
# let credentials = generateCredentials(manager.rlnInstance, credentialCount)
# (waitFor manager.init()).isOkOr:
# raiseAssert $error
type TestBackfillFuts = array[0 .. credentialCount - 1, Future[void]]
var futures: TestBackfillFuts
for i in 0 ..< futures.len():
futures[i] = newFuture[void]()
# type TestBackfillFuts = array[0 .. credentialCount - 1, Future[void]]
# var futures: TestBackfillFuts
# for i in 0 ..< futures.len():
# futures[i] = newFuture[void]()
proc generateCallback(
futs: TestBackfillFuts, credentials: seq[IdentityCredential]
): OnRegisterCallback =
var futureIndex = 0
proc callback(registrations: seq[Membership]): Future[void] {.async.} =
if registrations.len == 1 and
registrations[0].rateCommitment ==
getRateCommitment(credentials[futureIndex], UserMessageLimit(20)).get() and
registrations[0].index == MembershipIndex(futureIndex):
futs[futureIndex].complete()
futureIndex += 1
# proc generateCallback(
# futs: TestBackfillFuts, credentials: seq[IdentityCredential]
# ): OnRegisterCallback =
# var futureIndex = 0
# proc callback(registrations: seq[Membership]): Future[void] {.async.} =
# if registrations.len == 1 and
# registrations[0].rateCommitment ==
# getRateCommitment(credentials[futureIndex], UserMessageLimit(20)).get() and
# registrations[0].index == MembershipIndex(futureIndex):
# futs[futureIndex].complete()
# futureIndex += 1
return callback
# return callback
try:
manager.onRegister(generateCallback(futures, credentials))
# try:
# manager.onRegister(generateCallback(futures, credentials))
for i in 0 ..< credentials.len():
waitFor manager.register(credentials[i], UserMessageLimit(20))
discard waitFor manager.updateRoots()
except Exception, CatchableError:
assert false, "exception raised: " & getCurrentExceptionMsg()
# for i in 0 ..< credentials.len():
# waitFor manager.register(credentials[i], UserMessageLimit(20))
# discard waitFor manager.updateRoots()
# except Exception, CatchableError:
# assert false, "exception raised: " & getCurrentExceptionMsg()
waitFor allFutures(futures)
# waitFor allFutures(futures)
check:
manager.validRoots.len() == credentialCount
# check:
# manager.validRoots.len() == credentialCount
test "isReady should return false if ethRpc is none":
(waitFor manager.init()).isOkOr:
raiseAssert $error
# test "isReady should return false if ethRpc is none":
# (waitFor manager.init()).isOkOr:
# raiseAssert $error
manager.ethRpc = none(Web3)
# manager.ethRpc = none(Web3)
var isReady = true
try:
isReady = waitFor manager.isReady()
except Exception, CatchableError:
assert false, "exception raised: " & getCurrentExceptionMsg()
# var isReady = true
# try:
# isReady = waitFor manager.isReady()
# except Exception, CatchableError:
# assert false, "exception raised: " & getCurrentExceptionMsg()
check:
isReady == false
# check:
# isReady == false
test "isReady should return true if ethRpc is ready":
(waitFor manager.init()).isOkOr:
raiseAssert $error
# test "isReady should return true if ethRpc is ready":
# (waitFor manager.init()).isOkOr:
# raiseAssert $error
var isReady = false
try:
isReady = waitFor manager.isReady()
except Exception, CatchableError:
assert false, "exception raised: " & getCurrentExceptionMsg()
# var isReady = false
# try:
# isReady = waitFor manager.isReady()
# except Exception, CatchableError:
# assert false, "exception raised: " & getCurrentExceptionMsg()
check:
isReady == true
# check:
# isReady == true