From 86206114e3aa593db561dee3cced656eac0d8705 Mon Sep 17 00:00:00 2001 From: Elrond/ Date: Mon, 21 Mar 2022 15:44:33 +0200 Subject: [PATCH 1/3] FEAT: Remove duplicated stubs --- integrationTests/testSyncNode.go | 2 +- process/block/metablock_test.go | 6 +- process/mock/epochValidatorInfoCreatorStub.go | 59 ------------------- .../epochValidatorInfoCreatorStub.go | 2 +- 4 files changed, 5 insertions(+), 64 deletions(-) delete mode 100644 process/mock/epochValidatorInfoCreatorStub.go rename {integrationTests/mock => testscommon}/epochValidatorInfoCreatorStub.go (99%) diff --git a/integrationTests/testSyncNode.go b/integrationTests/testSyncNode.go index 0eb1c52332f..9f02b91edcb 100644 --- a/integrationTests/testSyncNode.go +++ b/integrationTests/testSyncNode.go @@ -239,7 +239,7 @@ func (tpn *TestProcessorNode) initBlockProcessorWithSync() { EpochStartDataCreator: &mock.EpochStartDataCreatorStub{}, EpochEconomics: &mock.EpochEconomicsStub{}, EpochRewardsCreator: &mock.EpochRewardsCreatorStub{}, - EpochValidatorInfoCreator: &mock.EpochValidatorInfoCreatorStub{}, + EpochValidatorInfoCreator: &testscommon.EpochValidatorInfoCreatorStub{}, ValidatorStatisticsProcessor: &testscommon.ValidatorStatisticsProcessorStub{}, EpochSystemSCProcessor: &testscommon.EpochStartSystemSCStub{}, } diff --git a/process/block/metablock_test.go b/process/block/metablock_test.go index 53c118b00f1..b80dfe6317e 100644 --- a/process/block/metablock_test.go +++ b/process/block/metablock_test.go @@ -139,7 +139,7 @@ func createMockMetaArguments( EpochStartDataCreator: &mock.EpochStartDataCreatorStub{}, EpochEconomics: &mock.EpochEconomicsStub{}, EpochRewardsCreator: &mock.EpochRewardsCreatorStub{}, - EpochValidatorInfoCreator: &mock.EpochValidatorInfoCreatorStub{}, + EpochValidatorInfoCreator: &testscommon.EpochValidatorInfoCreatorStub{}, ValidatorStatisticsProcessor: &testscommon.ValidatorStatisticsProcessorStub{}, EpochSystemSCProcessor: &testscommon.EpochStartSystemSCStub{}, } @@ -3353,7 +3353,7 @@ func TestMetaProcessor_CreateEpochStartBodyShouldWork(t *testing.T) { }, } - arguments.EpochValidatorInfoCreator = &mock.EpochValidatorInfoCreatorStub{ + arguments.EpochValidatorInfoCreator = &testscommon.EpochValidatorInfoCreatorStub{ CreateValidatorInfoMiniBlocksCalled: func(validatorsInfo map[uint32][]*state.ValidatorInfo) (block.MiniBlockSlice, error) { assert.Equal(t, expectedValidatorsInfo.GetValInfoPointerMap(), validatorsInfo) return validatorInfoMiniBlocks, nil @@ -3415,7 +3415,7 @@ func TestMetaProcessor_CreateEpochStartBodyShouldWork(t *testing.T) { }, } - arguments.EpochValidatorInfoCreator = &mock.EpochValidatorInfoCreatorStub{ + arguments.EpochValidatorInfoCreator = &testscommon.EpochValidatorInfoCreatorStub{ CreateValidatorInfoMiniBlocksCalled: func(validatorsInfo map[uint32][]*state.ValidatorInfo) (block.MiniBlockSlice, error) { assert.Equal(t, expectedValidatorsInfo.GetValInfoPointerMap(), validatorsInfo) return validatorInfoMiniBlocks, nil diff --git a/process/mock/epochValidatorInfoCreatorStub.go b/process/mock/epochValidatorInfoCreatorStub.go deleted file mode 100644 index 3533131a117..00000000000 --- a/process/mock/epochValidatorInfoCreatorStub.go +++ /dev/null @@ -1,59 +0,0 @@ -package mock - -import ( - "github.com/ElrondNetwork/elrond-go-core/data" - "github.com/ElrondNetwork/elrond-go-core/data/block" - "github.com/ElrondNetwork/elrond-go/state" -) - -// EpochValidatorInfoCreatorStub - -type EpochValidatorInfoCreatorStub struct { - CreateValidatorInfoMiniBlocksCalled func(validatorsInfo map[uint32][]*state.ValidatorInfo) (block.MiniBlockSlice, error) - VerifyValidatorInfoMiniBlocksCalled func(miniblocks []*block.MiniBlock, validatorsInfo map[uint32][]*state.ValidatorInfo) error - CreateMarshalizedDataCalled func(body block.Body) map[string][][]byte - SaveTxBlockToStorageCalled func(metaBlock data.HeaderHandler, body *block.Body) - DeleteTxsFromStorageCalled func(metaBlock data.HeaderHandler) - RemoveBlockDataFromPoolsCalled func(metaBlock data.HeaderHandler, body *block.Body) -} - -// CreateValidatorInfoMiniBlocks - -func (e *EpochValidatorInfoCreatorStub) CreateValidatorInfoMiniBlocks(validatorInfo map[uint32][]*state.ValidatorInfo) (block.MiniBlockSlice, error) { - if e.CreateValidatorInfoMiniBlocksCalled != nil { - return e.CreateValidatorInfoMiniBlocksCalled(validatorInfo) - } - return make(block.MiniBlockSlice, 0), nil -} - -// VerifyValidatorInfoMiniBlocks - -func (e *EpochValidatorInfoCreatorStub) VerifyValidatorInfoMiniBlocks(miniblocks []*block.MiniBlock, validatorsInfo map[uint32][]*state.ValidatorInfo) error { - if e.VerifyValidatorInfoMiniBlocksCalled != nil { - return e.VerifyValidatorInfoMiniBlocksCalled(miniblocks, validatorsInfo) - } - return nil -} - -// SaveValidatorInfoBlocksToStorage - -func (e *EpochValidatorInfoCreatorStub) SaveValidatorInfoBlocksToStorage(metaBlock data.HeaderHandler, body *block.Body) { - if e.SaveTxBlockToStorageCalled != nil { - e.SaveTxBlockToStorageCalled(metaBlock, body) - } -} - -// DeleteValidatorInfoBlocksFromStorage - -func (e *EpochValidatorInfoCreatorStub) DeleteValidatorInfoBlocksFromStorage(metaBlock data.HeaderHandler) { - if e.DeleteTxsFromStorageCalled != nil { - e.DeleteTxsFromStorageCalled(metaBlock) - } -} - -// IsInterfaceNil - -func (e *EpochValidatorInfoCreatorStub) IsInterfaceNil() bool { - return e == nil -} - -// RemoveBlockDataFromPools - -func (e *EpochValidatorInfoCreatorStub) RemoveBlockDataFromPools(metaBlock data.HeaderHandler, body *block.Body) { - if e.RemoveBlockDataFromPoolsCalled != nil { - e.RemoveBlockDataFromPoolsCalled(metaBlock, body) - } -} diff --git a/integrationTests/mock/epochValidatorInfoCreatorStub.go b/testscommon/epochValidatorInfoCreatorStub.go similarity index 99% rename from integrationTests/mock/epochValidatorInfoCreatorStub.go rename to testscommon/epochValidatorInfoCreatorStub.go index 3533131a117..fb703e95d00 100644 --- a/integrationTests/mock/epochValidatorInfoCreatorStub.go +++ b/testscommon/epochValidatorInfoCreatorStub.go @@ -1,4 +1,4 @@ -package mock +package testscommon import ( "github.com/ElrondNetwork/elrond-go-core/data" From c567d72679d03963ffcb1c9fd852b3cc110e36b1 Mon Sep 17 00:00:00 2001 From: Elrond/ Date: Mon, 21 Mar 2022 16:37:43 +0200 Subject: [PATCH 2/3] FEAT: Refactor code to use new interface --- epochStart/metachain/validators.go | 26 +-- epochStart/metachain/validators_test.go | 186 +++++++++---------- process/block/metablock.go | 26 ++- process/block/metablock_test.go | 8 +- process/interface.go | 4 +- testscommon/epochValidatorInfoCreatorStub.go | 8 +- 6 files changed, 139 insertions(+), 119 deletions(-) diff --git a/epochStart/metachain/validators.go b/epochStart/metachain/validators.go index eea1720ca65..25080ceabea 100644 --- a/epochStart/metachain/validators.go +++ b/epochStart/metachain/validators.go @@ -67,7 +67,7 @@ func NewValidatorInfoCreator(args ArgsNewValidatorInfoCreator) (*validatorInfoCr } // CreateValidatorInfoMiniBlocks creates the validatorInfo miniblocks according to the provided validatorInfo map -func (vic *validatorInfoCreator) CreateValidatorInfoMiniBlocks(validatorsInfo map[uint32][]*state.ValidatorInfo) (block.MiniBlockSlice, error) { +func (vic *validatorInfoCreator) CreateValidatorInfoMiniBlocks(validatorsInfo state.ShardValidatorsInfoMapHandler) (block.MiniBlockSlice, error) { if validatorsInfo == nil { return nil, epochStart.ErrNilValidatorInfo } @@ -75,7 +75,7 @@ func (vic *validatorInfoCreator) CreateValidatorInfoMiniBlocks(validatorsInfo ma miniblocks := make([]*block.MiniBlock, 0) for shardId := uint32(0); shardId < vic.shardCoordinator.NumberOfShards(); shardId++ { - validators := validatorsInfo[shardId] + validators := validatorsInfo.GetShardValidatorsInfoMap()[shardId] if len(validators) == 0 { continue } @@ -88,7 +88,7 @@ func (vic *validatorInfoCreator) CreateValidatorInfoMiniBlocks(validatorsInfo ma miniblocks = append(miniblocks, miniBlock) } - validators := validatorsInfo[core.MetachainShardId] + validators := validatorsInfo.GetShardValidatorsInfoMap()[core.MetachainShardId] if len(validators) == 0 { return miniblocks, nil } @@ -103,17 +103,17 @@ func (vic *validatorInfoCreator) CreateValidatorInfoMiniBlocks(validatorsInfo ma return miniblocks, nil } -func (vic *validatorInfoCreator) createMiniBlock(validatorsInfo []*state.ValidatorInfo) (*block.MiniBlock, error) { +func (vic *validatorInfoCreator) createMiniBlock(validatorsInfo []state.ValidatorInfoHandler) (*block.MiniBlock, error) { miniBlock := &block.MiniBlock{} miniBlock.SenderShardID = vic.shardCoordinator.SelfId() miniBlock.ReceiverShardID = core.AllShardId miniBlock.TxHashes = make([][]byte, len(validatorsInfo)) miniBlock.Type = block.PeerBlock - validatorCopy := make([]*state.ValidatorInfo, len(validatorsInfo)) + validatorCopy := make([]state.ValidatorInfoHandler, len(validatorsInfo)) copy(validatorCopy, validatorsInfo) sort.Slice(validatorCopy, func(a, b int) bool { - return bytes.Compare(validatorCopy[a].PublicKey, validatorCopy[b].PublicKey) < 0 + return bytes.Compare(validatorCopy[a].GetPublicKey(), validatorCopy[b].GetPublicKey()) < 0 }) for index, validator := range validatorCopy { @@ -129,20 +129,20 @@ func (vic *validatorInfoCreator) createMiniBlock(validatorsInfo []*state.Validat return miniBlock, nil } -func createShardValidatorInfo(validator *state.ValidatorInfo) *state.ShardValidatorInfo { +func createShardValidatorInfo(validator state.ValidatorInfoHandler) *state.ShardValidatorInfo { return &state.ShardValidatorInfo{ - PublicKey: validator.PublicKey, - ShardId: validator.ShardId, - List: validator.List, - Index: validator.Index, - TempRating: validator.TempRating, + PublicKey: validator.GetPublicKey(), + ShardId: validator.GetShardId(), + List: validator.GetList(), + Index: validator.GetIndex(), + TempRating: validator.GetTempRating(), } } // VerifyValidatorInfoMiniBlocks verifies if received validatorinfo miniblocks are correct func (vic *validatorInfoCreator) VerifyValidatorInfoMiniBlocks( miniblocks []*block.MiniBlock, - validatorsInfo map[uint32][]*state.ValidatorInfo, + validatorsInfo state.ShardValidatorsInfoMapHandler, ) error { if len(miniblocks) == 0 { return epochStart.ErrNilMiniblocks diff --git a/epochStart/metachain/validators_test.go b/epochStart/metachain/validators_test.go index c65c0a2ecbb..6984717c688 100644 --- a/epochStart/metachain/validators_test.go +++ b/epochStart/metachain/validators_test.go @@ -21,90 +21,90 @@ import ( "github.com/stretchr/testify/require" ) -func createMockValidatorInfo() map[uint32][]*state.ValidatorInfo { - validatorInfo := map[uint32][]*state.ValidatorInfo{ - 0: { - &state.ValidatorInfo{ - PublicKey: []byte("a1"), - ShardId: 0, - List: "eligible", - Index: 1, - TempRating: 100, - Rating: 1000, - RewardAddress: []byte("rewardA1"), - LeaderSuccess: 1, - LeaderFailure: 2, - ValidatorSuccess: 3, - ValidatorFailure: 4, - TotalLeaderSuccess: 10, - TotalLeaderFailure: 20, - TotalValidatorSuccess: 30, - TotalValidatorFailure: 40, - NumSelectedInSuccessBlocks: 5, - AccumulatedFees: big.NewInt(100), - }, - &state.ValidatorInfo{ - PublicKey: []byte("a2"), - ShardId: 0, - List: "waiting", - Index: 2, - TempRating: 101, - Rating: 1001, - RewardAddress: []byte("rewardA2"), - LeaderSuccess: 6, - LeaderFailure: 7, - ValidatorSuccess: 8, - ValidatorFailure: 9, - TotalLeaderSuccess: 60, - TotalLeaderFailure: 70, - TotalValidatorSuccess: 80, - TotalValidatorFailure: 90, - NumSelectedInSuccessBlocks: 10, - AccumulatedFees: big.NewInt(101), - }, - }, - core.MetachainShardId: { - &state.ValidatorInfo{ - PublicKey: []byte("m1"), - ShardId: core.MetachainShardId, - List: "eligible", - Index: 1, - TempRating: 100, - Rating: 1000, - RewardAddress: []byte("rewardM1"), - LeaderSuccess: 1, - LeaderFailure: 2, - ValidatorSuccess: 3, - ValidatorFailure: 4, - TotalLeaderSuccess: 10, - TotalLeaderFailure: 20, - TotalValidatorSuccess: 30, - TotalValidatorFailure: 40, - NumSelectedInSuccessBlocks: 5, - AccumulatedFees: big.NewInt(100), - }, - &state.ValidatorInfo{ - PublicKey: []byte("m0"), - ShardId: core.MetachainShardId, - List: "waiting", - Index: 2, - TempRating: 101, - Rating: 1001, - RewardAddress: []byte("rewardM2"), - LeaderSuccess: 6, - LeaderFailure: 7, - ValidatorSuccess: 8, - ValidatorFailure: 9, - TotalLeaderSuccess: 60, - TotalLeaderFailure: 70, - TotalValidatorSuccess: 80, - TotalValidatorFailure: 90, - NumSelectedInSuccessBlocks: 10, - AccumulatedFees: big.NewInt(101), - }, - }, - } - return validatorInfo +func createMockValidatorInfo() state.ShardValidatorsInfoMapHandler { + validatorsInfo := state.NewShardValidatorsInfoMap() + + _ = validatorsInfo.Add(&state.ValidatorInfo{ + PublicKey: []byte("a1"), + ShardId: 0, + List: "eligible", + Index: 1, + TempRating: 100, + Rating: 1000, + RewardAddress: []byte("rewardA1"), + LeaderSuccess: 1, + LeaderFailure: 2, + ValidatorSuccess: 3, + ValidatorFailure: 4, + TotalLeaderSuccess: 10, + TotalLeaderFailure: 20, + TotalValidatorSuccess: 30, + TotalValidatorFailure: 40, + NumSelectedInSuccessBlocks: 5, + AccumulatedFees: big.NewInt(100), + }) + + _ = validatorsInfo.Add(&state.ValidatorInfo{ + PublicKey: []byte("a2"), + ShardId: 0, + List: "waiting", + Index: 2, + TempRating: 101, + Rating: 1001, + RewardAddress: []byte("rewardA2"), + LeaderSuccess: 6, + LeaderFailure: 7, + ValidatorSuccess: 8, + ValidatorFailure: 9, + TotalLeaderSuccess: 60, + TotalLeaderFailure: 70, + TotalValidatorSuccess: 80, + TotalValidatorFailure: 90, + NumSelectedInSuccessBlocks: 10, + AccumulatedFees: big.NewInt(101), + }) + + _ = validatorsInfo.Add(&state.ValidatorInfo{ + PublicKey: []byte("m1"), + ShardId: core.MetachainShardId, + List: "eligible", + Index: 1, + TempRating: 100, + Rating: 1000, + RewardAddress: []byte("rewardM1"), + LeaderSuccess: 1, + LeaderFailure: 2, + ValidatorSuccess: 3, + ValidatorFailure: 4, + TotalLeaderSuccess: 10, + TotalLeaderFailure: 20, + TotalValidatorSuccess: 30, + TotalValidatorFailure: 40, + NumSelectedInSuccessBlocks: 5, + AccumulatedFees: big.NewInt(100), + }) + + _ = validatorsInfo.Add(&state.ValidatorInfo{ + PublicKey: []byte("m0"), + ShardId: core.MetachainShardId, + List: "waiting", + Index: 2, + TempRating: 101, + Rating: 1001, + RewardAddress: []byte("rewardM2"), + LeaderSuccess: 6, + LeaderFailure: 7, + ValidatorSuccess: 8, + ValidatorFailure: 9, + TotalLeaderSuccess: 60, + TotalLeaderFailure: 70, + TotalValidatorSuccess: 80, + TotalValidatorFailure: 90, + NumSelectedInSuccessBlocks: 10, + AccumulatedFees: big.NewInt(101), + }) + + return validatorsInfo } func createMockEpochValidatorInfoCreatorsArguments() ArgsNewValidatorInfoCreator { @@ -127,7 +127,7 @@ func createMockEpochValidatorInfoCreatorsArguments() ArgsNewValidatorInfoCreator return argsNewEpochEconomics } -func verifyMiniBlocks(bl *block.MiniBlock, infos []*state.ValidatorInfo, marshalizer marshal.Marshalizer) bool { +func verifyMiniBlocks(bl *block.MiniBlock, infos []state.ValidatorInfoHandler, marshalizer marshal.Marshalizer) bool { if bl.SenderShardID != core.MetachainShardId || bl.ReceiverShardID != core.AllShardId || len(bl.TxHashes) == 0 || @@ -135,10 +135,10 @@ func verifyMiniBlocks(bl *block.MiniBlock, infos []*state.ValidatorInfo, marshal return false } - validatorCopy := make([]*state.ValidatorInfo, len(infos)) + validatorCopy := make([]state.ValidatorInfoHandler, len(infos)) copy(validatorCopy, infos) sort.Slice(validatorCopy, func(a, b int) bool { - return bytes.Compare(validatorCopy[a].PublicKey, validatorCopy[b].PublicKey) < 0 + return bytes.Compare(validatorCopy[a].GetPublicKey(), validatorCopy[b].GetPublicKey()) < 0 }) for i, txHash := range bl.TxHashes { @@ -264,9 +264,9 @@ func TestEpochValidatorInfoCreator_CreateValidatorInfoMiniBlocksShouldBeCorrect( vic, _ := NewValidatorInfoCreator(arguments) mbs, _ := vic.CreateValidatorInfoMiniBlocks(validatorInfo) - correctMB0 := verifyMiniBlocks(mbs[0], validatorInfo[0], arguments.Marshalizer) + correctMB0 := verifyMiniBlocks(mbs[0], validatorInfo.GetShardValidatorsInfoMap()[0], arguments.Marshalizer) require.True(t, correctMB0) - correctMbMeta := verifyMiniBlocks(mbs[1], validatorInfo[core.MetachainShardId], arguments.Marshalizer) + correctMbMeta := verifyMiniBlocks(mbs[1], validatorInfo.GetShardValidatorsInfoMap()[core.MetachainShardId], arguments.Marshalizer) require.True(t, correctMbMeta) } @@ -345,11 +345,11 @@ func TestEpochValidatorInfoCreator_VerifyValidatorInfoMiniBlocksNilOneMiniblock( } func createValidatorInfoMiniBlocks( - validatorInfo map[uint32][]*state.ValidatorInfo, + validatorInfo state.ShardValidatorsInfoMapHandler, arguments ArgsNewValidatorInfoCreator, ) []*block.MiniBlock { miniblocks := make([]*block.MiniBlock, 0) - for _, validators := range validatorInfo { + for _, validators := range validatorInfo.GetShardValidatorsInfoMap() { if len(validators) == 0 { continue } @@ -360,10 +360,10 @@ func createValidatorInfoMiniBlocks( miniBlock.TxHashes = make([][]byte, len(validators)) miniBlock.Type = block.PeerBlock - validatorCopy := make([]*state.ValidatorInfo, len(validators)) + validatorCopy := make([]state.ValidatorInfoHandler, len(validators)) copy(validatorCopy, validators) sort.Slice(validatorCopy, func(a, b int) bool { - return bytes.Compare(validatorCopy[a].PublicKey, validatorCopy[b].PublicKey) < 0 + return bytes.Compare(validatorCopy[a].GetPublicKey(), validatorCopy[b].GetPublicKey()) < 0 }) for index, validator := range validatorCopy { diff --git a/process/block/metablock.go b/process/block/metablock.go index e61695bc7d9..a3a4da91b57 100644 --- a/process/block/metablock.go +++ b/process/block/metablock.go @@ -446,7 +446,7 @@ func (mp *metaProcessor) processEpochStartMetaBlock( return err } - err = mp.validatorInfoCreator.VerifyValidatorInfoMiniBlocks(body.MiniBlocks, oldValidatorsInfoMap) + err = mp.verifyValidatorInfoMiniBlocks(oldValidatorsInfoMap, body.MiniBlocks) if err != nil { return err } @@ -918,7 +918,7 @@ func (mp *metaProcessor) createEpochStartBody(metaBlock *block.MetaBlock) (data. return nil, err } - validatorMiniBlocks, err := mp.validatorInfoCreator.CreateValidatorInfoMiniBlocks(oldValidatorsInfoMap) + validatorMiniBlocks, err := mp.createValidatorInfoMiniBlocks(oldValidatorsInfoMap) if err != nil { return nil, err } @@ -2506,7 +2506,7 @@ func (mp *metaProcessor) DecodeBlockHeader(dta []byte) data.HeaderHandler { return metaBlock } -// TODO: StakingV4 delete this once map[uint32][]*ValidatorInfo is replaced with interface +// TODO: StakingV4 delete these funcs once map[uint32][]*ValidatorInfo is replaced with interface func (mp *metaProcessor) processSystemSCsWithNewValidatorsInfo(allValidatorsInfo map[uint32][]*state.ValidatorInfo, header data.HeaderHandler) error { validatorsInfoMap := state.CreateShardValidatorsMap(allValidatorsInfo) err := mp.epochSystemSCProcessor.ProcessSystemSmartContract(validatorsInfoMap, header) @@ -2516,3 +2516,23 @@ func (mp *metaProcessor) processSystemSCsWithNewValidatorsInfo(allValidatorsInfo state.Replace(allValidatorsInfo, validatorsInfoMap.GetValInfoPointerMap()) return nil } + +func (mp *metaProcessor) verifyValidatorInfoMiniBlocks(allValidatorsInfo map[uint32][]*state.ValidatorInfo, miniBlocks []*block.MiniBlock) error { + validatorsInfoMap := state.CreateShardValidatorsMap(allValidatorsInfo) + err := mp.validatorInfoCreator.VerifyValidatorInfoMiniBlocks(miniBlocks, validatorsInfoMap) + if err != nil { + return err + } + state.Replace(allValidatorsInfo, validatorsInfoMap.GetValInfoPointerMap()) + return nil +} + +func (mp *metaProcessor) createValidatorInfoMiniBlocks(allValidatorsInfo map[uint32][]*state.ValidatorInfo) (block.MiniBlockSlice, error) { + validatorsInfoMap := state.CreateShardValidatorsMap(allValidatorsInfo) + validatorMiniBlocks, err := mp.validatorInfoCreator.CreateValidatorInfoMiniBlocks(validatorsInfoMap) + if err != nil { + return nil, err + } + state.Replace(allValidatorsInfo, validatorsInfoMap.GetValInfoPointerMap()) + return validatorMiniBlocks, err +} diff --git a/process/block/metablock_test.go b/process/block/metablock_test.go index b80dfe6317e..5bc0f8bd94c 100644 --- a/process/block/metablock_test.go +++ b/process/block/metablock_test.go @@ -3354,8 +3354,8 @@ func TestMetaProcessor_CreateEpochStartBodyShouldWork(t *testing.T) { } arguments.EpochValidatorInfoCreator = &testscommon.EpochValidatorInfoCreatorStub{ - CreateValidatorInfoMiniBlocksCalled: func(validatorsInfo map[uint32][]*state.ValidatorInfo) (block.MiniBlockSlice, error) { - assert.Equal(t, expectedValidatorsInfo.GetValInfoPointerMap(), validatorsInfo) + CreateValidatorInfoMiniBlocksCalled: func(validatorsInfo state.ShardValidatorsInfoMapHandler) (block.MiniBlockSlice, error) { + assert.Equal(t, expectedValidatorsInfo, validatorsInfo) return validatorInfoMiniBlocks, nil }, } @@ -3416,8 +3416,8 @@ func TestMetaProcessor_CreateEpochStartBodyShouldWork(t *testing.T) { } arguments.EpochValidatorInfoCreator = &testscommon.EpochValidatorInfoCreatorStub{ - CreateValidatorInfoMiniBlocksCalled: func(validatorsInfo map[uint32][]*state.ValidatorInfo) (block.MiniBlockSlice, error) { - assert.Equal(t, expectedValidatorsInfo.GetValInfoPointerMap(), validatorsInfo) + CreateValidatorInfoMiniBlocksCalled: func(validatorsInfo state.ShardValidatorsInfoMapHandler) (block.MiniBlockSlice, error) { + assert.Equal(t, expectedValidatorsInfo, validatorsInfo) return validatorInfoMiniBlocks, nil }, } diff --git a/process/interface.go b/process/interface.go index 2f4c8192d95..3e79a1b3e63 100644 --- a/process/interface.go +++ b/process/interface.go @@ -897,8 +897,8 @@ type RewardsCreator interface { // EpochStartValidatorInfoCreator defines the functionality for the metachain to create validator statistics at end of epoch type EpochStartValidatorInfoCreator interface { - CreateValidatorInfoMiniBlocks(validatorInfo map[uint32][]*state.ValidatorInfo) (block.MiniBlockSlice, error) - VerifyValidatorInfoMiniBlocks(miniblocks []*block.MiniBlock, validatorsInfo map[uint32][]*state.ValidatorInfo) error + CreateValidatorInfoMiniBlocks(validatorInfo state.ShardValidatorsInfoMapHandler) (block.MiniBlockSlice, error) + VerifyValidatorInfoMiniBlocks(miniblocks []*block.MiniBlock, validatorsInfo state.ShardValidatorsInfoMapHandler) error SaveValidatorInfoBlocksToStorage(metaBlock data.HeaderHandler, body *block.Body) DeleteValidatorInfoBlocksFromStorage(metaBlock data.HeaderHandler) RemoveBlockDataFromPools(metaBlock data.HeaderHandler, body *block.Body) diff --git a/testscommon/epochValidatorInfoCreatorStub.go b/testscommon/epochValidatorInfoCreatorStub.go index fb703e95d00..a56497955fa 100644 --- a/testscommon/epochValidatorInfoCreatorStub.go +++ b/testscommon/epochValidatorInfoCreatorStub.go @@ -8,8 +8,8 @@ import ( // EpochValidatorInfoCreatorStub - type EpochValidatorInfoCreatorStub struct { - CreateValidatorInfoMiniBlocksCalled func(validatorsInfo map[uint32][]*state.ValidatorInfo) (block.MiniBlockSlice, error) - VerifyValidatorInfoMiniBlocksCalled func(miniblocks []*block.MiniBlock, validatorsInfo map[uint32][]*state.ValidatorInfo) error + CreateValidatorInfoMiniBlocksCalled func(validatorsInfo state.ShardValidatorsInfoMapHandler) (block.MiniBlockSlice, error) + VerifyValidatorInfoMiniBlocksCalled func(miniblocks []*block.MiniBlock, validatorsInfo state.ShardValidatorsInfoMapHandler) error CreateMarshalizedDataCalled func(body block.Body) map[string][][]byte SaveTxBlockToStorageCalled func(metaBlock data.HeaderHandler, body *block.Body) DeleteTxsFromStorageCalled func(metaBlock data.HeaderHandler) @@ -17,7 +17,7 @@ type EpochValidatorInfoCreatorStub struct { } // CreateValidatorInfoMiniBlocks - -func (e *EpochValidatorInfoCreatorStub) CreateValidatorInfoMiniBlocks(validatorInfo map[uint32][]*state.ValidatorInfo) (block.MiniBlockSlice, error) { +func (e *EpochValidatorInfoCreatorStub) CreateValidatorInfoMiniBlocks(validatorInfo state.ShardValidatorsInfoMapHandler) (block.MiniBlockSlice, error) { if e.CreateValidatorInfoMiniBlocksCalled != nil { return e.CreateValidatorInfoMiniBlocksCalled(validatorInfo) } @@ -25,7 +25,7 @@ func (e *EpochValidatorInfoCreatorStub) CreateValidatorInfoMiniBlocks(validatorI } // VerifyValidatorInfoMiniBlocks - -func (e *EpochValidatorInfoCreatorStub) VerifyValidatorInfoMiniBlocks(miniblocks []*block.MiniBlock, validatorsInfo map[uint32][]*state.ValidatorInfo) error { +func (e *EpochValidatorInfoCreatorStub) VerifyValidatorInfoMiniBlocks(miniblocks []*block.MiniBlock, validatorsInfo state.ShardValidatorsInfoMapHandler) error { if e.VerifyValidatorInfoMiniBlocksCalled != nil { return e.VerifyValidatorInfoMiniBlocksCalled(miniblocks, validatorsInfo) } From 8cd7d5b6c1d1c06b98866be6678ced4e4dbe69c7 Mon Sep 17 00:00:00 2001 From: Elrond/ Date: Tue, 22 Mar 2022 16:26:34 +0200 Subject: [PATCH 3/3] FIX: Review finding --- epochStart/metachain/validators.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/epochStart/metachain/validators.go b/epochStart/metachain/validators.go index 25080ceabea..532ae70ce99 100644 --- a/epochStart/metachain/validators.go +++ b/epochStart/metachain/validators.go @@ -74,8 +74,9 @@ func (vic *validatorInfoCreator) CreateValidatorInfoMiniBlocks(validatorsInfo st miniblocks := make([]*block.MiniBlock, 0) + validatorsMap := validatorsInfo.GetShardValidatorsInfoMap() for shardId := uint32(0); shardId < vic.shardCoordinator.NumberOfShards(); shardId++ { - validators := validatorsInfo.GetShardValidatorsInfoMap()[shardId] + validators := validatorsMap[shardId] if len(validators) == 0 { continue } @@ -88,7 +89,7 @@ func (vic *validatorInfoCreator) CreateValidatorInfoMiniBlocks(validatorsInfo st miniblocks = append(miniblocks, miniBlock) } - validators := validatorsInfo.GetShardValidatorsInfoMap()[core.MetachainShardId] + validators := validatorsMap[core.MetachainShardId] if len(validators) == 0 { return miniblocks, nil }