From a533ffb2892c5296c61fd1bd4ebb1820b6326003 Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Thu, 2 Feb 2023 14:21:45 +0530 Subject: [PATCH] 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 --- core/blockchain_reader.go | 4 ++++ tests/bor/bor_test.go | 13 +++++++++++++ tests/bor/helper.go | 2 +- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/core/blockchain_reader.go b/core/blockchain_reader.go index f61f930496..8405d4a54c 100644 --- a/core/blockchain_reader.go +++ b/core/blockchain_reader.go @@ -422,6 +422,10 @@ func (bc *BlockChain) SetStateSync(stateData []*types.StateSyncData) { bc.stateSyncData = stateData } +func (bc *BlockChain) GetStateSync() []*types.StateSyncData { + return bc.stateSyncData +} + // SubscribeStateSyncEvent registers a subscription of StateSyncEvent. func (bc *BlockChain) SubscribeStateSyncEvent(ch chan<- StateSyncEvent) event.Subscription { return bc.scope.Track(bc.stateSyncFeed.Subscribe(ch)) diff --git a/tests/bor/bor_test.go b/tests/bor/bor_test.go index d059956e6a..2dc20a915e 100644 --- a/tests/bor/bor_test.go +++ b/tests/bor/bor_test.go @@ -7,6 +7,7 @@ import ( "context" "crypto/ecdsa" "encoding/hex" + "fmt" "io" "math/big" "os" @@ -458,9 +459,21 @@ func TestFetchStateSyncEvents(t *testing.T) { _bor.SetHeimdallClient(h) 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) } +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) { init := buildEthereumInstance(t, rawdb.NewMemoryDatabase()) chain := init.ethereum.BlockChain() diff --git a/tests/bor/helper.go b/tests/bor/helper.go index 64d5c299ac..e28076a3b1 100644 --- a/tests/bor/helper.go +++ b/tests/bor/helper.go @@ -360,7 +360,7 @@ func generateFakeStateSyncEvents(sample *clerk.EventRecordWithTime, count int) [ *events[0] = event for i := 1; i < count; i++ { - event.ID = uint64(i) + event.ID = uint64(i + 1) event.Time = event.Time.Add(1 * time.Second) events[i] = &clerk.EventRecordWithTime{} *events[i] = event