add EF finality tests (#1515)
This commit is contained in:
parent
b4f9908d9d
commit
ed9bec0147
|
@ -40,6 +40,15 @@ OK: 8/8 Fail: 0/8 Skip: 0/8
|
||||||
+ Slashings - small_penalty [Preset: mainnet] OK
|
+ Slashings - small_penalty [Preset: mainnet] OK
|
||||||
```
|
```
|
||||||
OK: 3/3 Fail: 0/3 Skip: 0/3
|
OK: 3/3 Fail: 0/3 Skip: 0/3
|
||||||
|
## Official - Finality [Preset: mainnet]
|
||||||
|
```diff
|
||||||
|
+ [Valid] Official - Finality - finality_no_updates_at_genesis [Preset: mainnet] OK
|
||||||
|
+ [Valid] Official - Finality - finality_rule_1 [Preset: mainnet] OK
|
||||||
|
+ [Valid] Official - Finality - finality_rule_2 [Preset: mainnet] OK
|
||||||
|
+ [Valid] Official - Finality - finality_rule_3 [Preset: mainnet] OK
|
||||||
|
+ [Valid] Official - Finality - finality_rule_4 [Preset: mainnet] OK
|
||||||
|
```
|
||||||
|
OK: 5/5 Fail: 0/5 Skip: 0/5
|
||||||
## Official - Operations - Attestations [Preset: mainnet]
|
## Official - Operations - Attestations [Preset: mainnet]
|
||||||
```diff
|
```diff
|
||||||
+ [Invalid] after_epoch_slots OK
|
+ [Invalid] after_epoch_slots OK
|
||||||
|
@ -188,38 +197,38 @@ OK: 9/9 Fail: 0/9 Skip: 0/9
|
||||||
OK: 44/44 Fail: 0/44 Skip: 0/44
|
OK: 44/44 Fail: 0/44 Skip: 0/44
|
||||||
## Official - Sanity - Blocks [Preset: mainnet]
|
## Official - Sanity - Blocks [Preset: mainnet]
|
||||||
```diff
|
```diff
|
||||||
+ [Invalid] double_same_proposer_slashings_same_block OK
|
+ [Invalid] Official - Sanity - Blocks - double_same_proposer_slashings_same_block [Preset: OK
|
||||||
+ [Invalid] double_similar_proposer_slashings_same_block OK
|
+ [Invalid] Official - Sanity - Blocks - double_similar_proposer_slashings_same_block [Prese OK
|
||||||
+ [Invalid] double_validator_exit_same_block OK
|
+ [Invalid] Official - Sanity - Blocks - double_validator_exit_same_block [Preset: mainnet] OK
|
||||||
+ [Invalid] duplicate_attester_slashing OK
|
+ [Invalid] Official - Sanity - Blocks - duplicate_attester_slashing [Preset: mainnet] OK
|
||||||
+ [Invalid] expected_deposit_in_block OK
|
+ [Invalid] Official - Sanity - Blocks - expected_deposit_in_block [Preset: mainnet] OK
|
||||||
+ [Invalid] invalid_block_sig OK
|
+ [Invalid] Official - Sanity - Blocks - invalid_block_sig [Preset: mainnet] OK
|
||||||
+ [Invalid] invalid_proposer_index_sig_from_expected_proposer OK
|
+ [Invalid] Official - Sanity - Blocks - invalid_proposer_index_sig_from_expected_proposer [ OK
|
||||||
+ [Invalid] invalid_proposer_index_sig_from_proposer_index OK
|
+ [Invalid] Official - Sanity - Blocks - invalid_proposer_index_sig_from_proposer_index [Pre OK
|
||||||
+ [Invalid] invalid_state_root OK
|
+ [Invalid] Official - Sanity - Blocks - invalid_state_root [Preset: mainnet] OK
|
||||||
+ [Invalid] parent_from_same_slot OK
|
+ [Invalid] Official - Sanity - Blocks - parent_from_same_slot [Preset: mainnet] OK
|
||||||
+ [Invalid] prev_slot_block_transition OK
|
+ [Invalid] Official - Sanity - Blocks - prev_slot_block_transition [Preset: mainnet] OK
|
||||||
+ [Invalid] proposal_for_genesis_slot OK
|
+ [Invalid] Official - Sanity - Blocks - proposal_for_genesis_slot [Preset: mainnet] OK
|
||||||
+ [Invalid] same_slot_block_transition OK
|
+ [Invalid] Official - Sanity - Blocks - same_slot_block_transition [Preset: mainnet] OK
|
||||||
+ [Invalid] zero_block_sig OK
|
+ [Invalid] Official - Sanity - Blocks - zero_block_sig [Preset: mainnet] OK
|
||||||
+ [Valid] attestation OK
|
+ [Valid] Official - Sanity - Blocks - attestation [Preset: mainnet] OK
|
||||||
+ [Valid] attester_slashing OK
|
+ [Valid] Official - Sanity - Blocks - attester_slashing [Preset: mainnet] OK
|
||||||
+ [Valid] balance_driven_status_transitions OK
|
+ [Valid] Official - Sanity - Blocks - balance_driven_status_transitions [Preset: mainnet] OK
|
||||||
+ [Valid] deposit_in_block OK
|
+ [Valid] Official - Sanity - Blocks - deposit_in_block [Preset: mainnet] OK
|
||||||
+ [Valid] deposit_top_up OK
|
+ [Valid] Official - Sanity - Blocks - deposit_top_up [Preset: mainnet] OK
|
||||||
+ [Valid] empty_block_transition OK
|
+ [Valid] Official - Sanity - Blocks - empty_block_transition [Preset: mainnet] OK
|
||||||
+ [Valid] empty_epoch_transition OK
|
+ [Valid] Official - Sanity - Blocks - empty_epoch_transition [Preset: mainnet] OK
|
||||||
+ [Valid] high_proposer_index OK
|
+ [Valid] Official - Sanity - Blocks - high_proposer_index [Preset: mainnet] OK
|
||||||
+ [Valid] historical_batch OK
|
+ [Valid] Official - Sanity - Blocks - historical_batch [Preset: mainnet] OK
|
||||||
+ [Valid] multiple_attester_slashings_no_overlap OK
|
+ [Valid] Official - Sanity - Blocks - multiple_attester_slashings_no_overlap [Preset: mai OK
|
||||||
+ [Valid] multiple_attester_slashings_partial_overlap OK
|
+ [Valid] Official - Sanity - Blocks - multiple_attester_slashings_partial_overlap [Preset OK
|
||||||
+ [Valid] multiple_different_proposer_slashings_same_block OK
|
+ [Valid] Official - Sanity - Blocks - multiple_different_proposer_slashings_same_block [P OK
|
||||||
+ [Valid] multiple_different_validator_exits_same_block OK
|
+ [Valid] Official - Sanity - Blocks - multiple_different_validator_exits_same_block [Pres OK
|
||||||
+ [Valid] proposer_after_inactive_index OK
|
+ [Valid] Official - Sanity - Blocks - proposer_after_inactive_index [Preset: mainnet] OK
|
||||||
+ [Valid] proposer_self_slashing OK
|
+ [Valid] Official - Sanity - Blocks - proposer_self_slashing [Preset: mainnet] OK
|
||||||
+ [Valid] proposer_slashing OK
|
+ [Valid] Official - Sanity - Blocks - proposer_slashing [Preset: mainnet] OK
|
||||||
+ [Valid] skipped_slots OK
|
+ [Valid] Official - Sanity - Blocks - skipped_slots [Preset: mainnet] OK
|
||||||
+ [Valid] voluntary_exit OK
|
+ [Valid] Official - Sanity - Blocks - voluntary_exit [Preset: mainnet] OK
|
||||||
```
|
```
|
||||||
OK: 32/32 Fail: 0/32 Skip: 0/32
|
OK: 32/32 Fail: 0/32 Skip: 0/32
|
||||||
## Official - Sanity - Slots [Preset: mainnet]
|
## Official - Sanity - Slots [Preset: mainnet]
|
||||||
|
@ -233,4 +242,4 @@ OK: 32/32 Fail: 0/32 Skip: 0/32
|
||||||
OK: 5/5 Fail: 0/5 Skip: 0/5
|
OK: 5/5 Fail: 0/5 Skip: 0/5
|
||||||
|
|
||||||
---TOTAL---
|
---TOTAL---
|
||||||
OK: 179/179 Fail: 0/179 Skip: 0/179
|
OK: 184/184 Fail: 0/184 Skip: 0/184
|
||||||
|
|
|
@ -17,34 +17,34 @@ import
|
||||||
../testutil,
|
../testutil,
|
||||||
./fixtures_utils
|
./fixtures_utils
|
||||||
|
|
||||||
const SanityBlocksDir = SszTestsDir/const_preset/"phase0"/"sanity"/"blocks"/"pyspec_tests"
|
const
|
||||||
|
FinalityDir = SszTestsDir/const_preset/"phase0"/"finality"/"finality"/"pyspec_tests"
|
||||||
|
SanityBlocksDir = SszTestsDir/const_preset/"phase0"/"sanity"/"blocks"/"pyspec_tests"
|
||||||
|
|
||||||
proc runTest(identifier: string) =
|
proc runTest(testName, testDir, unitTestName: string) =
|
||||||
# We wrap the tests in a proc to avoid running out of globals
|
# We wrap the tests in a proc to avoid running out of globals
|
||||||
# in the future: Nim supports up to 3500 globals
|
# in the future: Nim supports up to 3500 globals
|
||||||
# but unittest with the macro/templates put everything as globals
|
# but unittest with the macro/templates put everything as globals
|
||||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||||
|
|
||||||
let testDir = SanityBlocksDir / identifier
|
let testPath = testDir / unitTestName
|
||||||
|
|
||||||
proc `testImpl _ blck _ identifier`() =
|
proc `testImpl _ blck _ testName`() =
|
||||||
let prefix = if existsFile(testDir/"post.ssz"):
|
let
|
||||||
"[Valid] "
|
hasPostState = existsFile(testPath/"post.ssz")
|
||||||
else:
|
prefix = if hasPostState: "[Valid] " else: "[Invalid] "
|
||||||
"[Invalid] "
|
|
||||||
|
|
||||||
timedTest prefix & identifier:
|
timedTest prefix & testName & " - " & unitTestName & preset():
|
||||||
var
|
var
|
||||||
preState = newClone(parseTest(testDir/"pre.ssz", SSZ, BeaconState))
|
preState = newClone(parseTest(testPath/"pre.ssz", SSZ, BeaconState))
|
||||||
hasPostState = existsFile(testDir/"post.ssz")
|
|
||||||
hashedPreState = (ref HashedBeaconState)(
|
hashedPreState = (ref HashedBeaconState)(
|
||||||
data: preState[], root: hash_tree_root(preState[]))
|
data: preState[], root: hash_tree_root(preState[]))
|
||||||
|
|
||||||
# In test cases with more than 10 blocks the first 10 aren't 0-prefixed,
|
# In test cases with more than 10 blocks the first 10 aren't 0-prefixed,
|
||||||
# so purely lexicographic sorting wouldn't sort properly.
|
# so purely lexicographic sorting wouldn't sort properly.
|
||||||
let numBlocks = toSeq(walkPattern(testDir/"blocks_*.ssz")).len
|
let numBlocks = toSeq(walkPattern(testPath/"blocks_*.ssz")).len
|
||||||
for i in 0 ..< numBlocks:
|
for i in 0 ..< numBlocks:
|
||||||
let blck = parseTest(testDir/"blocks_" & $i & ".ssz", SSZ, SignedBeaconBlock)
|
let blck = parseTest(testPath/"blocks_" & $i & ".ssz", SSZ, SignedBeaconBlock)
|
||||||
|
|
||||||
if hasPostState:
|
if hasPostState:
|
||||||
let success = state_transition(
|
let success = state_transition(
|
||||||
|
@ -57,13 +57,17 @@ proc runTest(identifier: string) =
|
||||||
"We didn't expect these invalid blocks to be processed"
|
"We didn't expect these invalid blocks to be processed"
|
||||||
|
|
||||||
if hasPostState:
|
if hasPostState:
|
||||||
let postState = newClone(parseTest(testDir/"post.ssz", SSZ, BeaconState))
|
let postState = newClone(parseTest(testPath/"post.ssz", SSZ, BeaconState))
|
||||||
when false:
|
when false:
|
||||||
reportDiff(hashedPreState.data, postState)
|
reportDiff(hashedPreState.data, postState)
|
||||||
doAssert hashedPreState.root == postState[].hash_tree_root()
|
doAssert hashedPreState.root == postState[].hash_tree_root()
|
||||||
|
|
||||||
`testImpl _ blck _ identifier`()
|
`testImpl _ blck _ testName`()
|
||||||
|
|
||||||
suiteReport "Official - Sanity - Blocks " & preset():
|
suiteReport "Official - Sanity - Blocks " & preset():
|
||||||
for kind, path in walkDir(SanityBlocksDir, true):
|
for kind, path in walkDir(SanityBlocksDir, true):
|
||||||
runTest(path)
|
runTest("Official - Sanity - Blocks", SanityBlocksDir, path)
|
||||||
|
|
||||||
|
suiteReport "Official - Finality " & preset():
|
||||||
|
for kind, path in walkDir(FinalityDir, true):
|
||||||
|
runTest("Official - Finality", FinalityDir, path)
|
||||||
|
|
Loading…
Reference in New Issue