mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-27 15:16:43 +00:00
core, tests/bor: add more tests for state-sync validation (#710)
* core: add get state sync function for tests * tests/bor: add validation for state sync events post consensus
This commit is contained in:
parent
cbbc27c27a
commit
a533ffb289
3 changed files with 18 additions and 1 deletions
|
|
@ -422,6 +422,10 @@ func (bc *BlockChain) SetStateSync(stateData []*types.StateSyncData) {
|
||||||
bc.stateSyncData = stateData
|
bc.stateSyncData = stateData
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (bc *BlockChain) GetStateSync() []*types.StateSyncData {
|
||||||
|
return bc.stateSyncData
|
||||||
|
}
|
||||||
|
|
||||||
// SubscribeStateSyncEvent registers a subscription of StateSyncEvent.
|
// SubscribeStateSyncEvent registers a subscription of StateSyncEvent.
|
||||||
func (bc *BlockChain) SubscribeStateSyncEvent(ch chan<- StateSyncEvent) event.Subscription {
|
func (bc *BlockChain) SubscribeStateSyncEvent(ch chan<- StateSyncEvent) event.Subscription {
|
||||||
return bc.scope.Track(bc.stateSyncFeed.Subscribe(ch))
|
return bc.scope.Track(bc.stateSyncFeed.Subscribe(ch))
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"math/big"
|
"math/big"
|
||||||
"os"
|
"os"
|
||||||
|
|
@ -458,9 +459,21 @@ func TestFetchStateSyncEvents(t *testing.T) {
|
||||||
_bor.SetHeimdallClient(h)
|
_bor.SetHeimdallClient(h)
|
||||||
|
|
||||||
block = buildNextBlock(t, _bor, chain, block, nil, init.genesis.Config.Bor, nil, res.Result.ValidatorSet.Validators)
|
block = buildNextBlock(t, _bor, chain, block, nil, init.genesis.Config.Bor, nil, res.Result.ValidatorSet.Validators)
|
||||||
|
|
||||||
|
// Validate the state sync transactions set by consensus
|
||||||
|
validateStateSyncEvents(t, eventRecords, chain.GetStateSync())
|
||||||
|
|
||||||
insertNewBlock(t, chain, block)
|
insertNewBlock(t, chain, block)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func validateStateSyncEvents(t *testing.T, expected []*clerk.EventRecordWithTime, got []*types.StateSyncData) {
|
||||||
|
require.Equal(t, len(expected), len(got), "number of state sync events should be equal")
|
||||||
|
|
||||||
|
for i := 0; i < len(expected); i++ {
|
||||||
|
require.Equal(t, expected[i].ID, got[i].ID, fmt.Sprintf("state sync ids should be equal - index: %d, expected: %d, got: %d", i, expected[i].ID, got[i].ID))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestFetchStateSyncEvents_2(t *testing.T) {
|
func TestFetchStateSyncEvents_2(t *testing.T) {
|
||||||
init := buildEthereumInstance(t, rawdb.NewMemoryDatabase())
|
init := buildEthereumInstance(t, rawdb.NewMemoryDatabase())
|
||||||
chain := init.ethereum.BlockChain()
|
chain := init.ethereum.BlockChain()
|
||||||
|
|
|
||||||
|
|
@ -360,7 +360,7 @@ func generateFakeStateSyncEvents(sample *clerk.EventRecordWithTime, count int) [
|
||||||
*events[0] = event
|
*events[0] = event
|
||||||
|
|
||||||
for i := 1; i < count; i++ {
|
for i := 1; i < count; i++ {
|
||||||
event.ID = uint64(i)
|
event.ID = uint64(i + 1)
|
||||||
event.Time = event.Time.Add(1 * time.Second)
|
event.Time = event.Time.Add(1 * time.Second)
|
||||||
events[i] = &clerk.EventRecordWithTime{}
|
events[i] = &clerk.EventRecordWithTime{}
|
||||||
*events[i] = event
|
*events[i] = event
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue