test forks.nim capella and deneb block/state ssz serialization (#4772)

This commit is contained in:
tersec 2023-03-29 13:22:19 +00:00 committed by GitHub
parent 0d051b3da8
commit ceb24d31d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 124 additions and 32 deletions

View File

@ -223,11 +223,15 @@ OK: 3/3 Fail: 0/3 Skip: 0/3
+ load altair state OK
+ load bellatrix block OK
+ load bellatrix state OK
+ load capella block OK
+ load capella state OK
+ load deneb block OK
+ load deneb state OK
+ load phase0 block OK
+ load phase0 state OK
+ should raise on unknown data OK
```
OK: 7/7 Fail: 0/7 Skip: 0/7
OK: 11/11 Fail: 0/11 Skip: 0/11
## Gas limit management [Beacon Node] [Preset: mainnet]
```diff
+ Configuring the gas limit [Beacon Node] [Preset: mainnet] OK
@ -636,4 +640,4 @@ OK: 2/2 Fail: 0/2 Skip: 0/2
OK: 9/9 Fail: 0/9 Skip: 0/9
---TOTAL---
OK: 353/358 Fail: 0/358 Skip: 5/358
OK: 357/362 Fail: 0/362 Skip: 5/362

View File

@ -1,14 +1,11 @@
import
unittest2,
stew/byteutils,
../beacon_chain/spec/[forks, helpers],
../beacon_chain/spec/datatypes/[phase0, altair, bellatrix]
{.used.}
import
unittest2,
../beacon_chain/spec/forks
template testHashedBeaconState(T: type, s: Slot) =
let
state = (ref T)()
let state = (ref T)()
state[].slot = s
let
bytes = SSZ.encode(state[])
@ -20,11 +17,8 @@ template testHashedBeaconState(T: type, s: Slot) =
forked.kind == T.toFork()
template testTrustedSignedBeaconBlock(T: type, s: Slot) =
let
blck = (ref T)()
let blck = (ref T)()
blck[].message.slot = s
let
bytes = SSZ.encode(blck[])
forked = (ref ForkedSignedBeaconBlock)()
@ -38,40 +32,84 @@ suite "Type helpers":
test "BeaconBlockType":
check:
BeaconBlockType(ConsensusFork.Phase0) is phase0.BeaconBlock
BeaconBlockType(ConsensusFork.Altair) is altair.BeaconBlock
BeaconBlockType(ConsensusFork.Bellatrix) is bellatrix.BeaconBlock
BeaconBlockType(ConsensusFork.Capella) is capella.BeaconBlock
BeaconBlockType(ConsensusFork.Deneb) is deneb.BeaconBlock
BeaconBlockBodyType(ConsensusFork.Phase0) is phase0.BeaconBlockBody
BeaconBlockBodyType(ConsensusFork.Altair) is altair.BeaconBlockBody
BeaconBlockBodyType(ConsensusFork.Bellatrix) is bellatrix.BeaconBlockBody
BeaconBlockBodyType(ConsensusFork.Capella) is capella.BeaconBlockBody
BeaconBlockBodyType(ConsensusFork.Deneb) is deneb.BeaconBlockBody
suite "Forked SSZ readers":
var
cfg = defaultRuntimeConfig
cfg.ALTAIR_FORK_EPOCH = Epoch(1)
cfg.BELLATRIX_FORK_EPOCH = Epoch(2)
let cfg = block:
var cfg = defaultRuntimeConfig
cfg.ALTAIR_FORK_EPOCH = Epoch(1)
cfg.BELLATRIX_FORK_EPOCH = Epoch(2)
cfg.CAPELLA_FORK_EPOCH = Epoch(3)
cfg.DENEB_FORK_EPOCH = Epoch(4)
cfg
test "load phase0 state":
testHashedBeaconState(phase0.BeaconState, 0.Slot)
testHashedBeaconState(phase0.BeaconState, 0.Slot)
expect(SszError):
testHashedBeaconState(altair.BeaconState, 0.Slot)
testHashedBeaconState(altair.BeaconState, 0.Slot)
expect(SszError):
testHashedBeaconState(bellatrix.BeaconState, 0.Slot)
expect(SszError):
testHashedBeaconState(capella.BeaconState, 0.Slot)
expect(SszError):
testHashedBeaconState(deneb.BeaconState, 0.Slot)
test "load altair state":
testHashedBeaconState(altair.BeaconState, cfg.ALTAIR_FORK_EPOCH.start_slot)
testHashedBeaconState(altair.BeaconState, cfg.ALTAIR_FORK_EPOCH.start_slot)
expect(SszError):
testHashedBeaconState(phase0.BeaconState, cfg.ALTAIR_FORK_EPOCH.start_slot)
testHashedBeaconState(phase0.BeaconState, cfg.ALTAIR_FORK_EPOCH.start_slot)
expect(SszError):
testHashedBeaconState(bellatrix.BeaconState, cfg.ALTAIR_FORK_EPOCH.start_slot)
expect(SszError):
testHashedBeaconState(capella.BeaconState, cfg.ALTAIR_FORK_EPOCH.start_slot)
expect(SszError):
testHashedBeaconState(deneb.BeaconState, cfg.ALTAIR_FORK_EPOCH.start_slot)
test "load bellatrix state":
testHashedBeaconState(bellatrix.BeaconState, cfg.BELLATRIX_FORK_EPOCH.start_slot)
testHashedBeaconState(bellatrix.BeaconState, cfg.BELLATRIX_FORK_EPOCH.start_slot)
expect(SszError):
testHashedBeaconState(phase0.BeaconState, cfg.BELLATRIX_FORK_EPOCH.start_slot)
testHashedBeaconState(phase0.BeaconState, cfg.BELLATRIX_FORK_EPOCH.start_slot)
expect(SszError):
testHashedBeaconState(altair.BeaconState, cfg.BELLATRIX_FORK_EPOCH.start_slot)
testHashedBeaconState(altair.BeaconState, cfg.BELLATRIX_FORK_EPOCH.start_slot)
expect(SszError):
testHashedBeaconState(capella.BeaconState, cfg.BELLATRIX_FORK_EPOCH.start_slot)
expect(SszError):
testHashedBeaconState(deneb.BeaconState, cfg.BELLATRIX_FORK_EPOCH.start_slot)
test "load capella state":
testHashedBeaconState(capella.BeaconState, cfg.CAPELLA_FORK_EPOCH.start_slot)
expect(SszError):
testHashedBeaconState(phase0.BeaconState, cfg.CAPELLA_FORK_EPOCH.start_slot)
expect(SszError):
testHashedBeaconState(altair.BeaconState, cfg.CAPELLA_FORK_EPOCH.start_slot)
expect(SszError):
testHashedBeaconState(bellatrix.BeaconState, cfg.CAPELLA_FORK_EPOCH.start_slot)
expect(SszError):
testHashedBeaconState(deneb.BeaconState, cfg.CAPELLA_FORK_EPOCH.start_slot)
test "load deneb state":
testHashedBeaconState(deneb.BeaconState, cfg.DENEB_FORK_EPOCH.start_slot)
expect(SszError):
testHashedBeaconState(phase0.BeaconState, cfg.DENEB_FORK_EPOCH.start_slot)
expect(SszError):
testHashedBeaconState(altair.BeaconState, cfg.DENEB_FORK_EPOCH.start_slot)
expect(SszError):
testHashedBeaconState(bellatrix.BeaconState, cfg.DENEB_FORK_EPOCH.start_slot)
expect(SszError):
testHashedBeaconState(capella.BeaconState, cfg.DENEB_FORK_EPOCH.start_slot)
test "should raise on unknown data":
let
@ -80,21 +118,31 @@ suite "Forked SSZ readers":
discard newClone(readSszForkedHashedBeaconState(cfg, bytes))
test "load phase0 block":
testTrustedSignedBeaconBlock(phase0.TrustedSignedBeaconBlock, 0.Slot)
testTrustedSignedBeaconBlock(phase0.TrustedSignedBeaconBlock, 0.Slot)
expect(SszError):
testTrustedSignedBeaconBlock(altair.TrustedSignedBeaconBlock, 0.Slot)
testTrustedSignedBeaconBlock(altair.TrustedSignedBeaconBlock, 0.Slot)
expect(SszError):
testTrustedSignedBeaconBlock(bellatrix.TrustedSignedBeaconBlock, 0.Slot)
expect(SszError):
testTrustedSignedBeaconBlock(capella.TrustedSignedBeaconBlock, 0.Slot)
expect(SszError):
testTrustedSignedBeaconBlock(deneb.TrustedSignedBeaconBlock, 0.Slot)
test "load altair block":
testTrustedSignedBeaconBlock(
altair.TrustedSignedBeaconBlock, cfg.ALTAIR_FORK_EPOCH.start_slot)
altair.TrustedSignedBeaconBlock, cfg.ALTAIR_FORK_EPOCH.start_slot)
expect(SszError):
testTrustedSignedBeaconBlock(
phase0.TrustedSignedBeaconBlock, cfg.ALTAIR_FORK_EPOCH.start_slot)
phase0.TrustedSignedBeaconBlock, cfg.ALTAIR_FORK_EPOCH.start_slot)
expect(SszError):
testTrustedSignedBeaconBlock(
bellatrix.TrustedSignedBeaconBlock, cfg.ALTAIR_FORK_EPOCH.start_slot)
expect(SszError):
testTrustedSignedBeaconBlock(
capella.TrustedSignedBeaconBlock, cfg.ALTAIR_FORK_EPOCH.start_slot)
expect(SszError):
testTrustedSignedBeaconBlock(
deneb.TrustedSignedBeaconBlock, cfg.ALTAIR_FORK_EPOCH.start_slot)
test "load bellatrix block":
testTrustedSignedBeaconBlock(
@ -102,10 +150,50 @@ suite "Forked SSZ readers":
expect(SszError):
testTrustedSignedBeaconBlock(
phase0.TrustedSignedBeaconBlock, cfg.BELLATRIX_FORK_EPOCH.start_slot)
phase0.TrustedSignedBeaconBlock, cfg.BELLATRIX_FORK_EPOCH.start_slot)
expect(SszError):
testTrustedSignedBeaconBlock(
altair.TrustedSignedBeaconBlock, cfg.BELLATRIX_FORK_EPOCH.start_slot)
altair.TrustedSignedBeaconBlock, cfg.BELLATRIX_FORK_EPOCH.start_slot)
expect(SszError):
testTrustedSignedBeaconBlock(
capella.TrustedSignedBeaconBlock, cfg.BELLATRIX_FORK_EPOCH.start_slot)
expect(SszError):
testTrustedSignedBeaconBlock(
deneb.TrustedSignedBeaconBlock, cfg.BELLATRIX_FORK_EPOCH.start_slot)
test "load capella block":
testTrustedSignedBeaconBlock(
capella.TrustedSignedBeaconBlock, cfg.CAPELLA_FORK_EPOCH.start_slot)
expect(SszError):
testTrustedSignedBeaconBlock(
phase0.TrustedSignedBeaconBlock, cfg.CAPELLA_FORK_EPOCH.start_slot)
expect(SszError):
testTrustedSignedBeaconBlock(
altair.TrustedSignedBeaconBlock, cfg.CAPELLA_FORK_EPOCH.start_slot)
expect(SszError):
testTrustedSignedBeaconBlock(
bellatrix.TrustedSignedBeaconBlock, cfg.CAPELLA_FORK_EPOCH.start_slot)
expect(SszError):
testTrustedSignedBeaconBlock(
deneb.TrustedSignedBeaconBlock, cfg.CAPELLA_FORK_EPOCH.start_slot)
test "load deneb block":
testTrustedSignedBeaconBlock(
deneb.TrustedSignedBeaconBlock, cfg.DENEB_FORK_EPOCH.start_slot)
expect(SszError):
testTrustedSignedBeaconBlock(
phase0.TrustedSignedBeaconBlock, cfg.DENEB_FORK_EPOCH.start_slot)
expect(SszError):
testTrustedSignedBeaconBlock(
altair.TrustedSignedBeaconBlock, cfg.DENEB_FORK_EPOCH.start_slot)
expect(SszError):
testTrustedSignedBeaconBlock(
bellatrix.TrustedSignedBeaconBlock, cfg.DENEB_FORK_EPOCH.start_slot)
expect(SszError):
testTrustedSignedBeaconBlock(
capella.TrustedSignedBeaconBlock, cfg.DENEB_FORK_EPOCH.start_slot)
test "should raise on unknown data":
let