mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
beacon/blsync: fix test
This commit is contained in:
parent
6b93b3d40c
commit
0089d3abdf
1 changed files with 19 additions and 9 deletions
|
|
@ -22,6 +22,8 @@ import (
|
||||||
"github.com/ethereum/go-ethereum/beacon/light/request"
|
"github.com/ethereum/go-ethereum/beacon/light/request"
|
||||||
"github.com/ethereum/go-ethereum/beacon/light/sync"
|
"github.com/ethereum/go-ethereum/beacon/light/sync"
|
||||||
"github.com/ethereum/go-ethereum/beacon/types"
|
"github.com/ethereum/go-ethereum/beacon/types"
|
||||||
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
zrntcommon "github.com/protolambda/zrnt/eth2/beacon/common"
|
||||||
"github.com/protolambda/zrnt/eth2/beacon/deneb"
|
"github.com/protolambda/zrnt/eth2/beacon/deneb"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -32,13 +34,19 @@ var (
|
||||||
testBlock1 = types.NewBeaconBlock(&deneb.BeaconBlock{
|
testBlock1 = types.NewBeaconBlock(&deneb.BeaconBlock{
|
||||||
Slot: 123,
|
Slot: 123,
|
||||||
Body: deneb.BeaconBlockBody{
|
Body: deneb.BeaconBlockBody{
|
||||||
ExecutionPayload: deneb.ExecutionPayload{BlockNumber: 456},
|
ExecutionPayload: deneb.ExecutionPayload{
|
||||||
|
BlockNumber: 456,
|
||||||
|
BlockHash: zrntcommon.Hash32(common.HexToHash("905ac721c4058d9ed40b27b6b9c1bdd10d4333e4f3d9769100bf9dfb80e5d1f6")),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
testBlock2 = types.NewBeaconBlock(&deneb.BeaconBlock{
|
testBlock2 = types.NewBeaconBlock(&deneb.BeaconBlock{
|
||||||
Slot: 124,
|
Slot: 124,
|
||||||
Body: deneb.BeaconBlockBody{
|
Body: deneb.BeaconBlockBody{
|
||||||
ExecutionPayload: deneb.ExecutionPayload{BlockNumber: 457},
|
ExecutionPayload: deneb.ExecutionPayload{
|
||||||
|
BlockNumber: 457,
|
||||||
|
BlockHash: zrntcommon.Hash32(common.HexToHash("011703f39c664efc1c6cf5f49ca09b595581eec572d4dfddd3d6179a9e63e655")),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
|
@ -52,7 +60,8 @@ func TestBlockSync(t *testing.T) {
|
||||||
ts.AddServer(testServer1, 1)
|
ts.AddServer(testServer1, 1)
|
||||||
ts.AddServer(testServer2, 1)
|
ts.AddServer(testServer2, 1)
|
||||||
|
|
||||||
expHeadBlock := func(tci int, expHead *types.BeaconBlock) {
|
expHeadBlock := func(expHead *types.BeaconBlock) {
|
||||||
|
t.Helper()
|
||||||
var expNumber, headNumber uint64
|
var expNumber, headNumber uint64
|
||||||
if expHead != nil {
|
if expHead != nil {
|
||||||
p, _ := expHead.ExecutionPayload()
|
p, _ := expHead.ExecutionPayload()
|
||||||
|
|
@ -64,18 +73,19 @@ func TestBlockSync(t *testing.T) {
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
if headNumber != expNumber {
|
if headNumber != expNumber {
|
||||||
t.Errorf("Wrong head block in test case #%d (expected block number %d, got %d)", tci, expNumber, headNumber)
|
t.Errorf("Wrong head block, expected block number %d, got %d)", expNumber, headNumber)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// no block requests expected until head tracker knows about a head
|
// no block requests expected until head tracker knows about a head
|
||||||
ts.Run(1)
|
ts.Run(1)
|
||||||
expHeadBlock(1, nil)
|
expHeadBlock(nil)
|
||||||
|
|
||||||
// set block 1 as prefetch head, announced by server 2
|
// set block 1 as prefetch head, announced by server 2
|
||||||
head1 := blockHeadInfo(testBlock1)
|
head1 := blockHeadInfo(testBlock1)
|
||||||
ht.prefetch = head1
|
ht.prefetch = head1
|
||||||
ts.ServerEvent(sync.EvNewHead, testServer2, head1)
|
ts.ServerEvent(sync.EvNewHead, testServer2, head1)
|
||||||
|
|
||||||
// expect request to server 2 which has announced the head
|
// expect request to server 2 which has announced the head
|
||||||
ts.Run(2, testServer2, sync.ReqBeaconBlock(head1.BlockRoot))
|
ts.Run(2, testServer2, sync.ReqBeaconBlock(head1.BlockRoot))
|
||||||
|
|
||||||
|
|
@ -84,12 +94,12 @@ func TestBlockSync(t *testing.T) {
|
||||||
ts.AddAllowance(testServer2, 1)
|
ts.AddAllowance(testServer2, 1)
|
||||||
ts.Run(3)
|
ts.Run(3)
|
||||||
// head block still not expected as the fetched block is not the validated head yet
|
// head block still not expected as the fetched block is not the validated head yet
|
||||||
expHeadBlock(3, nil)
|
expHeadBlock(nil)
|
||||||
|
|
||||||
// set as validated head, expect no further requests but block 1 set as head block
|
// set as validated head, expect no further requests but block 1 set as head block
|
||||||
ht.validated.Header = testBlock1.Header()
|
ht.validated.Header = testBlock1.Header()
|
||||||
ts.Run(4)
|
ts.Run(4)
|
||||||
expHeadBlock(4, testBlock1)
|
expHeadBlock(testBlock1)
|
||||||
|
|
||||||
// set block 2 as prefetch head, announced by server 1
|
// set block 2 as prefetch head, announced by server 1
|
||||||
head2 := blockHeadInfo(testBlock2)
|
head2 := blockHeadInfo(testBlock2)
|
||||||
|
|
@ -107,12 +117,12 @@ func TestBlockSync(t *testing.T) {
|
||||||
// expect req2 retry to server 2
|
// expect req2 retry to server 2
|
||||||
ts.Run(7, testServer2, sync.ReqBeaconBlock(head2.BlockRoot))
|
ts.Run(7, testServer2, sync.ReqBeaconBlock(head2.BlockRoot))
|
||||||
// now head block should be unavailable again
|
// now head block should be unavailable again
|
||||||
expHeadBlock(4, nil)
|
expHeadBlock(nil)
|
||||||
|
|
||||||
// valid response, now head block should be block 2 immediately as it is already validated
|
// valid response, now head block should be block 2 immediately as it is already validated
|
||||||
ts.RequestEvent(request.EvResponse, ts.Request(7, 1), testBlock2)
|
ts.RequestEvent(request.EvResponse, ts.Request(7, 1), testBlock2)
|
||||||
ts.Run(8)
|
ts.Run(8)
|
||||||
expHeadBlock(5, testBlock2)
|
expHeadBlock(testBlock2)
|
||||||
}
|
}
|
||||||
|
|
||||||
type testHeadTracker struct {
|
type testHeadTracker struct {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue