validation: adds integration test for historical state
This commit is contained in:
parent
10c87b2b99
commit
158b0c8dbc
|
@ -12,10 +12,78 @@ export logutils
|
||||||
logScope:
|
logScope:
|
||||||
topics = "integration test validation"
|
topics = "integration test validation"
|
||||||
|
|
||||||
|
marketplacesuite "Validaton":
|
||||||
|
|
||||||
marketplacesuite "Validator marks proofs as missed when using validation groups":
|
test "validator uses historical state to mark missing proofs", NodeConfigs(
|
||||||
|
# Uncomment to start Hardhat automatically, typically so logs can be inspected locally
|
||||||
|
hardhat:
|
||||||
|
HardhatConfig.none,
|
||||||
|
|
||||||
test "slot is freed after too many invalid proofs submitted", NodeConfigs(
|
clients:
|
||||||
|
CodexConfigs.init(nodes=1)
|
||||||
|
# .debug() # uncomment to enable console log output
|
||||||
|
# .withLogFile() # uncomment to output log file to tests/integration/logs/<start_datetime> <suite_name>/<test_name>/<node_role>_<node_idx>.log
|
||||||
|
# .withLogTopics("node", "marketplace", "clock")
|
||||||
|
.some,
|
||||||
|
|
||||||
|
providers:
|
||||||
|
CodexConfigs.init(nodes=1)
|
||||||
|
.withSimulateProofFailures(idx=0, failEveryNProofs=1)
|
||||||
|
# .debug() # uncomment to enable console log output
|
||||||
|
# .withLogFile() # uncomment to output log file to tests/integration/logs/<start_datetime> <suite_name>/<test_name>/<node_role>_<node_idx>.log
|
||||||
|
# .withLogTopics("marketplace", "sales", "reservations", "node", "clock", "slotsbuilder")
|
||||||
|
.some
|
||||||
|
):
|
||||||
|
let client0 = clients()[0].client
|
||||||
|
let expiry = 5.periods
|
||||||
|
let duration = expiry + 10.periods
|
||||||
|
|
||||||
|
let data = await RandomChunker.example(blocks=8)
|
||||||
|
createAvailabilities(data.len * 2, duration) # TODO: better value for data.len
|
||||||
|
|
||||||
|
let cid = client0.upload(data).get
|
||||||
|
|
||||||
|
let purchaseId = await client0.requestStorage(
|
||||||
|
cid,
|
||||||
|
expiry=expiry,
|
||||||
|
duration=duration,
|
||||||
|
nodes=3,
|
||||||
|
tolerance=1,
|
||||||
|
proofProbability=1
|
||||||
|
)
|
||||||
|
let requestId = client0.requestId(purchaseId).get
|
||||||
|
|
||||||
|
check eventually(client0.purchaseStateIs(purchaseId, "started"),
|
||||||
|
timeout = expiry.int * 1000)
|
||||||
|
|
||||||
|
var validators = CodexConfigs.init(nodes=2)
|
||||||
|
.withValidationGroups(groups = 2)
|
||||||
|
.withValidationGroupIndex(idx = 0, groupIndex = 0)
|
||||||
|
.withValidationGroupIndex(idx = 1, groupIndex = 1)
|
||||||
|
.debug() # uncomment to enable console log output
|
||||||
|
# .withLogFile() # uncomment to output log file to tests/integration/logs/<start_datetime> <suite_name>/<test_name>/<node_role>_<node_idx>.log
|
||||||
|
.withLogTopics("validator") # each topic as a separate string argument
|
||||||
|
|
||||||
|
failAndTeardownOnError "failed to start validator nodes":
|
||||||
|
for config in validators.configs.mitems:
|
||||||
|
let node = await startValidatorNode(config)
|
||||||
|
running.add RunningNode(
|
||||||
|
role: Role.Validator,
|
||||||
|
node: node
|
||||||
|
)
|
||||||
|
|
||||||
|
var slotWasFreed = false
|
||||||
|
proc onSlotFreed(event: SlotFreed) =
|
||||||
|
if event.requestId == requestId:
|
||||||
|
slotWasFreed = true
|
||||||
|
|
||||||
|
let subscription = await marketplace.subscribe(SlotFreed, onSlotFreed)
|
||||||
|
|
||||||
|
check eventually(slotWasFreed, timeout=(duration - expiry).int * 1000)
|
||||||
|
|
||||||
|
await subscription.unsubscribe()
|
||||||
|
|
||||||
|
test "validator marks proofs as missing when using validation groups", NodeConfigs(
|
||||||
# Uncomment to start Hardhat automatically, typically so logs can be inspected locally
|
# Uncomment to start Hardhat automatically, typically so logs can be inspected locally
|
||||||
hardhat:
|
hardhat:
|
||||||
HardhatConfig.none,
|
HardhatConfig.none,
|
||||||
|
@ -42,7 +110,7 @@ marketplacesuite "Validator marks proofs as missed when using validation groups"
|
||||||
.withValidationGroupIndex(idx = 1, groupIndex = 1)
|
.withValidationGroupIndex(idx = 1, groupIndex = 1)
|
||||||
.debug() # uncomment to enable console log output
|
.debug() # uncomment to enable console log output
|
||||||
# .withLogFile() # uncomment to output log file to tests/integration/logs/<start_datetime> <suite_name>/<test_name>/<node_role>_<node_idx>.log
|
# .withLogFile() # uncomment to output log file to tests/integration/logs/<start_datetime> <suite_name>/<test_name>/<node_role>_<node_idx>.log
|
||||||
.withLogTopics("validator", "integration")
|
.withLogTopics("validator")
|
||||||
# .withLogTopics("validator", "integration", "ethers", "clock")
|
# .withLogTopics("validator", "integration", "ethers", "clock")
|
||||||
.some
|
.some
|
||||||
):
|
):
|
||||||
|
|
Loading…
Reference in New Issue