From e81d41e9af2667a46b762f0b722fefd62dfe9595 Mon Sep 17 00:00:00 2001 From: MariusC Date: Wed, 11 Dec 2024 17:03:43 +0200 Subject: [PATCH 01/16] CLN: Start removing runtype factory errors pt 1 --- factory/runType/runTypeComponents.go | 22 +++---------- integrationTests/testProcessorNode.go | 14 ++------- .../hooks/blockChainHookFactory.go | 4 +-- .../hooks/blockChainHookFactory_test.go | 31 ++++++++----------- .../sovereignBlockChainHookFactory_test.go | 9 +++--- .../storageBootstrap/shardBootstrapFactory.go | 4 +-- .../shardBootstrapFactory_test.go | 25 +++------------ .../sovereignShardBootstrapFactory_test.go | 9 +++--- .../genesisMocks/runTypeComponentsStub.go | 3 +- 9 files changed, 39 insertions(+), 82 deletions(-) diff --git a/factory/runType/runTypeComponents.go b/factory/runType/runTypeComponents.go index 7b2760d1655..7c7958b7d55 100644 --- a/factory/runType/runTypeComponents.go +++ b/factory/runType/runTypeComponents.go @@ -156,22 +156,8 @@ func NewRunTypeComponentsFactory(args ArgsRunTypeComponents) (*runTypeComponents }, nil } -// TODO remove the error from the factories where it's possible - MX-15415 // Create creates the runType components func (rcf *runTypeComponentsFactory) Create() (*runTypeComponents, error) { - blockChainHookHandlerFactory, err := hooks.NewBlockChainHookFactory() - if err != nil { - return nil, fmt.Errorf("runTypeComponentsFactory - NewBlockChainHookFactory failed: %w", err) - } - - epochStartBootstrapperFactory := bootstrap.NewEpochStartBootstrapperFactory() - bootstrapperFromStorageFactory := storageBootstrap.NewShardStorageBootstrapperFactory() - - shardBootstrapFactory, err := storageBootstrap.NewShardBootstrapFactory() - if err != nil { - return nil, fmt.Errorf("runTypeComponentsFactory - NewShardBootstrapFactory failed: %w", err) - } - blockProcessorFactory, err := block.NewShardBlockProcessorFactory() if err != nil { return nil, fmt.Errorf("runTypeComponentsFactory - NewShardBlockProcessorFactory failed: %w", err) @@ -273,10 +259,10 @@ func (rcf *runTypeComponentsFactory) Create() (*runTypeComponents, error) { } return &runTypeComponents{ - blockChainHookHandlerCreator: blockChainHookHandlerFactory, - epochStartBootstrapperCreator: epochStartBootstrapperFactory, - bootstrapperFromStorageCreator: bootstrapperFromStorageFactory, - bootstrapperCreator: shardBootstrapFactory, + blockChainHookHandlerCreator: hooks.NewBlockChainHookFactory(), + epochStartBootstrapperCreator: bootstrap.NewEpochStartBootstrapperFactory(), + bootstrapperFromStorageCreator: storageBootstrap.NewShardStorageBootstrapperFactory(), + bootstrapperCreator: storageBootstrap.NewShardBootstrapFactory(), blockProcessorCreator: blockProcessorFactory, forkDetectorCreator: forkDetectorFactory, blockTrackerCreator: blockTrackerFactory, diff --git a/integrationTests/testProcessorNode.go b/integrationTests/testProcessorNode.go index dbed9fc40a9..83fe59ab3bc 100644 --- a/integrationTests/testProcessorNode.go +++ b/integrationTests/testProcessorNode.go @@ -1026,7 +1026,7 @@ func (tpn *TestProcessorNode) createFullSCQueryService(gasMap map[string]map[str argsHook.BlockChain = apiBlockchain esdtTransferParser, _ := parsers.NewESDTTransferParser(TestMarshalizer) - blockChainHookImpl, _ := CreateBlockChainHook(argsHook) + blockChainHookImpl, _ := hooks.NewBlockChainHookImpl(argsHook) argsNewVMFactory := shard.ArgVMContainerFactory{ Config: *vmConfig, BlockChainHook: blockChainHookImpl, @@ -1692,7 +1692,7 @@ func (tpn *TestProcessorNode) initInnerProcessors(gasMap map[string]map[string]u } maxGasLimitPerBlock := uint64(0xFFFFFFFFFFFFFFFF) - blockChainHookImpl, _ := CreateBlockChainHook(argsHook) + blockChainHookImpl, _ := hooks.NewBlockChainHookImpl(argsHook) tpn.EnableEpochs.FailExecutionOnEveryAPIErrorEnableEpoch = 1 argsNewVMFactory := shard.ArgVMContainerFactory{ Config: *vmConfig, @@ -3637,13 +3637,3 @@ func GetDefaultEnableEpochsConfig() *config.EnableEpochs { StakingV4Step2EnableEpoch: UnreachableEpoch, } } - -// CreateBlockChainHook creates a blockchain hook based on the chain run type (normal/sovereign) -func CreateBlockChainHook(args hooks.ArgBlockChainHook) (process.BlockChainHookWithAccountsAdapter, error) { - blockChainHookFactory, err := hooks.NewBlockChainHookFactory() - if err != nil { - return nil, err - } - - return blockChainHookFactory.CreateBlockChainHookHandler(args) -} diff --git a/process/smartContract/hooks/blockChainHookFactory.go b/process/smartContract/hooks/blockChainHookFactory.go index 34855ad764f..1ddf7cd5817 100644 --- a/process/smartContract/hooks/blockChainHookFactory.go +++ b/process/smartContract/hooks/blockChainHookFactory.go @@ -7,8 +7,8 @@ type blockChainHookFactory struct { } // NewBlockChainHookFactory creates a new instance of blockChainHookFactory -func NewBlockChainHookFactory() (BlockChainHookHandlerCreator, error) { - return &blockChainHookFactory{}, nil +func NewBlockChainHookFactory() BlockChainHookHandlerCreator { + return &blockChainHookFactory{} } // CreateBlockChainHookHandler creates a blockchain hook based on the chain run type normal diff --git a/process/smartContract/hooks/blockChainHookFactory_test.go b/process/smartContract/hooks/blockChainHookFactory_test.go index f108bafd66a..eb5e26a9734 100644 --- a/process/smartContract/hooks/blockChainHookFactory_test.go +++ b/process/smartContract/hooks/blockChainHookFactory_test.go @@ -1,49 +1,44 @@ package hooks import ( + "fmt" "testing" + vmcommonBuiltInFunctions "github.com/multiversx/mx-chain-vm-common-go/builtInFunctions" + "github.com/stretchr/testify/require" + "github.com/multiversx/mx-chain-go/testscommon" "github.com/multiversx/mx-chain-go/testscommon/dataRetriever" "github.com/multiversx/mx-chain-go/testscommon/enableEpochsHandlerMock" "github.com/multiversx/mx-chain-go/testscommon/epochNotifier" "github.com/multiversx/mx-chain-go/testscommon/state" storageMock "github.com/multiversx/mx-chain-go/testscommon/storage" - vmcommonBuiltInFunctions "github.com/multiversx/mx-chain-vm-common-go/builtInFunctions" - "github.com/stretchr/testify/assert" ) func TestNewBlockChainHookFactory(t *testing.T) { t.Parallel() - factory, err := NewBlockChainHookFactory() - - assert.Nil(t, err) - assert.NotNil(t, factory) + factory := NewBlockChainHookFactory() + require.NotNil(t, factory) } func TestBlockChainHookFactory_CreateBlockChainHook(t *testing.T) { t.Parallel() - factory, err := NewBlockChainHookFactory() - - assert.Nil(t, err) - - _, err = factory.CreateBlockChainHookHandler(getDefaultArgs()) - - assert.Nil(t, err) + factory := NewBlockChainHookFactory() + blockChainHook, err := factory.CreateBlockChainHookHandler(getDefaultArgs()) + require.Equal(t, "*hooks.BlockChainHookImpl", fmt.Sprintf("%T", blockChainHook)) + require.Nil(t, err) } func TestBlockChainHookFactory_IsInterfaceNil(t *testing.T) { t.Parallel() - factory, err := NewBlockChainHookFactory() - - assert.Nil(t, err) - assert.False(t, factory.IsInterfaceNil()) + factory := NewBlockChainHookFactory() + require.False(t, factory.IsInterfaceNil()) factory = (*blockChainHookFactory)(nil) - assert.True(t, factory.IsInterfaceNil()) + require.True(t, factory.IsInterfaceNil()) } func getDefaultArgs() ArgBlockChainHook { diff --git a/process/smartContract/hooks/sovereignBlockChainHookFactory_test.go b/process/smartContract/hooks/sovereignBlockChainHookFactory_test.go index 9d8d5a9db64..dad589f4871 100644 --- a/process/smartContract/hooks/sovereignBlockChainHookFactory_test.go +++ b/process/smartContract/hooks/sovereignBlockChainHookFactory_test.go @@ -3,8 +3,9 @@ package hooks import ( "testing" - "github.com/multiversx/mx-chain-go/errors" "github.com/stretchr/testify/require" + + "github.com/multiversx/mx-chain-go/errors" ) func TestNewSovereignBlockChainHookFactory(t *testing.T) { @@ -15,7 +16,7 @@ func TestNewSovereignBlockChainHookFactory(t *testing.T) { require.Nil(t, factory) require.Equal(t, errors.ErrNilBlockChainHookFactory, err) - baseFactory, _ := NewBlockChainHookFactory() + baseFactory := NewBlockChainHookFactory() factory, err = NewSovereignBlockChainHookFactory(baseFactory) require.Nil(t, err) @@ -25,7 +26,7 @@ func TestNewSovereignBlockChainHookFactory(t *testing.T) { func TestSovereignBlockChainHookFactory_CreateBlockChainHook(t *testing.T) { t.Parallel() - baseFactory, _ := NewBlockChainHookFactory() + baseFactory := NewBlockChainHookFactory() factory, _ := NewSovereignBlockChainHookFactory(baseFactory) bhh, err := factory.CreateBlockChainHookHandler(ArgBlockChainHook{}) @@ -42,7 +43,7 @@ func TestSovereignBlockChainHookFactory_CreateBlockChainHook(t *testing.T) { func TestSovereignBlockChainHookFactory_IsInterfaceNil(t *testing.T) { t.Parallel() - baseFactory, _ := NewBlockChainHookFactory() + baseFactory := NewBlockChainHookFactory() factory, _ := NewSovereignBlockChainHookFactory(baseFactory) require.False(t, factory.IsInterfaceNil()) diff --git a/process/sync/storageBootstrap/shardBootstrapFactory.go b/process/sync/storageBootstrap/shardBootstrapFactory.go index 16025fd74de..6a27124f8c6 100644 --- a/process/sync/storageBootstrap/shardBootstrapFactory.go +++ b/process/sync/storageBootstrap/shardBootstrapFactory.go @@ -9,8 +9,8 @@ type shardBootstrapFactory struct { } // NewShardBootstrapFactory creates a new instance of shardBootstrapFactory for run type normal -func NewShardBootstrapFactory() (*shardBootstrapFactory, error) { - return &shardBootstrapFactory{}, nil +func NewShardBootstrapFactory() *shardBootstrapFactory { + return &shardBootstrapFactory{} } // CreateBootstrapper creates a new instance of shardBootstrapFactory for run type normal diff --git a/process/sync/storageBootstrap/shardBootstrapFactory_test.go b/process/sync/storageBootstrap/shardBootstrapFactory_test.go index c8fab3b8ee0..3ca6d984af2 100644 --- a/process/sync/storageBootstrap/shardBootstrapFactory_test.go +++ b/process/sync/storageBootstrap/shardBootstrapFactory_test.go @@ -4,6 +4,8 @@ import ( "testing" "time" + "github.com/stretchr/testify/require" + "github.com/multiversx/mx-chain-go/dataRetriever" "github.com/multiversx/mx-chain-go/process/mock" "github.com/multiversx/mx-chain-go/process/sync" @@ -17,43 +19,26 @@ import ( stateMock "github.com/multiversx/mx-chain-go/testscommon/state" statusHandlerMock "github.com/multiversx/mx-chain-go/testscommon/statusHandler" storageStubs "github.com/multiversx/mx-chain-go/testscommon/storage" - "github.com/stretchr/testify/require" ) func TestNewShardBootstrapFactory(t *testing.T) { t.Parallel() - sbf, err := NewShardBootstrapFactory() - + sbf := NewShardBootstrapFactory() require.NotNil(t, sbf) - require.Nil(t, err) + require.False(t, sbf.IsInterfaceNil()) } func TestShardBootstrapFactory_CreateShardBootstrapFactory(t *testing.T) { t.Parallel() - sbf, err := NewShardBootstrapFactory() - - require.NotNil(t, sbf) - require.Nil(t, err) - + sbf := NewShardBootstrapFactory() bootStrapper, err := sbf.CreateBootstrapper(getDefaultArgs()) require.NotNil(t, bootStrapper) require.Nil(t, err) } -func TestShardBootstrapFactory_IsInterfaceNil(t *testing.T) { - t.Parallel() - - sbf, _ := NewShardBootstrapFactory() - - require.False(t, sbf.IsInterfaceNil()) - - sbf = nil - require.True(t, sbf.IsInterfaceNil()) -} - func getDefaultArgs() sync.ArgShardBootstrapper { bootStorer := genericMocks.NewStorerMock() argBaseBoostrapper := sync.ArgBaseBootstrapper{ diff --git a/process/sync/storageBootstrap/sovereignShardBootstrapFactory_test.go b/process/sync/storageBootstrap/sovereignShardBootstrapFactory_test.go index 4ad188d80f0..966d4f2ac8d 100644 --- a/process/sync/storageBootstrap/sovereignShardBootstrapFactory_test.go +++ b/process/sync/storageBootstrap/sovereignShardBootstrapFactory_test.go @@ -3,9 +3,10 @@ package storageBootstrap import ( "testing" + "github.com/stretchr/testify/require" + "github.com/multiversx/mx-chain-go/errors" "github.com/multiversx/mx-chain-go/process/sync" - "github.com/stretchr/testify/require" ) func TestNewSovereignShardBootstrapFactory(t *testing.T) { @@ -16,7 +17,7 @@ func TestNewSovereignShardBootstrapFactory(t *testing.T) { require.Nil(t, ssbf) require.Equal(t, errors.ErrNilShardBootstrapFactory, err) - sbf, _ := NewShardBootstrapFactory() + sbf := NewShardBootstrapFactory() ssbf, err = NewSovereignShardBootstrapFactory(sbf) require.NotNil(t, ssbf) @@ -26,7 +27,7 @@ func TestNewSovereignShardBootstrapFactory(t *testing.T) { func TestSovereignShardBootstrapFactory_CreateShardBootstrapFactory(t *testing.T) { t.Parallel() - sbf, _ := NewShardBootstrapFactory() + sbf := NewShardBootstrapFactory() ssbf, _ := NewSovereignShardBootstrapFactory(sbf) _, err := ssbf.CreateBootstrapper(sync.ArgShardBootstrapper{}) @@ -42,7 +43,7 @@ func TestSovereignShardBootstrapFactory_CreateShardBootstrapFactory(t *testing.T func TestSovereignShardBootstrapFactory_IsInterfaceNil(t *testing.T) { t.Parallel() - sbf, _ := NewShardBootstrapFactory() + sbf := NewShardBootstrapFactory() ssbf, _ := NewSovereignShardBootstrapFactory(sbf) require.False(t, ssbf.IsInterfaceNil()) diff --git a/testscommon/genesisMocks/runTypeComponentsStub.go b/testscommon/genesisMocks/runTypeComponentsStub.go index 4f975255c6b..907c1038129 100644 --- a/testscommon/genesisMocks/runTypeComponentsStub.go +++ b/testscommon/genesisMocks/runTypeComponentsStub.go @@ -45,7 +45,6 @@ type RunTypeComponentsStub struct { // NewRunTypeComponentsStub - func NewRunTypeComponentsStub() *RunTypeComponentsStub { - blockChainHookHandlerFactory, _ := hooks.NewBlockChainHookFactory() transactionCoordinatorFactory, _ := coordinator.NewShardTransactionCoordinatorFactory() scResultsPreProcessorCreator, _ := preprocess.NewSmartContractResultPreProcessorFactory() scProcessorCreator := processProxy.NewSCProcessProxyFactory() @@ -59,7 +58,7 @@ func NewRunTypeComponentsStub() *RunTypeComponentsStub { hdrFactory, _ := block.NewShardHeaderFactory(createHeaderVersionHandler("*")) return &RunTypeComponentsStub{ - BlockChainHookHandlerFactory: blockChainHookHandlerFactory, + BlockChainHookHandlerFactory: hooks.NewBlockChainHookFactory(), TransactionCoordinatorFactory: transactionCoordinatorFactory, SCResultsPreProcessorFactory: scResultsPreProcessorCreator, SCProcessorFactory: scProcessorCreator, From 000454fb602fd9ab123757ce0fa2a633c628f6e5 Mon Sep 17 00:00:00 2001 From: MariusC Date: Thu, 12 Dec 2024 14:36:55 +0200 Subject: [PATCH 02/16] FEAT: Remove return error for factories pt 2 --- factory/runType/runTypeComponents.go | 53 +++---------------- .../shardScheduledTxsExecutionFactory.go | 5 +- .../shardScheduledTxsExecutionFactory_test.go | 10 ++-- .../smartContractResultPreProcessorFactory.go | 4 +- ...tContractResultPreProcessorFactory_test.go | 15 +++--- ...tContractResultPreProcessorFactory_test.go | 9 ++-- process/block/shardBlockProcessorFactory.go | 4 +- .../block/shardBlockProcessorFactory_test.go | 12 ++--- process/block/shardHeaderValidatorFactory.go | 4 +- .../block/shardHeaderValidatorFactory_test.go | 10 ++-- .../sovereignBlockProcessorFactory_test.go | 11 ++-- ...vereignChainHeaderValidatorFactory_test.go | 9 ++-- .../shardTransactionCoordinatorFactory.go | 4 +- ...shardTransactionCoordinatorFactory_test.go | 8 ++- ...reignTransactionCoordinatorFactory_test.go | 9 ++-- .../preProcessorsContainerFactory_test.go | 7 +-- process/sync/shardForkDetectorFactory.go | 4 +- process/sync/shardForkDetectorFactory_test.go | 10 ++-- .../sync/sovereignForkDetectorFactory_test.go | 9 ++-- process/track/shardBlockTrackerFactory.go | 4 +- .../track/shardBlockTrackerFactory_test.go | 10 ++-- .../sovereignBlockTrackerFactory_test.go | 9 ++-- .../genesisMocks/runTypeComponentsStub.go | 12 ++--- .../processMocks/runTypeComponentsStub.go | 3 +- 24 files changed, 100 insertions(+), 135 deletions(-) diff --git a/factory/runType/runTypeComponents.go b/factory/runType/runTypeComponents.go index 7c7958b7d55..a60a305c5d1 100644 --- a/factory/runType/runTypeComponents.go +++ b/factory/runType/runTypeComponents.go @@ -158,43 +158,6 @@ func NewRunTypeComponentsFactory(args ArgsRunTypeComponents) (*runTypeComponents // Create creates the runType components func (rcf *runTypeComponentsFactory) Create() (*runTypeComponents, error) { - blockProcessorFactory, err := block.NewShardBlockProcessorFactory() - if err != nil { - return nil, fmt.Errorf("runTypeComponentsFactory - NewShardBlockProcessorFactory failed: %w", err) - } - - forkDetectorFactory, err := sync.NewShardForkDetectorFactory() - if err != nil { - return nil, fmt.Errorf("runTypeComponentsFactory - NewShardForkDetectorFactory failed: %w", err) - } - - blockTrackerFactory, err := track.NewShardBlockTrackerFactory() - if err != nil { - return nil, fmt.Errorf("runTypeComponentsFactory - NewShardBlockTrackerFactory failed: %w", err) - } - - requestHandlerFactory := requestHandlers.NewResolverRequestHandlerFactory() - - headerValidatorFactory, err := block.NewShardHeaderValidatorFactory() - if err != nil { - return nil, fmt.Errorf("runTypeComponentsFactory - NewShardHeaderValidatorFactory failed: %w", err) - } - - scheduledTxsExecutionFactory, err := preprocess.NewShardScheduledTxsExecutionFactory() - if err != nil { - return nil, fmt.Errorf("runTypeComponentsFactory - NewSovereignScheduledTxsExecutionFactory failed: %w", err) - } - - scResultsPreProcessorCreator, err := preprocess.NewSmartContractResultPreProcessorFactory() - if err != nil { - return nil, fmt.Errorf("runTypeComponentsFactory - NewSmartContractResultPreProcessorFactory failed: %w", err) - } - - transactionCoordinatorFactory, err := coordinator.NewShardTransactionCoordinatorFactory() - if err != nil { - return nil, fmt.Errorf("runTypeComponentsFactory - NewShardTransactionCoordinatorFactory failed: %w", err) - } - validatorStatisticsProcessorFactory, err := peer.NewValidatorStatisticsProcessorFactory() if err != nil { return nil, fmt.Errorf("runTypeComponentsFactory - NewShardBlockProcessorFactory failed: %w", err) @@ -263,17 +226,17 @@ func (rcf *runTypeComponentsFactory) Create() (*runTypeComponents, error) { epochStartBootstrapperCreator: bootstrap.NewEpochStartBootstrapperFactory(), bootstrapperFromStorageCreator: storageBootstrap.NewShardStorageBootstrapperFactory(), bootstrapperCreator: storageBootstrap.NewShardBootstrapFactory(), - blockProcessorCreator: blockProcessorFactory, - forkDetectorCreator: forkDetectorFactory, - blockTrackerCreator: blockTrackerFactory, - requestHandlerCreator: requestHandlerFactory, - headerValidatorCreator: headerValidatorFactory, - scheduledTxsExecutionCreator: scheduledTxsExecutionFactory, - transactionCoordinatorCreator: transactionCoordinatorFactory, + blockProcessorCreator: block.NewShardBlockProcessorFactory(), + forkDetectorCreator: sync.NewShardForkDetectorFactory(), + blockTrackerCreator: track.NewShardBlockTrackerFactory(), + requestHandlerCreator: requestHandlers.NewResolverRequestHandlerFactory(), + headerValidatorCreator: block.NewShardHeaderValidatorFactory(), + scheduledTxsExecutionCreator: preprocess.NewShardScheduledTxsExecutionFactory(), + transactionCoordinatorCreator: coordinator.NewShardTransactionCoordinatorFactory(), validatorStatisticsProcessorCreator: validatorStatisticsProcessorFactory, additionalStorageServiceCreator: additionalStorageServiceCreator, scProcessorCreator: scProcessorCreator, - scResultPreProcessorCreator: scResultsPreProcessorCreator, + scResultPreProcessorCreator: preprocess.NewSmartContractResultPreProcessorFactory(), consensusModel: consensus.ConsensusModelV1, vmContainerMetaFactory: vmContainerMetaCreator, vmContainerShardFactory: vmContainerShardCreator, diff --git a/process/block/preprocess/shardScheduledTxsExecutionFactory.go b/process/block/preprocess/shardScheduledTxsExecutionFactory.go index 2cc1f703e58..80e8d519343 100644 --- a/process/block/preprocess/shardScheduledTxsExecutionFactory.go +++ b/process/block/preprocess/shardScheduledTxsExecutionFactory.go @@ -3,6 +3,7 @@ package preprocess import ( "github.com/multiversx/mx-chain-core-go/hashing" "github.com/multiversx/mx-chain-core-go/marshal" + "github.com/multiversx/mx-chain-go/common" "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/sharding" @@ -24,8 +25,8 @@ type shardScheduledTxsExecutionFactory struct { } // NewShardScheduledTxsExecutionFactory creates a new shard scheduled txs execution factory -func NewShardScheduledTxsExecutionFactory() (*shardScheduledTxsExecutionFactory, error) { - return &shardScheduledTxsExecutionFactory{}, nil +func NewShardScheduledTxsExecutionFactory() *shardScheduledTxsExecutionFactory { + return &shardScheduledTxsExecutionFactory{} } // CreateScheduledTxsExecutionHandler creates a new scheduled txs execution handler for shard chain diff --git a/process/block/preprocess/shardScheduledTxsExecutionFactory_test.go b/process/block/preprocess/shardScheduledTxsExecutionFactory_test.go index 8bd9d9b4ef9..397e9e4dff5 100644 --- a/process/block/preprocess/shardScheduledTxsExecutionFactory_test.go +++ b/process/block/preprocess/shardScheduledTxsExecutionFactory_test.go @@ -3,17 +3,17 @@ package preprocess import ( "testing" + "github.com/stretchr/testify/require" + "github.com/multiversx/mx-chain-go/testscommon" commonMock "github.com/multiversx/mx-chain-go/testscommon/common" "github.com/multiversx/mx-chain-go/testscommon/genericMocks" - "github.com/stretchr/testify/require" ) func TestNewShardScheduledTxsExecutionFactory(t *testing.T) { t.Parallel() - stef, err := NewShardScheduledTxsExecutionFactory() - require.Nil(t, err) + stef := NewShardScheduledTxsExecutionFactory() require.NotNil(t, stef) require.IsType(t, &shardScheduledTxsExecutionFactory{}, stef) } @@ -21,7 +21,7 @@ func TestNewShardScheduledTxsExecutionFactory(t *testing.T) { func TestShardScheduledTxsExecutionFactory_CreateScheduledTxsExecutionHandler(t *testing.T) { t.Parallel() - stef, _ := NewShardScheduledTxsExecutionFactory() + stef := NewShardScheduledTxsExecutionFactory() stxeh, err := stef.CreateScheduledTxsExecutionHandler(ScheduledTxsExecutionFactoryArgs{}) require.NotNil(t, err) @@ -44,6 +44,6 @@ func TestShardScheduledTxsExecutionFactory_CreateScheduledTxsExecutionHandler(t func TestShardScheduledTxsExecutionFactory_IsInterfaceNil(t *testing.T) { t.Parallel() - stef, _ := NewShardScheduledTxsExecutionFactory() + stef := NewShardScheduledTxsExecutionFactory() require.False(t, stef.IsInterfaceNil()) } diff --git a/process/block/preprocess/smartContractResultPreProcessorFactory.go b/process/block/preprocess/smartContractResultPreProcessorFactory.go index 5011cc32eae..ef3e41e10d9 100644 --- a/process/block/preprocess/smartContractResultPreProcessorFactory.go +++ b/process/block/preprocess/smartContractResultPreProcessorFactory.go @@ -6,8 +6,8 @@ type smartContractResultPreProcessorFactory struct { } // NewSmartContractResultPreProcessorFactory creates a new smart contract result pre processor factory -func NewSmartContractResultPreProcessorFactory() (*smartContractResultPreProcessorFactory, error) { - return &smartContractResultPreProcessorFactory{}, nil +func NewSmartContractResultPreProcessorFactory() *smartContractResultPreProcessorFactory { + return &smartContractResultPreProcessorFactory{} } // CreateSmartContractResultPreProcessor creates a new smart contract result pre processor diff --git a/process/block/preprocess/smartContractResultPreProcessorFactory_test.go b/process/block/preprocess/smartContractResultPreProcessorFactory_test.go index ffd74decdf6..067d002dee1 100644 --- a/process/block/preprocess/smartContractResultPreProcessorFactory_test.go +++ b/process/block/preprocess/smartContractResultPreProcessorFactory_test.go @@ -1,10 +1,14 @@ package preprocess_test import ( - "github.com/multiversx/mx-chain-go/testscommon/common" "testing" + "github.com/multiversx/mx-chain-go/testscommon/common" + "github.com/multiversx/mx-chain-core-go/data/smartContractResult" + vmcommon "github.com/multiversx/mx-chain-vm-common-go" + "github.com/stretchr/testify/require" + "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/process/block/preprocess" "github.com/multiversx/mx-chain-go/process/mock" @@ -14,15 +18,12 @@ import ( "github.com/multiversx/mx-chain-go/testscommon/hashingMocks" stateMock "github.com/multiversx/mx-chain-go/testscommon/state" storageStubs "github.com/multiversx/mx-chain-go/testscommon/storage" - vmcommon "github.com/multiversx/mx-chain-vm-common-go" - "github.com/stretchr/testify/require" ) func TestNewSmartContractResultPreProcessorFactory(t *testing.T) { t.Parallel() - fact, err := preprocess.NewSmartContractResultPreProcessorFactory() - require.Nil(t, err) + fact := preprocess.NewSmartContractResultPreProcessorFactory() require.NotNil(t, fact) require.Implements(t, new(preprocess.SmartContractResultPreProcessorCreator), fact) } @@ -30,7 +31,7 @@ func TestNewSmartContractResultPreProcessorFactory(t *testing.T) { func TestSmartContractResultPreProcessorFactory_CreateSmartContractResultPreProcessor(t *testing.T) { t.Parallel() - fact, _ := preprocess.NewSmartContractResultPreProcessorFactory() + fact := preprocess.NewSmartContractResultPreProcessorFactory() args := preprocess.SmartContractResultPreProcessorCreatorArgs{} preProcessor, err := fact.CreateSmartContractResultPreProcessor(args) @@ -47,7 +48,7 @@ func TestSmartContractResultPreProcessorFactory_CreateSmartContractResultPreProc func TestSmartContractResultPreProcessorFactory_IsInterfaceNil(t *testing.T) { t.Parallel() - fact, _ := preprocess.NewSmartContractResultPreProcessorFactory() + fact := preprocess.NewSmartContractResultPreProcessorFactory() require.False(t, fact.IsInterfaceNil()) } diff --git a/process/block/preprocess/sovereignSmartContractResultPreProcessorFactory_test.go b/process/block/preprocess/sovereignSmartContractResultPreProcessorFactory_test.go index c3404ba339c..62eb318fee7 100644 --- a/process/block/preprocess/sovereignSmartContractResultPreProcessorFactory_test.go +++ b/process/block/preprocess/sovereignSmartContractResultPreProcessorFactory_test.go @@ -3,9 +3,10 @@ package preprocess_test import ( "testing" + "github.com/stretchr/testify/require" + "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/process/block/preprocess" - "github.com/stretchr/testify/require" ) func TestNewSovereignContractResultPreProcessorFactory(t *testing.T) { @@ -15,7 +16,7 @@ func TestNewSovereignContractResultPreProcessorFactory(t *testing.T) { require.NotNil(t, err) require.Nil(t, sovFact) - fact, _ := preprocess.NewSmartContractResultPreProcessorFactory() + fact := preprocess.NewSmartContractResultPreProcessorFactory() sovFact, err = preprocess.NewSovereignSmartContractResultPreProcessorFactory(fact) require.Nil(t, err) require.NotNil(t, sovFact) @@ -25,7 +26,7 @@ func TestNewSovereignContractResultPreProcessorFactory(t *testing.T) { func TestSovereignContractResultPreProcessorFactory_CreateSmartContractResultPreProcessor(t *testing.T) { t.Parallel() - f, _ := preprocess.NewSmartContractResultPreProcessorFactory() + f := preprocess.NewSmartContractResultPreProcessorFactory() fact, _ := preprocess.NewSovereignSmartContractResultPreProcessorFactory(f) args := preprocess.SmartContractResultPreProcessorCreatorArgs{} @@ -43,7 +44,7 @@ func TestSovereignContractResultPreProcessorFactory_CreateSmartContractResultPre func TestSovereignContractResultPreProcessorFactory_IsInterfaceNil(t *testing.T) { t.Parallel() - f, _ := preprocess.NewSmartContractResultPreProcessorFactory() + f := preprocess.NewSmartContractResultPreProcessorFactory() fact, _ := preprocess.NewSovereignSmartContractResultPreProcessorFactory(f) require.False(t, fact.IsInterfaceNil()) } diff --git a/process/block/shardBlockProcessorFactory.go b/process/block/shardBlockProcessorFactory.go index 9245f5b095e..028578b3686 100644 --- a/process/block/shardBlockProcessorFactory.go +++ b/process/block/shardBlockProcessorFactory.go @@ -10,8 +10,8 @@ type shardBlockProcessorFactory struct { } // NewShardBlockProcessorFactory creates a new shard block processor factory -func NewShardBlockProcessorFactory() (*shardBlockProcessorFactory, error) { - return &shardBlockProcessorFactory{}, nil +func NewShardBlockProcessorFactory() *shardBlockProcessorFactory { + return &shardBlockProcessorFactory{} } // CreateBlockProcessor creates a new shard block processor for the chain run type normal diff --git a/process/block/shardBlockProcessorFactory_test.go b/process/block/shardBlockProcessorFactory_test.go index 41f20362f36..cbbba9e2ec2 100644 --- a/process/block/shardBlockProcessorFactory_test.go +++ b/process/block/shardBlockProcessorFactory_test.go @@ -3,25 +3,25 @@ package block_test import ( "testing" - "github.com/multiversx/mx-chain-go/process" - "github.com/multiversx/mx-chain-go/process/block" vmcommon "github.com/multiversx/mx-chain-vm-common-go" "github.com/stretchr/testify/require" + + "github.com/multiversx/mx-chain-go/process" + "github.com/multiversx/mx-chain-go/process/block" ) func TestNewShardBlockProcessorFactory(t *testing.T) { t.Parallel() - sbpf, err := block.NewShardBlockProcessorFactory() + sbpf := block.NewShardBlockProcessorFactory() require.NotNil(t, sbpf) - require.Nil(t, err) require.Implements(t, new(block.BlockProcessorCreator), sbpf) } func TestShardBlockProcessorFactory_CreateBlockProcessor(t *testing.T) { t.Parallel() - sbpf, _ := block.NewShardBlockProcessorFactory() + sbpf := block.NewShardBlockProcessorFactory() funcCreateMetaArgs := func(systemVM vmcommon.VMExecutionHandler) (*block.ExtraArgsMetaBlockProcessor, error) { return nil, nil @@ -47,6 +47,6 @@ func TestShardBlockProcessorFactory_CreateBlockProcessor(t *testing.T) { func TestShardBlockProcessorFactory_IsInterfaceNil(t *testing.T) { t.Parallel() - sbpf, _ := block.NewShardBlockProcessorFactory() + sbpf := block.NewShardBlockProcessorFactory() require.False(t, sbpf.IsInterfaceNil()) } diff --git a/process/block/shardHeaderValidatorFactory.go b/process/block/shardHeaderValidatorFactory.go index 71ee455dd6d..aa0d2385aac 100644 --- a/process/block/shardHeaderValidatorFactory.go +++ b/process/block/shardHeaderValidatorFactory.go @@ -6,8 +6,8 @@ type shardHeaderValidatorFactory struct { } // NewShardHeaderValidatorFactory creates a new shard header validator factory -func NewShardHeaderValidatorFactory() (*shardHeaderValidatorFactory, error) { - return &shardHeaderValidatorFactory{}, nil +func NewShardHeaderValidatorFactory() *shardHeaderValidatorFactory { + return &shardHeaderValidatorFactory{} } // CreateHeaderValidator creates a new header validator for the chain run type normal diff --git a/process/block/shardHeaderValidatorFactory_test.go b/process/block/shardHeaderValidatorFactory_test.go index e791a252267..d4346ebc661 100644 --- a/process/block/shardHeaderValidatorFactory_test.go +++ b/process/block/shardHeaderValidatorFactory_test.go @@ -3,16 +3,16 @@ package block import ( "testing" + "github.com/stretchr/testify/require" + "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/testscommon" - "github.com/stretchr/testify/require" ) func TestNewShardHeaderValidatorFactory(t *testing.T) { t.Parallel() - shvf, err := NewShardHeaderValidatorFactory() - require.Nil(t, err) + shvf := NewShardHeaderValidatorFactory() require.NotNil(t, shvf) require.Implements(t, new(HeaderValidatorCreator), shvf) } @@ -20,7 +20,7 @@ func TestNewShardHeaderValidatorFactory(t *testing.T) { func TestShardHeaderValidatorFactory_CreateHeaderValidator(t *testing.T) { t.Parallel() - shvf, _ := NewShardHeaderValidatorFactory() + shvf := NewShardHeaderValidatorFactory() hv, err := shvf.CreateHeaderValidator(ArgsHeaderValidator{ Hasher: nil, @@ -41,6 +41,6 @@ func TestShardHeaderValidatorFactory_CreateHeaderValidator(t *testing.T) { func TestShardHeaderValidatorFactory_IsInterfaceNil(t *testing.T) { t.Parallel() - shvf, _ := NewShardHeaderValidatorFactory() + shvf := NewShardHeaderValidatorFactory() require.False(t, shvf.IsInterfaceNil()) } diff --git a/process/block/sovereignBlockProcessorFactory_test.go b/process/block/sovereignBlockProcessorFactory_test.go index 0f5029edf69..5f76754f8d2 100644 --- a/process/block/sovereignBlockProcessorFactory_test.go +++ b/process/block/sovereignBlockProcessorFactory_test.go @@ -3,12 +3,13 @@ package block_test import ( "testing" + vmcommon "github.com/multiversx/mx-chain-vm-common-go" + "github.com/stretchr/testify/require" + "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/process/block" "github.com/multiversx/mx-chain-go/process/mock" "github.com/multiversx/mx-chain-go/testscommon" - vmcommon "github.com/multiversx/mx-chain-vm-common-go" - "github.com/stretchr/testify/require" ) func TestNewSovereignBlockProcessorFactory(t *testing.T) { @@ -19,7 +20,7 @@ func TestNewSovereignBlockProcessorFactory(t *testing.T) { require.Nil(t, sbpf) require.NotNil(t, err) - shardFactory, _ := block.NewShardBlockProcessorFactory() + shardFactory := block.NewShardBlockProcessorFactory() sbpf, err = block.NewSovereignBlockProcessorFactory(shardFactory) require.NotNil(t, sbpf) @@ -30,7 +31,7 @@ func TestNewSovereignBlockProcessorFactory(t *testing.T) { func TestSovereignBlockProcessorFactory_CreateBlockProcessor(t *testing.T) { t.Parallel() - shardFactory, _ := block.NewShardBlockProcessorFactory() + shardFactory := block.NewShardBlockProcessorFactory() sbpf, _ := block.NewSovereignBlockProcessorFactory(shardFactory) funcCreateMetaArgs := func(systemVM vmcommon.VMExecutionHandler) (*block.ExtraArgsMetaBlockProcessor, error) { @@ -65,7 +66,7 @@ func TestSovereignBlockProcessorFactory_CreateBlockProcessor(t *testing.T) { func TestSovereignBlockProcessorFactory_IsInterfaceNil(t *testing.T) { t.Parallel() - shardFactory, _ := block.NewShardBlockProcessorFactory() + shardFactory := block.NewShardBlockProcessorFactory() sbpf, _ := block.NewSovereignBlockProcessorFactory(shardFactory) require.False(t, sbpf.IsInterfaceNil()) } diff --git a/process/block/sovereignChainHeaderValidatorFactory_test.go b/process/block/sovereignChainHeaderValidatorFactory_test.go index a9ed1097e30..7e19d5502d8 100644 --- a/process/block/sovereignChainHeaderValidatorFactory_test.go +++ b/process/block/sovereignChainHeaderValidatorFactory_test.go @@ -3,9 +3,10 @@ package block import ( "testing" + "github.com/stretchr/testify/require" + "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/testscommon" - "github.com/stretchr/testify/require" ) func TestNewSovereignHeaderValidatorFactory(t *testing.T) { @@ -15,7 +16,7 @@ func TestNewSovereignHeaderValidatorFactory(t *testing.T) { require.NotNil(t, err) require.Nil(t, shvf) - sf, _ := NewShardHeaderValidatorFactory() + sf := NewShardHeaderValidatorFactory() shvf, err = NewSovereignHeaderValidatorFactory(sf) require.Nil(t, err) require.NotNil(t, shvf) @@ -25,7 +26,7 @@ func TestNewSovereignHeaderValidatorFactory(t *testing.T) { func TestSovereignHeaderValidatorFactory_CreateHeaderValidator(t *testing.T) { t.Parallel() - sf, _ := NewShardHeaderValidatorFactory() + sf := NewShardHeaderValidatorFactory() shvf, _ := NewSovereignHeaderValidatorFactory(sf) hv, err := shvf.CreateHeaderValidator(ArgsHeaderValidator{ @@ -47,7 +48,7 @@ func TestSovereignHeaderValidatorFactory_CreateHeaderValidator(t *testing.T) { func TestSovereignHeaderValidatorFactory_IsInterfaceNil(t *testing.T) { t.Parallel() - sf, _ := NewShardHeaderValidatorFactory() + sf := NewShardHeaderValidatorFactory() shvf, _ := NewSovereignHeaderValidatorFactory(sf) require.False(t, shvf.IsInterfaceNil()) } diff --git a/process/coordinator/shardTransactionCoordinatorFactory.go b/process/coordinator/shardTransactionCoordinatorFactory.go index c6ab43a3b54..b7a7bf13d05 100644 --- a/process/coordinator/shardTransactionCoordinatorFactory.go +++ b/process/coordinator/shardTransactionCoordinatorFactory.go @@ -6,8 +6,8 @@ type shardTransactionCoordinatorFactory struct { } // NewShardTransactionCoordinatorFactory creates a new sovereign transaction coordinator factory -func NewShardTransactionCoordinatorFactory() (*shardTransactionCoordinatorFactory, error) { - return &shardTransactionCoordinatorFactory{}, nil +func NewShardTransactionCoordinatorFactory() *shardTransactionCoordinatorFactory { + return &shardTransactionCoordinatorFactory{} } // CreateTransactionCoordinator creates a new transaction coordinator for the chain run type normal diff --git a/process/coordinator/shardTransactionCoordinatorFactory_test.go b/process/coordinator/shardTransactionCoordinatorFactory_test.go index 9c3a3870f87..489eaac2216 100644 --- a/process/coordinator/shardTransactionCoordinatorFactory_test.go +++ b/process/coordinator/shardTransactionCoordinatorFactory_test.go @@ -9,9 +9,7 @@ import ( func TestShardTransactionCoordinatorFactory_NewShardTransactionCoordinatorFactory(t *testing.T) { t.Parallel() - tcf, err := NewShardTransactionCoordinatorFactory() - - require.Nil(t, err) + tcf := NewShardTransactionCoordinatorFactory() require.NotNil(t, tcf) require.IsType(t, new(shardTransactionCoordinatorFactory), tcf) } @@ -19,7 +17,7 @@ func TestShardTransactionCoordinatorFactory_NewShardTransactionCoordinatorFactor func TestShardTransactionCoordinatorFactory_CreateTransactionCoordinator(t *testing.T) { t.Parallel() - tcf, _ := NewShardTransactionCoordinatorFactory() + tcf := NewShardTransactionCoordinatorFactory() tc, err := tcf.CreateTransactionCoordinator(ArgTransactionCoordinator{}) require.NotNil(t, err) require.Nil(t, tc) @@ -33,6 +31,6 @@ func TestShardTransactionCoordinatorFactory_CreateTransactionCoordinator(t *test func TestShardTransactionCoordinatorFactory_IsInterfaceNil(t *testing.T) { t.Parallel() - tcf, _ := NewShardTransactionCoordinatorFactory() + tcf := NewShardTransactionCoordinatorFactory() require.False(t, tcf.IsInterfaceNil()) } diff --git a/process/coordinator/sovereignTransactionCoordinatorFactory_test.go b/process/coordinator/sovereignTransactionCoordinatorFactory_test.go index cf724c3454e..eb769d06ea1 100644 --- a/process/coordinator/sovereignTransactionCoordinatorFactory_test.go +++ b/process/coordinator/sovereignTransactionCoordinatorFactory_test.go @@ -3,8 +3,9 @@ package coordinator import ( "testing" - "github.com/multiversx/mx-chain-go/process" "github.com/stretchr/testify/require" + + "github.com/multiversx/mx-chain-go/process" ) func TestSovereignTransactionCoordinatorFactory_NewShardTransactionCoordinatorFactory(t *testing.T) { @@ -14,7 +15,7 @@ func TestSovereignTransactionCoordinatorFactory_NewShardTransactionCoordinatorFa require.Equal(t, process.ErrNilTransactionCoordinatorCreator, err) require.Nil(t, sovtcf) - stcf, _ := NewShardTransactionCoordinatorFactory() + stcf := NewShardTransactionCoordinatorFactory() sovtcf, err = NewSovereignTransactionCoordinatorFactory(stcf) require.Nil(t, err) @@ -25,7 +26,7 @@ func TestSovereignTransactionCoordinatorFactory_NewShardTransactionCoordinatorFa func TestSovereignTransactionCoordinatorFactory_CreateTransactionCoordinator(t *testing.T) { t.Parallel() - stcf, _ := NewShardTransactionCoordinatorFactory() + stcf := NewShardTransactionCoordinatorFactory() sovtcf, _ := NewSovereignTransactionCoordinatorFactory(stcf) tc, err := sovtcf.CreateTransactionCoordinator(ArgTransactionCoordinator{}) require.NotNil(t, err) @@ -40,7 +41,7 @@ func TestSovereignTransactionCoordinatorFactory_CreateTransactionCoordinator(t * func TestSovereignTransactionCoordinatorFactory_IsInterfaceNil(t *testing.T) { t.Parallel() - stcf, _ := NewShardTransactionCoordinatorFactory() + stcf := NewShardTransactionCoordinatorFactory() sovtcf, _ := NewSovereignTransactionCoordinatorFactory(stcf) require.False(t, sovtcf.IsInterfaceNil()) } diff --git a/process/factory/shard/preProcessorsContainerFactory_test.go b/process/factory/shard/preProcessorsContainerFactory_test.go index 19ff98ea42d..d22909bf7a9 100644 --- a/process/factory/shard/preProcessorsContainerFactory_test.go +++ b/process/factory/shard/preProcessorsContainerFactory_test.go @@ -4,6 +4,9 @@ import ( "fmt" "testing" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/multiversx/mx-chain-go/dataRetriever" customErrors "github.com/multiversx/mx-chain-go/errors" "github.com/multiversx/mx-chain-go/process" @@ -19,8 +22,6 @@ import ( "github.com/multiversx/mx-chain-go/testscommon/processMocks" stateMock "github.com/multiversx/mx-chain-go/testscommon/state" storageStubs "github.com/multiversx/mx-chain-go/testscommon/storage" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) func createMockPubkeyConverter() *testscommon.PubkeyConverterMock { @@ -384,7 +385,7 @@ func TestPreProcessorsContainerFactory_CreateSCRPreprocessor(t *testing.T) { t.Parallel() args := createMockPreProcessorsContainerFactoryArguments() - scrppf, _ := preprocess.NewSmartContractResultPreProcessorFactory() + scrppf := preprocess.NewSmartContractResultPreProcessorFactory() runTypeComps := processMocks.NewRunTypeComponentsStub() runTypeComps.SCResultsPreProcessorFactory, _ = preprocess.NewSovereignSmartContractResultPreProcessorFactory(scrppf) args.RunTypeComponents = runTypeComps diff --git a/process/sync/shardForkDetectorFactory.go b/process/sync/shardForkDetectorFactory.go index c9af25bf631..b5a2d121ff5 100644 --- a/process/sync/shardForkDetectorFactory.go +++ b/process/sync/shardForkDetectorFactory.go @@ -6,8 +6,8 @@ type shardForkDetectorFactory struct { } // NewShardForkDetectorFactory creates a new shard fork detector factory -func NewShardForkDetectorFactory() (*shardForkDetectorFactory, error) { - return &shardForkDetectorFactory{}, nil +func NewShardForkDetectorFactory() *shardForkDetectorFactory { + return &shardForkDetectorFactory{} } // CreateForkDetector creates a new fork detector diff --git a/process/sync/shardForkDetectorFactory_test.go b/process/sync/shardForkDetectorFactory_test.go index af540e43829..c3e38404038 100644 --- a/process/sync/shardForkDetectorFactory_test.go +++ b/process/sync/shardForkDetectorFactory_test.go @@ -3,17 +3,17 @@ package sync_test import ( "testing" + "github.com/stretchr/testify/require" + "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/process/sync" "github.com/multiversx/mx-chain-go/testscommon" - "github.com/stretchr/testify/require" ) func TestNewShardForkDetectorFactory(t *testing.T) { t.Parallel() - sfdf, err := sync.NewShardForkDetectorFactory() - require.Nil(t, err) + sfdf := sync.NewShardForkDetectorFactory() require.NotNil(t, sfdf) require.Implements(t, new(sync.ForkDetectorCreator), sfdf) } @@ -21,7 +21,7 @@ func TestNewShardForkDetectorFactory(t *testing.T) { func TestShardForkDetectorFactory_CreateForkDetector(t *testing.T) { t.Parallel() - sfdf, _ := sync.NewShardForkDetectorFactory() + sfdf := sync.NewShardForkDetectorFactory() args := sync.ForkDetectorFactoryArgs{ RoundHandler: &testscommon.RoundHandlerMock{}, HeaderBlackList: &testscommon.TimeCacheStub{}, @@ -38,6 +38,6 @@ func TestShardForkDetectorFactory_CreateForkDetector(t *testing.T) { func TestShardForkDetectorFactory_IsInterfaceNil(t *testing.T) { t.Parallel() - sfdf, _ := sync.NewShardForkDetectorFactory() + sfdf := sync.NewShardForkDetectorFactory() require.False(t, sfdf.IsInterfaceNil()) } diff --git a/process/sync/sovereignForkDetectorFactory_test.go b/process/sync/sovereignForkDetectorFactory_test.go index 81cc425ed0d..92b6a701caa 100644 --- a/process/sync/sovereignForkDetectorFactory_test.go +++ b/process/sync/sovereignForkDetectorFactory_test.go @@ -3,10 +3,11 @@ package sync_test import ( "testing" + "github.com/stretchr/testify/require" + "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/process/sync" "github.com/multiversx/mx-chain-go/testscommon" - "github.com/stretchr/testify/require" ) func TestNewSovereignForkDetectorFactory(t *testing.T) { @@ -16,7 +17,7 @@ func TestNewSovereignForkDetectorFactory(t *testing.T) { require.Equal(t, process.ErrNilForkDetectorCreator, err) require.Nil(t, sfdf) - sf, _ := sync.NewShardForkDetectorFactory() + sf := sync.NewShardForkDetectorFactory() sfdf, err = sync.NewSovereignForkDetectorFactory(sf) require.Nil(t, err) require.NotNil(t, sfdf) @@ -26,7 +27,7 @@ func TestNewSovereignForkDetectorFactory(t *testing.T) { func TestSovereignForkDetectorFactory_CreateForkDetector(t *testing.T) { t.Parallel() - sf, _ := sync.NewShardForkDetectorFactory() + sf := sync.NewShardForkDetectorFactory() sfdf, _ := sync.NewSovereignForkDetectorFactory(sf) forkDetector, err := sfdf.CreateForkDetector(sync.ForkDetectorFactoryArgs{}) @@ -48,7 +49,7 @@ func TestSovereignForkDetectorFactory_CreateForkDetector(t *testing.T) { func TestSovereignForkDetectorFactory_IsInterfaceNil(t *testing.T) { t.Parallel() - sf, _ := sync.NewShardForkDetectorFactory() + sf := sync.NewShardForkDetectorFactory() sfdf, _ := sync.NewSovereignForkDetectorFactory(sf) require.False(t, sfdf.IsInterfaceNil()) } diff --git a/process/track/shardBlockTrackerFactory.go b/process/track/shardBlockTrackerFactory.go index 82c1a1bbe66..e823f3852cf 100644 --- a/process/track/shardBlockTrackerFactory.go +++ b/process/track/shardBlockTrackerFactory.go @@ -6,8 +6,8 @@ type shardBlockTrackerFactory struct { } // NewShardBlockTrackerFactory creates a new shard block tracker factory -func NewShardBlockTrackerFactory() (*shardBlockTrackerFactory, error) { - return &shardBlockTrackerFactory{}, nil +func NewShardBlockTrackerFactory() *shardBlockTrackerFactory { + return &shardBlockTrackerFactory{} } // CreateBlockTracker creates a new block tracker for shard chain diff --git a/process/track/shardBlockTrackerFactory_test.go b/process/track/shardBlockTrackerFactory_test.go index 494c21e7d06..29c4ce573c5 100644 --- a/process/track/shardBlockTrackerFactory_test.go +++ b/process/track/shardBlockTrackerFactory_test.go @@ -3,16 +3,16 @@ package track_test import ( "testing" + "github.com/stretchr/testify/require" + "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/process/track" - "github.com/stretchr/testify/require" ) func TestNewShardBlockTrackerFactory(t *testing.T) { t.Parallel() - sbtcf, err := track.NewShardBlockTrackerFactory() - require.Nil(t, err) + sbtcf := track.NewShardBlockTrackerFactory() require.NotNil(t, sbtcf) require.Implements(t, new(track.BlockTrackerCreator), sbtcf) } @@ -20,7 +20,7 @@ func TestNewShardBlockTrackerFactory(t *testing.T) { func TestShardBlockTrackerFactory_CreateBlockTracker(t *testing.T) { t.Parallel() - sbtcf, _ := track.NewShardBlockTrackerFactory() + sbtcf := track.NewShardBlockTrackerFactory() bt, err := sbtcf.CreateBlockTracker(track.ArgShardTracker{}) require.NotNil(t, err) @@ -36,6 +36,6 @@ func TestShardBlockTrackerFactory_CreateBlockTracker(t *testing.T) { func TestShardBlockTrackerFactory_IsInterfaceNil(t *testing.T) { t.Parallel() - sbtcf, _ := track.NewShardBlockTrackerFactory() + sbtcf := track.NewShardBlockTrackerFactory() require.False(t, sbtcf.IsInterfaceNil()) } diff --git a/process/track/sovereignBlockTrackerFactory_test.go b/process/track/sovereignBlockTrackerFactory_test.go index 12cab7bae10..0bd158bc273 100644 --- a/process/track/sovereignBlockTrackerFactory_test.go +++ b/process/track/sovereignBlockTrackerFactory_test.go @@ -3,10 +3,11 @@ package track_test import ( "testing" + "github.com/stretchr/testify/require" + "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/process/track" "github.com/multiversx/mx-chain-go/testscommon" - "github.com/stretchr/testify/require" ) func TestNewSovereignBlockTrackerFactory(t *testing.T) { @@ -16,7 +17,7 @@ func TestNewSovereignBlockTrackerFactory(t *testing.T) { require.NotNil(t, err) require.Nil(t, sbtcf) - sf, _ := track.NewShardBlockTrackerFactory() + sf := track.NewShardBlockTrackerFactory() sbtcf, err = track.NewSovereignBlockTrackerFactory(sf) require.Nil(t, err) require.NotNil(t, sbtcf) @@ -26,7 +27,7 @@ func TestNewSovereignBlockTrackerFactory(t *testing.T) { func TestSovereignBlockTrackerFactory_CreateBlockTracker(t *testing.T) { t.Parallel() - sf, _ := track.NewShardBlockTrackerFactory() + sf := track.NewShardBlockTrackerFactory() sbtcf, _ := track.NewSovereignBlockTrackerFactory(sf) bt, err := sbtcf.CreateBlockTracker(track.ArgShardTracker{}) @@ -44,7 +45,7 @@ func TestSovereignBlockTrackerFactory_CreateBlockTracker(t *testing.T) { func TestSovereignBlockTrackerFactory_IsInterfaceNil(t *testing.T) { t.Parallel() - sf, _ := track.NewShardBlockTrackerFactory() + sf := track.NewShardBlockTrackerFactory() sbtcf, _ := track.NewSovereignBlockTrackerFactory(sf) require.False(t, sbtcf.IsInterfaceNil()) diff --git a/testscommon/genesisMocks/runTypeComponentsStub.go b/testscommon/genesisMocks/runTypeComponentsStub.go index 907c1038129..a88f1ab0fe7 100644 --- a/testscommon/genesisMocks/runTypeComponentsStub.go +++ b/testscommon/genesisMocks/runTypeComponentsStub.go @@ -45,29 +45,25 @@ type RunTypeComponentsStub struct { // NewRunTypeComponentsStub - func NewRunTypeComponentsStub() *RunTypeComponentsStub { - transactionCoordinatorFactory, _ := coordinator.NewShardTransactionCoordinatorFactory() - scResultsPreProcessorCreator, _ := preprocess.NewSmartContractResultPreProcessorFactory() - scProcessorCreator := processProxy.NewSCProcessProxyFactory() accountsCreator, _ := factory.NewAccountCreator(factory.ArgsAccountCreator{ Hasher: &hashingMocks.HasherMock{}, Marshaller: &marshallerMock.MarshalizerMock{}, EnableEpochsHandler: &enableEpochsHandlerMock.EnableEpochsHandlerStub{}, }) - vmContainerShard := factoryVm.NewVmContainerShardFactory() vmContainerMeta, _ := factoryVm.NewVmContainerMetaFactory(systemSmartContracts.NewVMContextCreator()) hdrFactory, _ := block.NewShardHeaderFactory(createHeaderVersionHandler("*")) return &RunTypeComponentsStub{ BlockChainHookHandlerFactory: hooks.NewBlockChainHookFactory(), - TransactionCoordinatorFactory: transactionCoordinatorFactory, - SCResultsPreProcessorFactory: scResultsPreProcessorCreator, - SCProcessorFactory: scProcessorCreator, + TransactionCoordinatorFactory: coordinator.NewShardTransactionCoordinatorFactory(), + SCResultsPreProcessorFactory: preprocess.NewSmartContractResultPreProcessorFactory(), + SCProcessorFactory: processProxy.NewSCProcessProxyFactory(), AccountParser: &AccountsParserStub{}, AccountCreator: accountsCreator, VMContextCreatorHandler: systemSmartContracts.NewVMContextCreator(), ShardCoordinatorFactory: sharding.NewMultiShardCoordinatorFactory(), TxPreProcessorFactory: preprocess.NewTxPreProcessorCreator(), - VmContainerShardFactory: vmContainerShard, + VmContainerShardFactory: factoryVm.NewVmContainerShardFactory(), VmContainerMetaFactory: vmContainerMeta, PreProcessorsContainerFactoryCreatorField: shard.NewPreProcessorContainerFactoryCreator(), VersionedHeaderFactoryField: hdrFactory, diff --git a/testscommon/processMocks/runTypeComponentsStub.go b/testscommon/processMocks/runTypeComponentsStub.go index 44e47cfe420..64bcfde28a4 100644 --- a/testscommon/processMocks/runTypeComponentsStub.go +++ b/testscommon/processMocks/runTypeComponentsStub.go @@ -12,9 +12,8 @@ type RunTypeComponentsStub struct { // NewRunTypeComponentsStub - func NewRunTypeComponentsStub() *RunTypeComponentsStub { - scrPreProcFactory, _ := preprocess.NewSmartContractResultPreProcessorFactory() return &RunTypeComponentsStub{ - SCResultsPreProcessorFactory: scrPreProcFactory, + SCResultsPreProcessorFactory: preprocess.NewSmartContractResultPreProcessorFactory(), TxPreProcessorFactory: preprocess.NewTxPreProcessorCreator(), } } From 593029b0c0b7400e786617b059fc13cadf1a23aa Mon Sep 17 00:00:00 2001 From: MariusC Date: Thu, 12 Dec 2024 14:57:56 +0200 Subject: [PATCH 03/16] FEAT: Remove return error for factories pt 3 + start on sovereign --- .../sovereignEpochStartBootstrapperFactory.go | 15 +------ ...reignEpochStartBootstrapperFactory_test.go | 44 ++++--------------- factory/runType/runTypeComponents.go | 22 ++-------- factory/runType/sovereignRunTypeComponents.go | 19 ++------ ...alidatorStatisticsProcessorFactory_test.go | 9 ++-- .../validatorStatisticsProcessorFactory.go | 4 +- ...alidatorStatisticsProcessorFactory_test.go | 10 ++--- .../hooks/sovereignBlockChainHookFactory.go | 13 +----- .../sovereignBlockChainHookFactory_test.go | 35 +++------------ .../shardAdditionalStorageServiceFactory.go | 4 +- ...ardAdditionalStorageServiceFactory_test.go | 17 +++---- .../genesisMocks/runTypeComponentsStub.go | 4 +- 12 files changed, 45 insertions(+), 151 deletions(-) diff --git a/epochStart/bootstrap/sovereignEpochStartBootstrapperFactory.go b/epochStart/bootstrap/sovereignEpochStartBootstrapperFactory.go index 6246d42e6eb..3b9c29a2ff2 100644 --- a/epochStart/bootstrap/sovereignEpochStartBootstrapperFactory.go +++ b/epochStart/bootstrap/sovereignEpochStartBootstrapperFactory.go @@ -1,23 +1,12 @@ package bootstrap -import ( - "github.com/multiversx/mx-chain-core-go/core/check" - "github.com/multiversx/mx-chain-go/errors" -) - // sovereignEpochStartBootstrapperFactory defines the epoch start bootstrapper factory for chain run sovereign type sovereignEpochStartBootstrapperFactory struct { - epochStartBootstrapperFactory EpochStartBootstrapperCreator } // NewSovereignEpochStartBootstrapperFactory creates a new epoch start bootstrapper factory for chain run sovereign -func NewSovereignEpochStartBootstrapperFactory(esbf EpochStartBootstrapperCreator) (EpochStartBootstrapperCreator, error) { - if check.IfNil(esbf) { - return nil, errors.ErrNilEpochStartBootstrapperFactory - } - return &sovereignEpochStartBootstrapperFactory{ - epochStartBootstrapperFactory: esbf, - }, nil +func NewSovereignEpochStartBootstrapperFactory() EpochStartBootstrapperCreator { + return &sovereignEpochStartBootstrapperFactory{} } // CreateEpochStartBootstrapper creates a new epoch start bootstrapper for sovereign chain operations diff --git a/epochStart/bootstrap/sovereignEpochStartBootstrapperFactory_test.go b/epochStart/bootstrap/sovereignEpochStartBootstrapperFactory_test.go index b6abd0fd0a4..ae55e3f4ba6 100644 --- a/epochStart/bootstrap/sovereignEpochStartBootstrapperFactory_test.go +++ b/epochStart/bootstrap/sovereignEpochStartBootstrapperFactory_test.go @@ -1,48 +1,35 @@ package bootstrap import ( + "fmt" "testing" - "github.com/multiversx/mx-chain-go/config" - "github.com/multiversx/mx-chain-go/errors" - "github.com/multiversx/mx-chain-core-go/data/endProcess" "github.com/stretchr/testify/require" + + "github.com/multiversx/mx-chain-go/config" ) func TestNewSovereignEpochStartBootstrapperFactory(t *testing.T) { t.Parallel() - sebf, err := NewSovereignEpochStartBootstrapperFactory(nil) - - require.Nil(t, sebf) - require.Equal(t, errors.ErrNilEpochStartBootstrapperFactory, err) - - esbf := NewEpochStartBootstrapperFactory() - sebf, err = NewSovereignEpochStartBootstrapperFactory(esbf) - - require.Nil(t, err) - require.NotNil(t, sebf) + sebf := NewSovereignEpochStartBootstrapperFactory() + require.False(t, sebf.IsInterfaceNil()) } func TestSovereignEpochStartBootstrapperFactory_CreateEpochStartBootstrapper(t *testing.T) { t.Parallel() - esbf := NewEpochStartBootstrapperFactory() - sebf, _ := NewSovereignEpochStartBootstrapperFactory(esbf) - + sebf := NewSovereignEpochStartBootstrapperFactory() seb, err := sebf.CreateEpochStartBootstrapper(getDefaultArgs()) - require.Nil(t, err) - require.NotNil(t, seb) + require.Equal(t, "*bootstrap.sovereignChainEpochStartBootstrap", fmt.Sprintf("%T", seb)) } func TestSovereignEpochStartBootstrapperFactory_CreateStorageEpochStartBootstrapper(t *testing.T) { t.Parallel() - esbf := NewEpochStartBootstrapperFactory() - sebf, _ := NewSovereignEpochStartBootstrapperFactory(esbf) - + sebf := NewSovereignEpochStartBootstrapperFactory() arg := ArgsStorageEpochStartBootstrap{ ArgsEpochStartBootstrap: getDefaultArgs(), ImportDbConfig: config.ImportDbConfig{}, @@ -50,20 +37,7 @@ func TestSovereignEpochStartBootstrapperFactory_CreateStorageEpochStartBootstrap TimeToWaitForRequestedData: 1, } esb, err := sebf.CreateStorageEpochStartBootstrapper(arg) - require.Nil(t, err) - require.NotNil(t, esb) - -} - -func TestSovereignEpochStartBootstrapperFactory_IsInterfaceNil(t *testing.T) { - t.Parallel() - - esbf := NewEpochStartBootstrapperFactory() - sebf, _ := NewSovereignEpochStartBootstrapperFactory(esbf) - - require.False(t, sebf.IsInterfaceNil()) + require.Equal(t, "*bootstrap.storageEpochStartBootstrap", fmt.Sprintf("%T", esb)) - sebf = (*sovereignEpochStartBootstrapperFactory)(nil) - require.True(t, sebf.IsInterfaceNil()) } diff --git a/factory/runType/runTypeComponents.go b/factory/runType/runTypeComponents.go index a60a305c5d1..b63df6874bc 100644 --- a/factory/runType/runTypeComponents.go +++ b/factory/runType/runTypeComponents.go @@ -158,26 +158,12 @@ func NewRunTypeComponentsFactory(args ArgsRunTypeComponents) (*runTypeComponents // Create creates the runType components func (rcf *runTypeComponentsFactory) Create() (*runTypeComponents, error) { - validatorStatisticsProcessorFactory, err := peer.NewValidatorStatisticsProcessorFactory() - if err != nil { - return nil, fmt.Errorf("runTypeComponentsFactory - NewShardBlockProcessorFactory failed: %w", err) - } - - additionalStorageServiceCreator, err := storageFactory.NewShardAdditionalStorageServiceFactory() - if err != nil { - return nil, fmt.Errorf("runTypeComponentsFactory - NewShardAdditionalStorageServiceFactory failed: %w", err) - } - - scProcessorCreator := processProxy.NewSCProcessProxyFactory() - vmContextCreator := systemSmartContracts.NewVMContextCreator() vmContainerMetaCreator, err := factoryVm.NewVmContainerMetaFactory(vmContextCreator) if err != nil { return nil, fmt.Errorf("runTypeComponentsFactory - NewVmContainerMetaFactory failed: %w", err) } - vmContainerShardCreator := factoryVm.NewVmContainerShardFactory() - totalSupply, ok := big.NewInt(0).SetString(rcf.configs.EconomicsConfig.GlobalSettings.GenesisTotalSupply, 10) if !ok { return nil, fmt.Errorf("can not parse total suply from economics.toml, %s is not a valid value", @@ -233,13 +219,13 @@ func (rcf *runTypeComponentsFactory) Create() (*runTypeComponents, error) { headerValidatorCreator: block.NewShardHeaderValidatorFactory(), scheduledTxsExecutionCreator: preprocess.NewShardScheduledTxsExecutionFactory(), transactionCoordinatorCreator: coordinator.NewShardTransactionCoordinatorFactory(), - validatorStatisticsProcessorCreator: validatorStatisticsProcessorFactory, - additionalStorageServiceCreator: additionalStorageServiceCreator, - scProcessorCreator: scProcessorCreator, + validatorStatisticsProcessorCreator: peer.NewValidatorStatisticsProcessorFactory(), + additionalStorageServiceCreator: storageFactory.NewShardAdditionalStorageServiceFactory(), + scProcessorCreator: processProxy.NewSCProcessProxyFactory(), scResultPreProcessorCreator: preprocess.NewSmartContractResultPreProcessorFactory(), consensusModel: consensus.ConsensusModelV1, vmContainerMetaFactory: vmContainerMetaCreator, - vmContainerShardFactory: vmContainerShardCreator, + vmContainerShardFactory: factoryVm.NewVmContainerShardFactory(), accountsParser: accountsParser, accountsCreator: accountsCreator, vmContextCreator: vmContextCreator, diff --git a/factory/runType/sovereignRunTypeComponents.go b/factory/runType/sovereignRunTypeComponents.go index a5d6d72f02b..3da11060cd5 100644 --- a/factory/runType/sovereignRunTypeComponents.go +++ b/factory/runType/sovereignRunTypeComponents.go @@ -93,19 +93,6 @@ func (rcf *sovereignRunTypeComponentsFactory) Create() (*runTypeComponents, erro if err != nil { return nil, err } - - sovBlockChainHookHandlerFactory, err := hooks.NewSovereignBlockChainHookFactory(rtc.blockChainHookHandlerCreator) - if err != nil { - return nil, fmt.Errorf("sovereignRunTypeComponentsFactory - NewSovereignBlockChainHookFactory failed: %w", err) - } - - epochStartBootstrapperFactory, err := bootstrap.NewSovereignEpochStartBootstrapperFactory(rtc.epochStartBootstrapperCreator) - if err != nil { - return nil, fmt.Errorf("sovereignRunTypeComponentsFactory - NewSovereignEpochStartBootstrapperFactory failed: %w", err) - } - - bootstrapperFromStorageFactory := storageBootstrap.NewSovereignShardStorageBootstrapperFactory() - bootstrapperFactory, err := storageBootstrap.NewSovereignShardBootstrapFactory(rtc.bootstrapperCreator) if err != nil { return nil, fmt.Errorf("sovereignRunTypeComponentsFactory - NewSovereignShardBootstrapFactory failed: %w", err) @@ -234,9 +221,9 @@ func (rcf *sovereignRunTypeComponentsFactory) Create() (*runTypeComponents, erro } return &runTypeComponents{ - blockChainHookHandlerCreator: sovBlockChainHookHandlerFactory, - epochStartBootstrapperCreator: epochStartBootstrapperFactory, - bootstrapperFromStorageCreator: bootstrapperFromStorageFactory, + blockChainHookHandlerCreator: hooks.NewSovereignBlockChainHookFactory(), + epochStartBootstrapperCreator: bootstrap.NewSovereignEpochStartBootstrapperFactory(), + bootstrapperFromStorageCreator: storageBootstrap.NewSovereignShardStorageBootstrapperFactory(), bootstrapperCreator: bootstrapperFactory, blockProcessorCreator: blockProcessorFactory, forkDetectorCreator: forkDetectorFactory, diff --git a/process/peer/sovereignValidatorStatisticsProcessorFactory_test.go b/process/peer/sovereignValidatorStatisticsProcessorFactory_test.go index db670ecf6c0..c73a13a5511 100644 --- a/process/peer/sovereignValidatorStatisticsProcessorFactory_test.go +++ b/process/peer/sovereignValidatorStatisticsProcessorFactory_test.go @@ -3,9 +3,10 @@ package peer_test import ( "testing" + "github.com/stretchr/testify/require" + "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/process/peer" - "github.com/stretchr/testify/require" ) func TestNewSovereignValidatorStatisticsProcessorFactory(t *testing.T) { @@ -15,7 +16,7 @@ func TestNewSovereignValidatorStatisticsProcessorFactory(t *testing.T) { require.NotNil(t, err) require.Nil(t, vspf) - vs, _ := peer.NewValidatorStatisticsProcessorFactory() + vs := peer.NewValidatorStatisticsProcessorFactory() vspf, err = peer.NewSovereignValidatorStatisticsProcessorFactory(vs) require.Nil(t, err) require.NotNil(t, vspf) @@ -25,7 +26,7 @@ func TestNewSovereignValidatorStatisticsProcessorFactory(t *testing.T) { func TestSovereignValidatorStatisticsProcessorFactory_CreateValidatorStatisticsProcessor(t *testing.T) { t.Parallel() - vs, _ := peer.NewValidatorStatisticsProcessorFactory() + vs := peer.NewValidatorStatisticsProcessorFactory() vspf, _ := peer.NewSovereignValidatorStatisticsProcessorFactory(vs) vsp, err := vspf.CreateValidatorStatisticsProcessor(peer.ArgValidatorStatisticsProcessor{}) @@ -41,7 +42,7 @@ func TestSovereignValidatorStatisticsProcessorFactory_CreateValidatorStatisticsP func TestSovereignValidatorStatisticsProcessorFactory_IsInterfaceNil(t *testing.T) { t.Parallel() - vs, _ := peer.NewValidatorStatisticsProcessorFactory() + vs := peer.NewValidatorStatisticsProcessorFactory() vspf, _ := peer.NewSovereignValidatorStatisticsProcessorFactory(vs) require.False(t, vspf.IsInterfaceNil()) } diff --git a/process/peer/validatorStatisticsProcessorFactory.go b/process/peer/validatorStatisticsProcessorFactory.go index db200a186a9..bd5436be7a2 100644 --- a/process/peer/validatorStatisticsProcessorFactory.go +++ b/process/peer/validatorStatisticsProcessorFactory.go @@ -6,8 +6,8 @@ type validatorStatisticsProcessorFactory struct { } // NewValidatorStatisticsProcessorFactory creates a new validator statistics processor factory for normal chain -func NewValidatorStatisticsProcessorFactory() (*validatorStatisticsProcessorFactory, error) { - return &validatorStatisticsProcessorFactory{}, nil +func NewValidatorStatisticsProcessorFactory() *validatorStatisticsProcessorFactory { + return &validatorStatisticsProcessorFactory{} } // CreateValidatorStatisticsProcessor creates a new validator statistics processor diff --git a/process/peer/validatorStatisticsProcessorFactory_test.go b/process/peer/validatorStatisticsProcessorFactory_test.go index 3e9d64510cb..8613830f193 100644 --- a/process/peer/validatorStatisticsProcessorFactory_test.go +++ b/process/peer/validatorStatisticsProcessorFactory_test.go @@ -3,16 +3,16 @@ package peer_test import ( "testing" + "github.com/stretchr/testify/require" + "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/process/peer" - "github.com/stretchr/testify/require" ) func TestNewValidatorStatisticsProcessorFactory(t *testing.T) { t.Parallel() - vspf, err := peer.NewValidatorStatisticsProcessorFactory() - require.Nil(t, err) + vspf := peer.NewValidatorStatisticsProcessorFactory() require.NotNil(t, vspf) require.Implements(t, new(peer.ValidatorStatisticsProcessorCreator), vspf) } @@ -20,7 +20,7 @@ func TestNewValidatorStatisticsProcessorFactory(t *testing.T) { func TestValidatorStatisticsProcessorFactory_CreateValidatorStatisticsProcessor(t *testing.T) { t.Parallel() - vspf, _ := peer.NewValidatorStatisticsProcessorFactory() + vspf := peer.NewValidatorStatisticsProcessorFactory() vsp, err := vspf.CreateValidatorStatisticsProcessor(peer.ArgValidatorStatisticsProcessor{}) require.NotNil(t, err) @@ -35,6 +35,6 @@ func TestValidatorStatisticsProcessorFactory_CreateValidatorStatisticsProcessor( func TestValidatorStatisticsProcessorFactory_IsInterfaceNil(t *testing.T) { t.Parallel() - vspf, _ := peer.NewValidatorStatisticsProcessorFactory() + vspf := peer.NewValidatorStatisticsProcessorFactory() require.False(t, vspf.IsInterfaceNil()) } diff --git a/process/smartContract/hooks/sovereignBlockChainHookFactory.go b/process/smartContract/hooks/sovereignBlockChainHookFactory.go index b122b5ef121..dd6e58bba9a 100644 --- a/process/smartContract/hooks/sovereignBlockChainHookFactory.go +++ b/process/smartContract/hooks/sovereignBlockChainHookFactory.go @@ -1,25 +1,16 @@ package hooks import ( - "github.com/multiversx/mx-chain-core-go/core/check" - - customErrors "github.com/multiversx/mx-chain-go/errors" "github.com/multiversx/mx-chain-go/process" ) // sovereignBlockChainHookFactory - factory for blockchain hook chain run type sovereign type sovereignBlockChainHookFactory struct { - blockChainHookFactory BlockChainHookHandlerCreator } // NewSovereignBlockChainHookFactory creates a new instance of sovereignBlockChainHookFactory -func NewSovereignBlockChainHookFactory(blockChainHookFactory BlockChainHookHandlerCreator) (BlockChainHookHandlerCreator, error) { - if check.IfNil(blockChainHookFactory) { - return nil, customErrors.ErrNilBlockChainHookFactory - } - return &sovereignBlockChainHookFactory{ - blockChainHookFactory: blockChainHookFactory, - }, nil +func NewSovereignBlockChainHookFactory() BlockChainHookHandlerCreator { + return &sovereignBlockChainHookFactory{} } // CreateBlockChainHookHandler creates a blockchain hook based on the chain run type sovereign diff --git a/process/smartContract/hooks/sovereignBlockChainHookFactory_test.go b/process/smartContract/hooks/sovereignBlockChainHookFactory_test.go index dad589f4871..be35c8a6a1a 100644 --- a/process/smartContract/hooks/sovereignBlockChainHookFactory_test.go +++ b/process/smartContract/hooks/sovereignBlockChainHookFactory_test.go @@ -1,53 +1,28 @@ package hooks import ( + "fmt" "testing" "github.com/stretchr/testify/require" - - "github.com/multiversx/mx-chain-go/errors" ) func TestNewSovereignBlockChainHookFactory(t *testing.T) { t.Parallel() - factory, err := NewSovereignBlockChainHookFactory(nil) - - require.Nil(t, factory) - require.Equal(t, errors.ErrNilBlockChainHookFactory, err) - - baseFactory := NewBlockChainHookFactory() - factory, err = NewSovereignBlockChainHookFactory(baseFactory) - - require.Nil(t, err) - require.NotNil(t, factory) + factory := NewSovereignBlockChainHookFactory() + require.False(t, factory.IsInterfaceNil()) } func TestSovereignBlockChainHookFactory_CreateBlockChainHook(t *testing.T) { t.Parallel() - baseFactory := NewBlockChainHookFactory() - factory, _ := NewSovereignBlockChainHookFactory(baseFactory) - + factory := NewSovereignBlockChainHookFactory() bhh, err := factory.CreateBlockChainHookHandler(ArgBlockChainHook{}) - require.Nil(t, bhh) require.NotNil(t, err) bhh, err = factory.CreateBlockChainHookHandler(getDefaultArgs()) - require.Nil(t, err) - require.NotNil(t, bhh) -} - -func TestSovereignBlockChainHookFactory_IsInterfaceNil(t *testing.T) { - t.Parallel() - - baseFactory := NewBlockChainHookFactory() - factory, _ := NewSovereignBlockChainHookFactory(baseFactory) - - require.False(t, factory.IsInterfaceNil()) - - factory = (*sovereignBlockChainHookFactory)(nil) - require.True(t, factory.IsInterfaceNil()) + require.Equal(t, "*hooks.sovereignBlockChainHook", fmt.Sprintf("%T", bhh)) } diff --git a/storage/factory/shardAdditionalStorageServiceFactory.go b/storage/factory/shardAdditionalStorageServiceFactory.go index 5efd37ce581..e96449df54d 100644 --- a/storage/factory/shardAdditionalStorageServiceFactory.go +++ b/storage/factory/shardAdditionalStorageServiceFactory.go @@ -6,8 +6,8 @@ type shardAdditionalStorageServiceFactory struct { } // NewShardAdditionalStorageServiceFactory creates a new instance of shardAdditionalStorageServiceFactory -func NewShardAdditionalStorageServiceFactory() (*shardAdditionalStorageServiceFactory, error) { - return &shardAdditionalStorageServiceFactory{}, nil +func NewShardAdditionalStorageServiceFactory() *shardAdditionalStorageServiceFactory { + return &shardAdditionalStorageServiceFactory{} } // CreateAdditionalStorageUnits does nothing diff --git a/storage/factory/shardAdditionalStorageServiceFactory_test.go b/storage/factory/shardAdditionalStorageServiceFactory_test.go index 6a22a2a24f3..5306ed39432 100644 --- a/storage/factory/shardAdditionalStorageServiceFactory_test.go +++ b/storage/factory/shardAdditionalStorageServiceFactory_test.go @@ -3,29 +3,22 @@ package factory_test import ( "testing" - "github.com/multiversx/mx-chain-go/storage/factory" "github.com/stretchr/testify/require" + + "github.com/multiversx/mx-chain-go/storage/factory" ) func TestNewShardAdditionalStorageServiceFactory(t *testing.T) { t.Parallel() - f, err := factory.NewShardAdditionalStorageServiceFactory() - require.NotNil(t, f) - require.NoError(t, err) + f := factory.NewShardAdditionalStorageServiceFactory() + require.False(t, f.IsInterfaceNil()) } func TestShardAdditionalStorageServiceFactory_CreateAdditionalStorageUnits(t *testing.T) { t.Parallel() - f, _ := factory.NewShardAdditionalStorageServiceFactory() + f := factory.NewShardAdditionalStorageServiceFactory() err := f.CreateAdditionalStorageUnits(nil, nil, "") require.NoError(t, err) } - -func TestShardAdditionalStorageServiceFactory_IsInterfaceNil(t *testing.T) { - t.Parallel() - - f, _ := factory.NewShardAdditionalStorageServiceFactory() - require.False(t, f.IsInterfaceNil()) -} diff --git a/testscommon/genesisMocks/runTypeComponentsStub.go b/testscommon/genesisMocks/runTypeComponentsStub.go index a88f1ab0fe7..b90aad4c87c 100644 --- a/testscommon/genesisMocks/runTypeComponentsStub.go +++ b/testscommon/genesisMocks/runTypeComponentsStub.go @@ -73,8 +73,6 @@ func NewRunTypeComponentsStub() *RunTypeComponentsStub { // NewSovereignRunTypeComponentsStub - func NewSovereignRunTypeComponentsStub() *RunTypeComponentsStub { runTypeComponents := NewRunTypeComponentsStub() - - blockChainHookHandlerFactory, _ := hooks.NewSovereignBlockChainHookFactory(runTypeComponents.BlockChainHookHandlerFactory) transactionCoordinatorFactory, _ := coordinator.NewSovereignTransactionCoordinatorFactory(runTypeComponents.TransactionCoordinatorFactory) scResultsPreProcessorCreator, _ := preprocess.NewSovereignSmartContractResultPreProcessorFactory(runTypeComponents.SCResultsPreProcessorFactory) scProcessorCreator, _ := processorV2.NewSovereignSCProcessFactory(runTypeComponents.SCProcessorFactory) @@ -94,7 +92,7 @@ func NewSovereignRunTypeComponentsStub() *RunTypeComponentsStub { sovHdrFactory, _ := block.NewSovereignShardHeaderFactory(createHeaderVersionHandler("S1")) return &RunTypeComponentsStub{ - BlockChainHookHandlerFactory: blockChainHookHandlerFactory, + BlockChainHookHandlerFactory: hooks.NewSovereignBlockChainHookFactory(), TransactionCoordinatorFactory: transactionCoordinatorFactory, SCResultsPreProcessorFactory: scResultsPreProcessorCreator, SCProcessorFactory: scProcessorCreator, From 65ed7ae809deafb69c9b20172c757df4bd7db846 Mon Sep 17 00:00:00 2001 From: MariusC Date: Fri, 13 Dec 2024 12:11:16 +0200 Subject: [PATCH 04/16] FEAT: Remove return error for factories pt 4 on sovereign --- factory/runType/sovereignRunTypeComponents.go | 13 ++----- .../sovereignScheduledTxsExecutionFactory.go | 4 +-- ...ereignScheduledTxsExecutionFactory_test.go | 19 +++-------- .../sovereignShardBootstrapFactory.go | 12 ++----- .../sovereignShardBootstrapFactory_test.go | 34 +++---------------- 5 files changed, 16 insertions(+), 66 deletions(-) diff --git a/factory/runType/sovereignRunTypeComponents.go b/factory/runType/sovereignRunTypeComponents.go index 3da11060cd5..ea2cd0d23ec 100644 --- a/factory/runType/sovereignRunTypeComponents.go +++ b/factory/runType/sovereignRunTypeComponents.go @@ -93,10 +93,6 @@ func (rcf *sovereignRunTypeComponentsFactory) Create() (*runTypeComponents, erro if err != nil { return nil, err } - bootstrapperFactory, err := storageBootstrap.NewSovereignShardBootstrapFactory(rtc.bootstrapperCreator) - if err != nil { - return nil, fmt.Errorf("sovereignRunTypeComponentsFactory - NewSovereignShardBootstrapFactory failed: %w", err) - } blockProcessorFactory, err := block.NewSovereignBlockProcessorFactory(rtc.blockProcessorCreator) if err != nil { @@ -123,11 +119,6 @@ func (rcf *sovereignRunTypeComponentsFactory) Create() (*runTypeComponents, erro return nil, fmt.Errorf("sovereignRunTypeComponentsFactory - NewSovereignHeaderValidatorFactory failed: %w", err) } - scheduledTxsExecutionFactory, err := preprocess.NewSovereignScheduledTxsExecutionFactory() - if err != nil { - return nil, fmt.Errorf("sovereignRunTypeComponentsFactory - NewSovereignScheduledTxsExecutionFactory failed: %w", err) - } - transactionCoordinatorFactory, err := coordinator.NewSovereignTransactionCoordinatorFactory(rtc.transactionCoordinatorCreator) if err != nil { return nil, fmt.Errorf("sovereignRunTypeComponentsFactory - NewSovereignTransactionCoordinatorFactory failed: %w", err) @@ -224,13 +215,13 @@ func (rcf *sovereignRunTypeComponentsFactory) Create() (*runTypeComponents, erro blockChainHookHandlerCreator: hooks.NewSovereignBlockChainHookFactory(), epochStartBootstrapperCreator: bootstrap.NewSovereignEpochStartBootstrapperFactory(), bootstrapperFromStorageCreator: storageBootstrap.NewSovereignShardStorageBootstrapperFactory(), - bootstrapperCreator: bootstrapperFactory, + bootstrapperCreator: storageBootstrap.NewSovereignShardBootstrapFactory(), blockProcessorCreator: blockProcessorFactory, forkDetectorCreator: forkDetectorFactory, blockTrackerCreator: blockTrackerFactory, requestHandlerCreator: requestHandlerFactory, headerValidatorCreator: headerValidatorFactory, - scheduledTxsExecutionCreator: scheduledTxsExecutionFactory, + scheduledTxsExecutionCreator: preprocess.NewSovereignScheduledTxsExecutionFactory(), transactionCoordinatorCreator: transactionCoordinatorFactory, validatorStatisticsProcessorCreator: validatorStatisticsProcessorFactory, additionalStorageServiceCreator: storageFactory.NewSovereignAdditionalStorageServiceFactory(), diff --git a/process/block/preprocess/sovereignScheduledTxsExecutionFactory.go b/process/block/preprocess/sovereignScheduledTxsExecutionFactory.go index db295077d28..9ab7d9df745 100644 --- a/process/block/preprocess/sovereignScheduledTxsExecutionFactory.go +++ b/process/block/preprocess/sovereignScheduledTxsExecutionFactory.go @@ -9,8 +9,8 @@ type sovereignScheduledTxsExecutionFactory struct { } // NewSovereignScheduledTxsExecutionFactory creates a new sovereign scheduled txs execution factory -func NewSovereignScheduledTxsExecutionFactory() (*sovereignScheduledTxsExecutionFactory, error) { - return &sovereignScheduledTxsExecutionFactory{}, nil +func NewSovereignScheduledTxsExecutionFactory() *sovereignScheduledTxsExecutionFactory { + return &sovereignScheduledTxsExecutionFactory{} } // CreateScheduledTxsExecutionHandler creates a new scheduled txs execution handler for sovereign chain diff --git a/process/block/preprocess/sovereignScheduledTxsExecutionFactory_test.go b/process/block/preprocess/sovereignScheduledTxsExecutionFactory_test.go index 85bca3aa491..2de4db3cc1c 100644 --- a/process/block/preprocess/sovereignScheduledTxsExecutionFactory_test.go +++ b/process/block/preprocess/sovereignScheduledTxsExecutionFactory_test.go @@ -1,35 +1,26 @@ package preprocess import ( + "fmt" "testing" - "github.com/multiversx/mx-chain-go/process" "github.com/stretchr/testify/require" ) func TestNewSovereignScheduledTxsExecutionFactory(t *testing.T) { t.Parallel() - stef, err := NewSovereignScheduledTxsExecutionFactory() - require.Nil(t, err) - require.NotNil(t, stef) + stef := NewSovereignScheduledTxsExecutionFactory() require.IsType(t, &sovereignScheduledTxsExecutionFactory{}, stef) + require.False(t, stef.IsInterfaceNil()) } func TestSovereignScheduledTxsExecutionFactory_CreateScheduledTxsExecutionHandler(t *testing.T) { t.Parallel() - stef, _ := NewSovereignScheduledTxsExecutionFactory() + stef := NewSovereignScheduledTxsExecutionFactory() stxeh, err := stef.CreateScheduledTxsExecutionHandler(ScheduledTxsExecutionFactoryArgs{}) require.Nil(t, err) - require.NotNil(t, stxeh) - require.Implements(t, new(process.ScheduledTxsExecutionHandler), stxeh) -} - -func TestSovereignScheduledTxsExecutionFactory_IsInterfaceNil(t *testing.T) { - t.Parallel() - - stef, _ := NewSovereignScheduledTxsExecutionFactory() - require.False(t, stef.IsInterfaceNil()) + require.Equal(t, "*disabled.ScheduledTxsExecutionHandler", fmt.Sprintf("%T", stxeh)) } diff --git a/process/sync/storageBootstrap/sovereignShardBootstrapFactory.go b/process/sync/storageBootstrap/sovereignShardBootstrapFactory.go index 81d5b80c2c6..111e8111637 100644 --- a/process/sync/storageBootstrap/sovereignShardBootstrapFactory.go +++ b/process/sync/storageBootstrap/sovereignShardBootstrapFactory.go @@ -1,24 +1,16 @@ package storageBootstrap import ( - "github.com/multiversx/mx-chain-core-go/core/check" - "github.com/multiversx/mx-chain-go/errors" "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/process/sync" ) type sovereignShardBootstrapFactory struct { - shardBootstrapFactory BootstrapperCreator } // NewSovereignShardBootstrapFactory creates a new instance of shardBootstrapFactory for run type sovereign -func NewSovereignShardBootstrapFactory(sbf BootstrapperCreator) (*sovereignShardBootstrapFactory, error) { - if check.IfNil(sbf) { - return nil, errors.ErrNilShardBootstrapFactory - } - return &sovereignShardBootstrapFactory{ - shardBootstrapFactory: sbf, - }, nil +func NewSovereignShardBootstrapFactory() *sovereignShardBootstrapFactory { + return &sovereignShardBootstrapFactory{} } // CreateBootstrapper creates a new instance of shardBootstrapFactory for run type sovereign diff --git a/process/sync/storageBootstrap/sovereignShardBootstrapFactory_test.go b/process/sync/storageBootstrap/sovereignShardBootstrapFactory_test.go index 966d4f2ac8d..16cd5bad819 100644 --- a/process/sync/storageBootstrap/sovereignShardBootstrapFactory_test.go +++ b/process/sync/storageBootstrap/sovereignShardBootstrapFactory_test.go @@ -1,53 +1,29 @@ package storageBootstrap import ( + "fmt" "testing" "github.com/stretchr/testify/require" - "github.com/multiversx/mx-chain-go/errors" "github.com/multiversx/mx-chain-go/process/sync" ) func TestNewSovereignShardBootstrapFactory(t *testing.T) { t.Parallel() - ssbf, err := NewSovereignShardBootstrapFactory(nil) - - require.Nil(t, ssbf) - require.Equal(t, errors.ErrNilShardBootstrapFactory, err) - - sbf := NewShardBootstrapFactory() - ssbf, err = NewSovereignShardBootstrapFactory(sbf) - - require.NotNil(t, ssbf) - require.Nil(t, err) + ssbf := NewSovereignShardBootstrapFactory() + require.False(t, ssbf.IsInterfaceNil()) } func TestSovereignShardBootstrapFactory_CreateShardBootstrapFactory(t *testing.T) { t.Parallel() - sbf := NewShardBootstrapFactory() - ssbf, _ := NewSovereignShardBootstrapFactory(sbf) - + ssbf := NewSovereignShardBootstrapFactory() _, err := ssbf.CreateBootstrapper(sync.ArgShardBootstrapper{}) - require.NotNil(t, err) bootStrapper, err := ssbf.CreateBootstrapper(getDefaultArgs()) - - require.NotNil(t, bootStrapper) require.Nil(t, err) -} - -func TestSovereignShardBootstrapFactory_IsInterfaceNil(t *testing.T) { - t.Parallel() - - sbf := NewShardBootstrapFactory() - ssbf, _ := NewSovereignShardBootstrapFactory(sbf) - - require.False(t, ssbf.IsInterfaceNil()) - - ssbf = nil - require.True(t, ssbf.IsInterfaceNil()) + require.Equal(t, "*sync.SovereignChainShardBootstrap", fmt.Sprintf("%T", bootStrapper)) } From c9e2e941d52cb3d76cb4b97976949be56e4bd8d7 Mon Sep 17 00:00:00 2001 From: MariusC Date: Fri, 13 Dec 2024 15:38:10 +0200 Subject: [PATCH 05/16] FEAT: Finally create args for epoch start trigger factory --- .../epochStartTriggerFactory_test.go | 103 ++++++++++++++++++ .../factory/headerValidatorFactoryMock.go | 3 +- 2 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 factory/epochStartTrigger/epochStartTriggerFactory_test.go diff --git a/factory/epochStartTrigger/epochStartTriggerFactory_test.go b/factory/epochStartTrigger/epochStartTriggerFactory_test.go new file mode 100644 index 00000000000..b81f1b338c0 --- /dev/null +++ b/factory/epochStartTrigger/epochStartTriggerFactory_test.go @@ -0,0 +1,103 @@ +package epochStartTrigger + +import ( + "testing" + + "github.com/multiversx/mx-chain-core-go/data/typeConverters" + "github.com/multiversx/mx-chain-core-go/hashing" + "github.com/multiversx/mx-chain-core-go/marshal" + "github.com/stretchr/testify/require" + + "github.com/multiversx/mx-chain-go/common" + "github.com/multiversx/mx-chain-go/config" + "github.com/multiversx/mx-chain-go/consensus" + retriever "github.com/multiversx/mx-chain-go/dataRetriever" + "github.com/multiversx/mx-chain-go/factory" + nodeFactoryMock "github.com/multiversx/mx-chain-go/node/mock/factory" + "github.com/multiversx/mx-chain-go/process/mock" + "github.com/multiversx/mx-chain-go/sharding" + shardingMock "github.com/multiversx/mx-chain-go/sharding/mock" + chainStorage "github.com/multiversx/mx-chain-go/storage" + "github.com/multiversx/mx-chain-go/testscommon" + "github.com/multiversx/mx-chain-go/testscommon/bootstrapMocks" + "github.com/multiversx/mx-chain-go/testscommon/dataRetriever" + testsFactory "github.com/multiversx/mx-chain-go/testscommon/factory" + "github.com/multiversx/mx-chain-go/testscommon/mainFactoryMocks" + "github.com/multiversx/mx-chain-go/testscommon/pool" + "github.com/multiversx/mx-chain-go/testscommon/statusHandler" + "github.com/multiversx/mx-chain-go/testscommon/storage" + validatorInfoCacherStub "github.com/multiversx/mx-chain-go/testscommon/validatorInfoCacher" + updateMock "github.com/multiversx/mx-chain-go/update/mock" +) + +func createArgs() factory.ArgsEpochStartTrigger { + return factory.ArgsEpochStartTrigger{ + RequestHandler: &testscommon.RequestHandlerStub{}, + CoreData: &testsFactory.CoreComponentsHolderMock{ + HasherCalled: func() hashing.Hasher { + return &testscommon.HasherStub{} + }, + InternalMarshalizerCalled: func() marshal.Marshalizer { + return &testscommon.MarshallerStub{} + }, + Uint64ByteSliceConverterCalled: func() typeConverters.Uint64ByteSliceConverter { + return &testscommon.Uint64ByteSliceConverterStub{} + }, + EpochStartNotifierWithConfirmCalled: func() factory.EpochStartNotifierWithConfirm { + return &updateMock.EpochStartNotifierStub{} + }, + RoundHandlerCalled: func() consensus.RoundHandler { + return &testscommon.RoundHandlerMock{} + }, + EnableEpochsHandlerCalled: func() common.EnableEpochsHandler { + return &shardingMock.EnableEpochsHandlerMock{} + }, + }, + BootstrapComponents: &mainFactoryMocks.BootstrapComponentsStub{ + ShardCoordinatorCalled: func() sharding.Coordinator { + return &testscommon.ShardsCoordinatorMock{ + NoShards: 1, + } + }, + BootstrapParams: &bootstrapMocks.BootstrapParamsHandlerMock{}, + HdrIntegrityVerifier: &mock.HeaderIntegrityVerifierStub{}, + }, + DataComps: &nodeFactoryMock.DataComponentsMock{ + DataPool: &dataRetriever.PoolsHolderStub{ + MetaBlocksCalled: func() chainStorage.Cacher { + return &testscommon.CacherStub{} + }, + HeadersCalled: func() retriever.HeadersPool { + return &pool.HeadersPoolStub{} + }, + ValidatorsInfoCalled: func() retriever.ShardedDataCacherNotifier { + return &testscommon.ShardedDataCacheNotifierMock{} + }, + CurrEpochValidatorInfoCalled: func() retriever.ValidatorInfoCacher { + return &validatorInfoCacherStub.ValidatorInfoCacherStub{} + }, + }, + Store: &storage.ChainStorerStub{ + GetStorerCalled: func(unitType retriever.UnitType) (chainStorage.Storer, error) { + return &storage.StorerStub{}, nil + }, + }, + }, + StatusCoreComponentsHolder: &testsFactory.StatusCoreComponentsStub{ + AppStatusHandlerField: &statusHandler.AppStatusHandlerStub{}, + }, + RunTypeComponentsHolder: mainFactoryMocks.NewRunTypeComponentsStub(), + Config: config.Config{}, + } +} + +func TestNewEpochStartTriggerFactory(t *testing.T) { + t.Parallel() + + f := NewEpochStartTriggerFactory() + + args := createArgs() + trigger, err := f.CreateEpochStartTrigger(args) + require.Nil(t, err) + require.NotNil(t, trigger) +} diff --git a/testscommon/factory/headerValidatorFactoryMock.go b/testscommon/factory/headerValidatorFactoryMock.go index 11fae039778..3bfb114035c 100644 --- a/testscommon/factory/headerValidatorFactoryMock.go +++ b/testscommon/factory/headerValidatorFactoryMock.go @@ -1,6 +1,7 @@ package factory import ( + "github.com/multiversx/mx-chain-go/node/mock" "github.com/multiversx/mx-chain-go/process" processBlock "github.com/multiversx/mx-chain-go/process/block" ) @@ -15,7 +16,7 @@ func (h *HeaderValidatorFactoryMock) CreateHeaderValidator(args processBlock.Arg if h.CreateHeaderValidatorCalled != nil { return h.CreateHeaderValidatorCalled(args) } - return nil, nil + return &mock.HeaderValidatorStub{}, nil } // IsInterfaceNil - From f2e38f9cf99e2245a33dff02363006536df74bc4 Mon Sep 17 00:00:00 2001 From: MariusC Date: Fri, 13 Dec 2024 16:19:46 +0200 Subject: [PATCH 06/16] FEAT: Extend tests for sovereignEpochStartTriggerFactory.go --- .../epochStartTriggerFactory.go | 8 +++- .../epochStartTriggerFactory_test.go | 43 ++++++++++++++++--- .../sovereignEpochStartTriggerFactory.go | 16 +++++-- .../sovereignEpochStartTriggerFactory_test.go | 19 ++++++++ 4 files changed, 74 insertions(+), 12 deletions(-) create mode 100644 factory/epochStartTrigger/sovereignEpochStartTriggerFactory_test.go diff --git a/factory/epochStartTrigger/epochStartTriggerFactory.go b/factory/epochStartTrigger/epochStartTriggerFactory.go index e4c94c50608..d378efff4b9 100644 --- a/factory/epochStartTrigger/epochStartTriggerFactory.go +++ b/factory/epochStartTrigger/epochStartTriggerFactory.go @@ -6,6 +6,7 @@ import ( "github.com/multiversx/mx-chain-core-go/core" "github.com/multiversx/mx-chain-core-go/core/check" + "github.com/multiversx/mx-chain-go/epochStart" "github.com/multiversx/mx-chain-go/epochStart/metachain" "github.com/multiversx/mx-chain-go/epochStart/shardchain" @@ -15,8 +16,6 @@ import ( "github.com/multiversx/mx-chain-go/process/block" ) -// TODO: MX-15632 Unit tests + fix import cycle - type epochStartTriggerFactory struct { } @@ -29,6 +28,11 @@ func NewEpochStartTriggerFactory() *epochStartTriggerFactory { // CreateEpochStartTrigger creates an epoch start trigger for normal run type func (f *epochStartTriggerFactory) CreateEpochStartTrigger(args factory.ArgsEpochStartTrigger) (epochStart.TriggerHandler, error) { + err := checkNilArgs(args) + if err != nil { + return nil, err + } + shardCoordinator := args.BootstrapComponents.ShardCoordinator() if shardCoordinator.SelfId() < shardCoordinator.NumberOfShards() { diff --git a/factory/epochStartTrigger/epochStartTriggerFactory_test.go b/factory/epochStartTrigger/epochStartTriggerFactory_test.go index b81f1b338c0..60ee5f12452 100644 --- a/factory/epochStartTrigger/epochStartTriggerFactory_test.go +++ b/factory/epochStartTrigger/epochStartTriggerFactory_test.go @@ -1,8 +1,12 @@ package epochStartTrigger import ( + "fmt" "testing" + "github.com/multiversx/mx-chain-core-go/core" + "github.com/multiversx/mx-chain-core-go/data" + "github.com/multiversx/mx-chain-core-go/data/block" "github.com/multiversx/mx-chain-core-go/data/typeConverters" "github.com/multiversx/mx-chain-core-go/hashing" "github.com/multiversx/mx-chain-core-go/marshal" @@ -22,6 +26,7 @@ import ( "github.com/multiversx/mx-chain-go/testscommon/bootstrapMocks" "github.com/multiversx/mx-chain-go/testscommon/dataRetriever" testsFactory "github.com/multiversx/mx-chain-go/testscommon/factory" + "github.com/multiversx/mx-chain-go/testscommon/genesisMocks" "github.com/multiversx/mx-chain-go/testscommon/mainFactoryMocks" "github.com/multiversx/mx-chain-go/testscommon/pool" "github.com/multiversx/mx-chain-go/testscommon/statusHandler" @@ -30,7 +35,7 @@ import ( updateMock "github.com/multiversx/mx-chain-go/update/mock" ) -func createArgs() factory.ArgsEpochStartTrigger { +func createArgs(shardID uint32) factory.ArgsEpochStartTrigger { return factory.ArgsEpochStartTrigger{ RequestHandler: &testscommon.RequestHandlerStub{}, CoreData: &testsFactory.CoreComponentsHolderMock{ @@ -52,15 +57,22 @@ func createArgs() factory.ArgsEpochStartTrigger { EnableEpochsHandlerCalled: func() common.EnableEpochsHandler { return &shardingMock.EnableEpochsHandlerMock{} }, + GenesisNodesSetupCalled: func() sharding.GenesisNodesSetupHandler { + return &genesisMocks.NodesSetupStub{} + }, }, BootstrapComponents: &mainFactoryMocks.BootstrapComponentsStub{ ShardCoordinatorCalled: func() sharding.Coordinator { return &testscommon.ShardsCoordinatorMock{ NoShards: 1, + SelfIDCalled: func() uint32 { + return shardID + }, } }, BootstrapParams: &bootstrapMocks.BootstrapParamsHandlerMock{}, HdrIntegrityVerifier: &mock.HeaderIntegrityVerifierStub{}, + Bootstrapper: &bootstrapMocks.EpochStartBootstrapperStub{}, }, DataComps: &nodeFactoryMock.DataComponentsMock{ DataPool: &dataRetriever.PoolsHolderStub{ @@ -82,12 +94,22 @@ func createArgs() factory.ArgsEpochStartTrigger { return &storage.StorerStub{}, nil }, }, + BlockChain: &testscommon.ChainHandlerStub{ + GetGenesisHeaderCalled: func() data.HeaderHandler { + return &block.HeaderV2{} + }, + }, }, StatusCoreComponentsHolder: &testsFactory.StatusCoreComponentsStub{ AppStatusHandlerField: &statusHandler.AppStatusHandlerStub{}, }, RunTypeComponentsHolder: mainFactoryMocks.NewRunTypeComponentsStub(), - Config: config.Config{}, + Config: config.Config{ + EpochStartConfig: config.EpochStartConfig{ + RoundsPerEpoch: 22, + MinRoundsBetweenEpochs: 22, + }, + }, } } @@ -95,9 +117,18 @@ func TestNewEpochStartTriggerFactory(t *testing.T) { t.Parallel() f := NewEpochStartTriggerFactory() + require.False(t, f.IsInterfaceNil()) - args := createArgs() - trigger, err := f.CreateEpochStartTrigger(args) - require.Nil(t, err) - require.NotNil(t, trigger) + t.Run("create for shard", func(t *testing.T) { + args := createArgs(0) + trigger, err := f.CreateEpochStartTrigger(args) + require.Nil(t, err) + require.Equal(t, "*shardchain.trigger", fmt.Sprintf("%T", trigger)) + }) + t.Run("create for meta", func(t *testing.T) { + args := createArgs(core.MetachainShardId) + trigger, err := f.CreateEpochStartTrigger(args) + require.Nil(t, err) + require.Equal(t, "*metachain.trigger", fmt.Sprintf("%T", trigger)) + }) } diff --git a/factory/epochStartTrigger/sovereignEpochStartTriggerFactory.go b/factory/epochStartTrigger/sovereignEpochStartTriggerFactory.go index c4305c23c75..52c58458451 100644 --- a/factory/epochStartTrigger/sovereignEpochStartTriggerFactory.go +++ b/factory/epochStartTrigger/sovereignEpochStartTriggerFactory.go @@ -2,6 +2,7 @@ package epochStartTrigger import ( "github.com/multiversx/mx-chain-core-go/core/check" + "github.com/multiversx/mx-chain-go/dataRetriever" "github.com/multiversx/mx-chain-go/epochStart" "github.com/multiversx/mx-chain-go/epochStart/metachain" @@ -10,8 +11,6 @@ import ( "github.com/multiversx/mx-chain-go/process" ) -// TODO: MX-15632 Unit tests + fix import cycle - type sovereignEpochStartTriggerFactory struct { } @@ -23,12 +22,12 @@ func NewSovereignEpochStartTriggerFactory() *sovereignEpochStartTriggerFactory { // CreateEpochStartTrigger creates a meta epoch start trigger for sovereign run type func (f *sovereignEpochStartTriggerFactory) CreateEpochStartTrigger(args factory.ArgsEpochStartTrigger) (epochStart.TriggerHandler, error) { - metaTriggerArgs, err := createMetaEpochStartTriggerArgs(args) + err := checkNilArgs(args) if err != nil { return nil, err } - err = checkNilArgs(args) + metaTriggerArgs, err := createMetaEpochStartTriggerArgs(args) if err != nil { return nil, err } @@ -64,6 +63,15 @@ func checkNilArgs(args factory.ArgsEpochStartTrigger) error { if check.IfNil(args.DataComps.Datapool().ValidatorsInfo()) { return process.ErrNilValidatorInfoPool } + if check.IfNil(args.DataComps.Blockchain()) { + return process.ErrNilBlockChain + } + if check.IfNil(args.BootstrapComponents) { + return process.ErrNilBootstrapComponentsHolder + } + if check.IfNil(args.BootstrapComponents.ShardCoordinator()) { + return process.ErrNilShardCoordinator + } if check.IfNil(args.RequestHandler) { return process.ErrNilRequestHandler } diff --git a/factory/epochStartTrigger/sovereignEpochStartTriggerFactory_test.go b/factory/epochStartTrigger/sovereignEpochStartTriggerFactory_test.go new file mode 100644 index 00000000000..91bcbcf5de1 --- /dev/null +++ b/factory/epochStartTrigger/sovereignEpochStartTriggerFactory_test.go @@ -0,0 +1,19 @@ +package epochStartTrigger + +import ( + "fmt" + "testing" + + "github.com/multiversx/mx-chain-core-go/core" + "github.com/stretchr/testify/require" +) + +func TestSovereignEpochStartTriggerFactory_CreateEpochStartTrigger(t *testing.T) { + f := NewSovereignEpochStartTriggerFactory() + require.False(t, f.IsInterfaceNil()) + + args := createArgs(core.SovereignChainShardId) + trigger, err := f.CreateEpochStartTrigger(args) + require.Nil(t, err) + require.Equal(t, "*metachain.sovereignTrigger", fmt.Sprintf("%T", trigger)) +} From 30c4c2399515b8f5a5ccf134be74d290d50cc990 Mon Sep 17 00:00:00 2001 From: MariusC Date: Mon, 16 Dec 2024 11:57:41 +0200 Subject: [PATCH 07/16] FEAT: Extend tests epoch start trigger factory --- .../epochStartTriggerFactory.go | 4 +- .../epochStartTriggerFactory_test.go | 97 +++++++++++-------- .../sovereignEpochStartTriggerFactory.go | 6 +- .../sovereignEpochStartTriggerFactory_test.go | 77 +++++++++++++++ ...tContractResultPreProcessorFactory_test.go | 3 +- 5 files changed, 141 insertions(+), 46 deletions(-) diff --git a/factory/epochStartTrigger/epochStartTriggerFactory.go b/factory/epochStartTrigger/epochStartTriggerFactory.go index d378efff4b9..c343acce180 100644 --- a/factory/epochStartTrigger/epochStartTriggerFactory.go +++ b/factory/epochStartTrigger/epochStartTriggerFactory.go @@ -1,7 +1,7 @@ package epochStartTrigger import ( - "errors" + "fmt" "time" "github.com/multiversx/mx-chain-core-go/core" @@ -42,7 +42,7 @@ func (f *epochStartTriggerFactory) CreateEpochStartTrigger(args factory.ArgsEpoc return createMetaEpochStartTrigger(args) } - return nil, errors.New("error creating new start of epoch trigger because of invalid shard id") + return nil, fmt.Errorf("error creating new start of epoch trigger, errror: %w", process.ErrInvalidShardId) } func createShardEpochStartTrigger(args factory.ArgsEpochStartTrigger) (epochStart.TriggerHandler, error) { diff --git a/factory/epochStartTrigger/epochStartTriggerFactory_test.go b/factory/epochStartTrigger/epochStartTriggerFactory_test.go index 60ee5f12452..14f34b9c162 100644 --- a/factory/epochStartTrigger/epochStartTriggerFactory_test.go +++ b/factory/epochStartTrigger/epochStartTriggerFactory_test.go @@ -18,6 +18,7 @@ import ( retriever "github.com/multiversx/mx-chain-go/dataRetriever" "github.com/multiversx/mx-chain-go/factory" nodeFactoryMock "github.com/multiversx/mx-chain-go/node/mock/factory" + "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/process/mock" "github.com/multiversx/mx-chain-go/sharding" shardingMock "github.com/multiversx/mx-chain-go/sharding/mock" @@ -61,45 +62,8 @@ func createArgs(shardID uint32) factory.ArgsEpochStartTrigger { return &genesisMocks.NodesSetupStub{} }, }, - BootstrapComponents: &mainFactoryMocks.BootstrapComponentsStub{ - ShardCoordinatorCalled: func() sharding.Coordinator { - return &testscommon.ShardsCoordinatorMock{ - NoShards: 1, - SelfIDCalled: func() uint32 { - return shardID - }, - } - }, - BootstrapParams: &bootstrapMocks.BootstrapParamsHandlerMock{}, - HdrIntegrityVerifier: &mock.HeaderIntegrityVerifierStub{}, - Bootstrapper: &bootstrapMocks.EpochStartBootstrapperStub{}, - }, - DataComps: &nodeFactoryMock.DataComponentsMock{ - DataPool: &dataRetriever.PoolsHolderStub{ - MetaBlocksCalled: func() chainStorage.Cacher { - return &testscommon.CacherStub{} - }, - HeadersCalled: func() retriever.HeadersPool { - return &pool.HeadersPoolStub{} - }, - ValidatorsInfoCalled: func() retriever.ShardedDataCacherNotifier { - return &testscommon.ShardedDataCacheNotifierMock{} - }, - CurrEpochValidatorInfoCalled: func() retriever.ValidatorInfoCacher { - return &validatorInfoCacherStub.ValidatorInfoCacherStub{} - }, - }, - Store: &storage.ChainStorerStub{ - GetStorerCalled: func(unitType retriever.UnitType) (chainStorage.Storer, error) { - return &storage.StorerStub{}, nil - }, - }, - BlockChain: &testscommon.ChainHandlerStub{ - GetGenesisHeaderCalled: func() data.HeaderHandler { - return &block.HeaderV2{} - }, - }, - }, + BootstrapComponents: createBootstrapComps(shardID), + DataComps: createDataCompsMock(), StatusCoreComponentsHolder: &testsFactory.StatusCoreComponentsStub{ AppStatusHandlerField: &statusHandler.AppStatusHandlerStub{}, }, @@ -113,6 +77,55 @@ func createArgs(shardID uint32) factory.ArgsEpochStartTrigger { } } +func createBootstrapComps(shardID uint32) *mainFactoryMocks.BootstrapComponentsStub { + return &mainFactoryMocks.BootstrapComponentsStub{ + ShardCoordinatorCalled: func() sharding.Coordinator { + return &testscommon.ShardsCoordinatorMock{ + NoShards: 1, + SelfIDCalled: func() uint32 { + return shardID + }, + } + }, + BootstrapParams: &bootstrapMocks.BootstrapParamsHandlerMock{}, + HdrIntegrityVerifier: &mock.HeaderIntegrityVerifierStub{}, + Bootstrapper: &bootstrapMocks.EpochStartBootstrapperStub{}, + } +} + +func createDataCompsMock() *nodeFactoryMock.DataComponentsMock { + return &nodeFactoryMock.DataComponentsMock{ + DataPool: createDataPoolMock(), + Store: &storage.ChainStorerStub{ + GetStorerCalled: func(unitType retriever.UnitType) (chainStorage.Storer, error) { + return &storage.StorerStub{}, nil + }, + }, + BlockChain: &testscommon.ChainHandlerStub{ + GetGenesisHeaderCalled: func() data.HeaderHandler { + return &block.HeaderV2{} + }, + }, + } +} + +func createDataPoolMock() *dataRetriever.PoolsHolderStub { + return &dataRetriever.PoolsHolderStub{ + MetaBlocksCalled: func() chainStorage.Cacher { + return &testscommon.CacherStub{} + }, + HeadersCalled: func() retriever.HeadersPool { + return &pool.HeadersPoolStub{} + }, + ValidatorsInfoCalled: func() retriever.ShardedDataCacherNotifier { + return &testscommon.ShardedDataCacheNotifierMock{} + }, + CurrEpochValidatorInfoCalled: func() retriever.ValidatorInfoCacher { + return &validatorInfoCacherStub.ValidatorInfoCacherStub{} + }, + } +} + func TestNewEpochStartTriggerFactory(t *testing.T) { t.Parallel() @@ -131,4 +144,10 @@ func TestNewEpochStartTriggerFactory(t *testing.T) { require.Nil(t, err) require.Equal(t, "*metachain.trigger", fmt.Sprintf("%T", trigger)) }) + t.Run("invalid shard id", func(t *testing.T) { + args := createArgs(444) + trigger, err := f.CreateEpochStartTrigger(args) + require.ErrorIs(t, err, process.ErrInvalidShardId) + require.Nil(t, trigger) + }) } diff --git a/factory/epochStartTrigger/sovereignEpochStartTriggerFactory.go b/factory/epochStartTrigger/sovereignEpochStartTriggerFactory.go index 52c58458451..a5bb9c8d3f6 100644 --- a/factory/epochStartTrigger/sovereignEpochStartTriggerFactory.go +++ b/factory/epochStartTrigger/sovereignEpochStartTriggerFactory.go @@ -57,15 +57,15 @@ func checkNilArgs(args factory.ArgsEpochStartTrigger) error { if check.IfNil(args.DataComps.Datapool()) { return process.ErrNilDataPoolHolder } + if check.IfNil(args.DataComps.Blockchain()) { + return process.ErrNilBlockChain + } if check.IfNil(args.DataComps.Datapool().MiniBlocks()) { return dataRetriever.ErrNilMiniblocksPool } if check.IfNil(args.DataComps.Datapool().ValidatorsInfo()) { return process.ErrNilValidatorInfoPool } - if check.IfNil(args.DataComps.Blockchain()) { - return process.ErrNilBlockChain - } if check.IfNil(args.BootstrapComponents) { return process.ErrNilBootstrapComponentsHolder } diff --git a/factory/epochStartTrigger/sovereignEpochStartTriggerFactory_test.go b/factory/epochStartTrigger/sovereignEpochStartTriggerFactory_test.go index 91bcbcf5de1..c8cb6eb145c 100644 --- a/factory/epochStartTrigger/sovereignEpochStartTriggerFactory_test.go +++ b/factory/epochStartTrigger/sovereignEpochStartTriggerFactory_test.go @@ -6,9 +6,15 @@ import ( "github.com/multiversx/mx-chain-core-go/core" "github.com/stretchr/testify/require" + + "github.com/multiversx/mx-chain-go/dataRetriever" + "github.com/multiversx/mx-chain-go/process" + "github.com/multiversx/mx-chain-go/storage" ) func TestSovereignEpochStartTriggerFactory_CreateEpochStartTrigger(t *testing.T) { + t.Parallel() + f := NewSovereignEpochStartTriggerFactory() require.False(t, f.IsInterfaceNil()) @@ -17,3 +23,74 @@ func TestSovereignEpochStartTriggerFactory_CreateEpochStartTrigger(t *testing.T) require.Nil(t, err) require.Equal(t, "*metachain.sovereignTrigger", fmt.Sprintf("%T", trigger)) } + +func TestCheckNilArgs(t *testing.T) { + t.Parallel() + + t.Run("nil data comps", func(t *testing.T) { + args := createArgs(0) + args.DataComps = nil + err := checkNilArgs(args) + require.Equal(t, process.ErrNilDataComponentsHolder, err) + }) + t.Run("nil data pool", func(t *testing.T) { + args := createArgs(0) + dataComps := createDataCompsMock() + dataComps.DataPool = nil + args.DataComps = dataComps + err := checkNilArgs(args) + require.Equal(t, process.ErrNilDataPoolHolder, err) + }) + t.Run("nil blockchain", func(t *testing.T) { + args := createArgs(0) + dataComps := createDataCompsMock() + dataComps.BlockChain = nil + args.DataComps = dataComps + err := checkNilArgs(args) + require.Equal(t, process.ErrNilBlockChain, err) + }) + t.Run("nil mb pool", func(t *testing.T) { + args := createArgs(0) + dataComps := createDataCompsMock() + dataPool := createDataPoolMock() + dataPool.MiniBlocksCalled = func() storage.Cacher { + return nil + } + dataComps.DataPool = dataPool + args.DataComps = dataComps + err := checkNilArgs(args) + require.Equal(t, dataRetriever.ErrNilMiniblocksPool, err) + }) + t.Run("nil validator pool", func(t *testing.T) { + args := createArgs(0) + dataComps := createDataCompsMock() + dataPool := createDataPoolMock() + dataPool.ValidatorsInfoCalled = func() dataRetriever.ShardedDataCacherNotifier { + return nil + } + dataComps.DataPool = dataPool + args.DataComps = dataComps + err := checkNilArgs(args) + require.Equal(t, process.ErrNilValidatorInfoPool, err) + }) + t.Run("nil bootstrap comps", func(t *testing.T) { + args := createArgs(0) + args.BootstrapComponents = nil + err := checkNilArgs(args) + require.Equal(t, process.ErrNilBootstrapComponentsHolder, err) + }) + t.Run("nil shard coordinator", func(t *testing.T) { + args := createArgs(0) + bootStrapComps := createBootstrapComps(0) + bootStrapComps.ShardCoordinatorCalled = nil + args.BootstrapComponents = bootStrapComps + err := checkNilArgs(args) + require.Equal(t, process.ErrNilShardCoordinator, err) + }) + t.Run("nil request handler", func(t *testing.T) { + args := createArgs(0) + args.RequestHandler = nil + err := checkNilArgs(args) + require.Equal(t, process.ErrNilRequestHandler, err) + }) +} diff --git a/process/block/preprocess/smartContractResultPreProcessorFactory_test.go b/process/block/preprocess/smartContractResultPreProcessorFactory_test.go index 067d002dee1..4ae38d8c3cb 100644 --- a/process/block/preprocess/smartContractResultPreProcessorFactory_test.go +++ b/process/block/preprocess/smartContractResultPreProcessorFactory_test.go @@ -3,8 +3,6 @@ package preprocess_test import ( "testing" - "github.com/multiversx/mx-chain-go/testscommon/common" - "github.com/multiversx/mx-chain-core-go/data/smartContractResult" vmcommon "github.com/multiversx/mx-chain-vm-common-go" "github.com/stretchr/testify/require" @@ -13,6 +11,7 @@ import ( "github.com/multiversx/mx-chain-go/process/block/preprocess" "github.com/multiversx/mx-chain-go/process/mock" "github.com/multiversx/mx-chain-go/testscommon" + "github.com/multiversx/mx-chain-go/testscommon/common" "github.com/multiversx/mx-chain-go/testscommon/economicsmocks" "github.com/multiversx/mx-chain-go/testscommon/enableEpochsHandlerMock" "github.com/multiversx/mx-chain-go/testscommon/hashingMocks" From 875fc0e3f21aa9492dc41f312694a6db53995cb0 Mon Sep 17 00:00:00 2001 From: MariusC Date: Mon, 16 Dec 2024 12:02:16 +0200 Subject: [PATCH 08/16] FEAT: Move checkNilArgs in common.go --- factory/epochStartTrigger/common.go | 38 +++++++++ factory/epochStartTrigger/common_test.go | 82 +++++++++++++++++++ .../sovereignEpochStartTriggerFactory.go | 33 -------- .../sovereignEpochStartTriggerFactory_test.go | 75 ----------------- 4 files changed, 120 insertions(+), 108 deletions(-) create mode 100644 factory/epochStartTrigger/common.go create mode 100644 factory/epochStartTrigger/common_test.go diff --git a/factory/epochStartTrigger/common.go b/factory/epochStartTrigger/common.go new file mode 100644 index 00000000000..a44dfbdedc3 --- /dev/null +++ b/factory/epochStartTrigger/common.go @@ -0,0 +1,38 @@ +package epochStartTrigger + +import ( + "github.com/multiversx/mx-chain-core-go/core/check" + + "github.com/multiversx/mx-chain-go/dataRetriever" + "github.com/multiversx/mx-chain-go/factory" + "github.com/multiversx/mx-chain-go/process" +) + +func checkNilArgs(args factory.ArgsEpochStartTrigger) error { + if check.IfNil(args.DataComps) { + return process.ErrNilDataComponentsHolder + } + if check.IfNil(args.DataComps.Datapool()) { + return process.ErrNilDataPoolHolder + } + if check.IfNil(args.DataComps.Blockchain()) { + return process.ErrNilBlockChain + } + if check.IfNil(args.DataComps.Datapool().MiniBlocks()) { + return dataRetriever.ErrNilMiniblocksPool + } + if check.IfNil(args.DataComps.Datapool().ValidatorsInfo()) { + return process.ErrNilValidatorInfoPool + } + if check.IfNil(args.BootstrapComponents) { + return process.ErrNilBootstrapComponentsHolder + } + if check.IfNil(args.BootstrapComponents.ShardCoordinator()) { + return process.ErrNilShardCoordinator + } + if check.IfNil(args.RequestHandler) { + return process.ErrNilRequestHandler + } + + return nil +} diff --git a/factory/epochStartTrigger/common_test.go b/factory/epochStartTrigger/common_test.go new file mode 100644 index 00000000000..67cee081dc6 --- /dev/null +++ b/factory/epochStartTrigger/common_test.go @@ -0,0 +1,82 @@ +package epochStartTrigger + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/multiversx/mx-chain-go/dataRetriever" + "github.com/multiversx/mx-chain-go/process" + "github.com/multiversx/mx-chain-go/storage" +) + +func TestCheckNilArgs(t *testing.T) { + t.Parallel() + + t.Run("nil data comps", func(t *testing.T) { + args := createArgs(0) + args.DataComps = nil + err := checkNilArgs(args) + require.Equal(t, process.ErrNilDataComponentsHolder, err) + }) + t.Run("nil data pool", func(t *testing.T) { + args := createArgs(0) + dataComps := createDataCompsMock() + dataComps.DataPool = nil + args.DataComps = dataComps + err := checkNilArgs(args) + require.Equal(t, process.ErrNilDataPoolHolder, err) + }) + t.Run("nil blockchain", func(t *testing.T) { + args := createArgs(0) + dataComps := createDataCompsMock() + dataComps.BlockChain = nil + args.DataComps = dataComps + err := checkNilArgs(args) + require.Equal(t, process.ErrNilBlockChain, err) + }) + t.Run("nil mb pool", func(t *testing.T) { + args := createArgs(0) + dataComps := createDataCompsMock() + dataPool := createDataPoolMock() + dataPool.MiniBlocksCalled = func() storage.Cacher { + return nil + } + dataComps.DataPool = dataPool + args.DataComps = dataComps + err := checkNilArgs(args) + require.Equal(t, dataRetriever.ErrNilMiniblocksPool, err) + }) + t.Run("nil validator pool", func(t *testing.T) { + args := createArgs(0) + dataComps := createDataCompsMock() + dataPool := createDataPoolMock() + dataPool.ValidatorsInfoCalled = func() dataRetriever.ShardedDataCacherNotifier { + return nil + } + dataComps.DataPool = dataPool + args.DataComps = dataComps + err := checkNilArgs(args) + require.Equal(t, process.ErrNilValidatorInfoPool, err) + }) + t.Run("nil bootstrap comps", func(t *testing.T) { + args := createArgs(0) + args.BootstrapComponents = nil + err := checkNilArgs(args) + require.Equal(t, process.ErrNilBootstrapComponentsHolder, err) + }) + t.Run("nil shard coordinator", func(t *testing.T) { + args := createArgs(0) + bootStrapComps := createBootstrapComps(0) + bootStrapComps.ShardCoordinatorCalled = nil + args.BootstrapComponents = bootStrapComps + err := checkNilArgs(args) + require.Equal(t, process.ErrNilShardCoordinator, err) + }) + t.Run("nil request handler", func(t *testing.T) { + args := createArgs(0) + args.RequestHandler = nil + err := checkNilArgs(args) + require.Equal(t, process.ErrNilRequestHandler, err) + }) +} diff --git a/factory/epochStartTrigger/sovereignEpochStartTriggerFactory.go b/factory/epochStartTrigger/sovereignEpochStartTriggerFactory.go index a5bb9c8d3f6..2d4b5ffe804 100644 --- a/factory/epochStartTrigger/sovereignEpochStartTriggerFactory.go +++ b/factory/epochStartTrigger/sovereignEpochStartTriggerFactory.go @@ -1,14 +1,10 @@ package epochStartTrigger import ( - "github.com/multiversx/mx-chain-core-go/core/check" - - "github.com/multiversx/mx-chain-go/dataRetriever" "github.com/multiversx/mx-chain-go/epochStart" "github.com/multiversx/mx-chain-go/epochStart/metachain" "github.com/multiversx/mx-chain-go/epochStart/shardchain" "github.com/multiversx/mx-chain-go/factory" - "github.com/multiversx/mx-chain-go/process" ) type sovereignEpochStartTriggerFactory struct { @@ -50,35 +46,6 @@ func (f *sovereignEpochStartTriggerFactory) CreateEpochStartTrigger(args factory return metachain.NewSovereignTrigger(argsSovTrigger) } -func checkNilArgs(args factory.ArgsEpochStartTrigger) error { - if check.IfNil(args.DataComps) { - return process.ErrNilDataComponentsHolder - } - if check.IfNil(args.DataComps.Datapool()) { - return process.ErrNilDataPoolHolder - } - if check.IfNil(args.DataComps.Blockchain()) { - return process.ErrNilBlockChain - } - if check.IfNil(args.DataComps.Datapool().MiniBlocks()) { - return dataRetriever.ErrNilMiniblocksPool - } - if check.IfNil(args.DataComps.Datapool().ValidatorsInfo()) { - return process.ErrNilValidatorInfoPool - } - if check.IfNil(args.BootstrapComponents) { - return process.ErrNilBootstrapComponentsHolder - } - if check.IfNil(args.BootstrapComponents.ShardCoordinator()) { - return process.ErrNilShardCoordinator - } - if check.IfNil(args.RequestHandler) { - return process.ErrNilRequestHandler - } - - return nil -} - // IsInterfaceNil checks if the underlying pointer is nil func (f *sovereignEpochStartTriggerFactory) IsInterfaceNil() bool { return f == nil diff --git a/factory/epochStartTrigger/sovereignEpochStartTriggerFactory_test.go b/factory/epochStartTrigger/sovereignEpochStartTriggerFactory_test.go index c8cb6eb145c..33db15eaf57 100644 --- a/factory/epochStartTrigger/sovereignEpochStartTriggerFactory_test.go +++ b/factory/epochStartTrigger/sovereignEpochStartTriggerFactory_test.go @@ -6,10 +6,6 @@ import ( "github.com/multiversx/mx-chain-core-go/core" "github.com/stretchr/testify/require" - - "github.com/multiversx/mx-chain-go/dataRetriever" - "github.com/multiversx/mx-chain-go/process" - "github.com/multiversx/mx-chain-go/storage" ) func TestSovereignEpochStartTriggerFactory_CreateEpochStartTrigger(t *testing.T) { @@ -23,74 +19,3 @@ func TestSovereignEpochStartTriggerFactory_CreateEpochStartTrigger(t *testing.T) require.Nil(t, err) require.Equal(t, "*metachain.sovereignTrigger", fmt.Sprintf("%T", trigger)) } - -func TestCheckNilArgs(t *testing.T) { - t.Parallel() - - t.Run("nil data comps", func(t *testing.T) { - args := createArgs(0) - args.DataComps = nil - err := checkNilArgs(args) - require.Equal(t, process.ErrNilDataComponentsHolder, err) - }) - t.Run("nil data pool", func(t *testing.T) { - args := createArgs(0) - dataComps := createDataCompsMock() - dataComps.DataPool = nil - args.DataComps = dataComps - err := checkNilArgs(args) - require.Equal(t, process.ErrNilDataPoolHolder, err) - }) - t.Run("nil blockchain", func(t *testing.T) { - args := createArgs(0) - dataComps := createDataCompsMock() - dataComps.BlockChain = nil - args.DataComps = dataComps - err := checkNilArgs(args) - require.Equal(t, process.ErrNilBlockChain, err) - }) - t.Run("nil mb pool", func(t *testing.T) { - args := createArgs(0) - dataComps := createDataCompsMock() - dataPool := createDataPoolMock() - dataPool.MiniBlocksCalled = func() storage.Cacher { - return nil - } - dataComps.DataPool = dataPool - args.DataComps = dataComps - err := checkNilArgs(args) - require.Equal(t, dataRetriever.ErrNilMiniblocksPool, err) - }) - t.Run("nil validator pool", func(t *testing.T) { - args := createArgs(0) - dataComps := createDataCompsMock() - dataPool := createDataPoolMock() - dataPool.ValidatorsInfoCalled = func() dataRetriever.ShardedDataCacherNotifier { - return nil - } - dataComps.DataPool = dataPool - args.DataComps = dataComps - err := checkNilArgs(args) - require.Equal(t, process.ErrNilValidatorInfoPool, err) - }) - t.Run("nil bootstrap comps", func(t *testing.T) { - args := createArgs(0) - args.BootstrapComponents = nil - err := checkNilArgs(args) - require.Equal(t, process.ErrNilBootstrapComponentsHolder, err) - }) - t.Run("nil shard coordinator", func(t *testing.T) { - args := createArgs(0) - bootStrapComps := createBootstrapComps(0) - bootStrapComps.ShardCoordinatorCalled = nil - args.BootstrapComponents = bootStrapComps - err := checkNilArgs(args) - require.Equal(t, process.ErrNilShardCoordinator, err) - }) - t.Run("nil request handler", func(t *testing.T) { - args := createArgs(0) - args.RequestHandler = nil - err := checkNilArgs(args) - require.Equal(t, process.ErrNilRequestHandler, err) - }) -} From 5deda17624e81e0c483e8f0c868c6f94e76f1e94 Mon Sep 17 00:00:00 2001 From: MariusC Date: Mon, 16 Dec 2024 16:04:16 +0200 Subject: [PATCH 09/16] FIX: Integration tests --- testscommon/components/components.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/testscommon/components/components.go b/testscommon/components/components.go index bebea345b1a..d154dc984e9 100644 --- a/testscommon/components/components.go +++ b/testscommon/components/components.go @@ -1241,6 +1241,21 @@ func GetRunTypeComponentsWithCoreComp(coreComponents factory.CoreComponentsHolde GenesisMintingSenderAddress: "erd17rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rcqqkhty3", }, }, + GeneralConfig: &config.Config{ + Versions: config.VersionsConfig{ + VersionsByEpochs: []config.VersionByEpochs{ + { + Version: "*", + }, + }, + Cache: config.CacheConfig{ + Type: "LRU", + Capacity: 10000, + Shards: 1, + }, + DefaultVersion: "*", + }, + }, }, InitialAccounts: createAccounts(), } From 678cc9714387fe39eb387deac0ac12368b386f27 Mon Sep 17 00:00:00 2001 From: MariusC Date: Mon, 16 Dec 2024 18:17:25 +0200 Subject: [PATCH 10/16] FEAT: Add initial code placeholder for proposed sov epoch start header with cross chain hash --- process/block/sovereignChainBlock.go | 73 ++++++++++++++++++++++------ 1 file changed, 59 insertions(+), 14 deletions(-) diff --git a/process/block/sovereignChainBlock.go b/process/block/sovereignChainBlock.go index 9e5597bd858..0f3bd32e383 100644 --- a/process/block/sovereignChainBlock.go +++ b/process/block/sovereignChainBlock.go @@ -245,6 +245,11 @@ func (scbp *sovereignChainBlockProcessor) CreateBlock(initialHdr data.HeaderHand return nil, nil, err } + err = scbp.createEpochStartDataCrossChain(sovereignChainHeaderHandler) + if err != nil { + return nil, nil, err + } + scbp.blockChainHook.SetCurrentHeader(initialHdr) scbp.requestHandler.SetEpoch(initialHdr.GetEpoch()) return initialHdr, &block.Body{}, nil @@ -675,18 +680,55 @@ func (scbp *sovereignChainBlockProcessor) requestIncomingTxsIfNeeded(extendedSha func (scbp *sovereignChainBlockProcessor) requestExtendedShardHeaders(sovereignChainHeader data.SovereignChainHeaderHandler) uint32 { _ = core.EmptyChannel(scbp.chRcvAllExtendedShardHdrs) + // todo: extra validity check: that there are no extended shard headers added to the epoch start block, only GetLastFinalizedCrossChainHeaderHandler if len(sovereignChainHeader.GetExtendedShardHeaderHashes()) == 0 { + return scbp.checkAndRequestIfMissingEpochStartExtendedHeader(sovereignChainHeader) + } + + return scbp.computeExistingAndRequestMissingExtendedShardHeaders(sovereignChainHeader.GetExtendedShardHeaderHashes()) +} + +func (scbp *sovereignChainBlockProcessor) checkAndRequestIfMissingEpochStartExtendedHeader(sovereignChainHeader data.SovereignChainHeaderHandler) uint32 { + if !sovereignChainHeader.IsStartOfEpochBlock() { + return 0 + } + + lastCrossChainData := sovereignChainHeader.GetLastFinalizedCrossChainHeaderHandler() + shouldCheckEpochStartCrossChainHash := lastCrossChainData != nil && len(lastCrossChainData.GetHeaderHash()) != 0 + if !shouldCheckEpochStartCrossChainHash { return 0 } - return scbp.computeExistingAndRequestMissingExtendedShardHeaders(sovereignChainHeader) + /* + ADD MALICIOUS CODE HERE TO CHECK THE MECHANISM WORKS + scbp.dataPool.Headers().RemoveHeaderByHash(lastCrossChainData.GetHeaderHash()) + + */ + scbp.hdrsForCurrBlock.mutHdrsForBlock.Lock() + defer scbp.hdrsForCurrBlock.mutHdrsForBlock.Unlock() + + _, err := process.GetExtendedShardHeaderFromPool( + lastCrossChainData.GetHeaderHash(), + scbp.dataPool.Headers()) + + if err != nil { + scbp.hdrsForCurrBlock.missingHdrs++ + scbp.hdrsForCurrBlock.hdrHashAndInfo[string(lastCrossChainData.GetHeaderHash())] = &hdrInfo{ + hdr: nil, + usedInBlock: false, + } + go scbp.extendedShardHeaderRequester.RequestExtendedShardHeader(lastCrossChainData.GetHeaderHash()) + + return 1 + } + + return 0 } -func (scbp *sovereignChainBlockProcessor) computeExistingAndRequestMissingExtendedShardHeaders(sovereignChainHeader data.SovereignChainHeaderHandler) uint32 { +func (scbp *sovereignChainBlockProcessor) computeExistingAndRequestMissingExtendedShardHeaders(extendedShardHeaderHashes [][]byte) uint32 { scbp.hdrsForCurrBlock.mutHdrsForBlock.Lock() defer scbp.hdrsForCurrBlock.mutHdrsForBlock.Unlock() - extendedShardHeaderHashes := sovereignChainHeader.GetExtendedShardHeaderHashes() for i := 0; i < len(extendedShardHeaderHashes); i++ { hdr, err := process.GetExtendedShardHeaderFromPool( extendedShardHeaderHashes[i], @@ -992,7 +1034,7 @@ func (scbp *sovereignChainBlockProcessor) processEpochStartMetaBlock( return scbp.applyBodyToHeaderForEpochChange(header, body) } -func (scbp *sovereignChainBlockProcessor) createEpochStartDataCrossChain(sovHdr *block.SovereignChainHeader) error { +func (scbp *sovereignChainBlockProcessor) createEpochStartDataCrossChain(sovHdr data.SovereignChainHeaderHandler) error { lastCrossNotarizedHeader, lastCrossNotarizedHeaderHash, err := scbp.blockTracker.GetLastCrossNotarizedHeader(core.MainChainShardId) if err != nil { return err @@ -1009,15 +1051,16 @@ func (scbp *sovereignChainBlockProcessor) createEpochStartDataCrossChain(sovHdr "lastCrossNotarizedHeaderNonce", lastCrossNotarizedHeader.GetNonce(), ) - sovHdr.EpochStart.LastFinalizedCrossChainHeader = block.EpochStartCrossChainData{ - ShardID: core.MainChainShardId, - Epoch: lastCrossNotarizedHeader.GetEpoch(), - Round: lastCrossNotarizedHeader.GetRound(), - Nonce: lastCrossNotarizedHeader.GetNonce(), - HeaderHash: lastCrossNotarizedHeaderHash, - } - - return nil + // TODO: Make setter directly here in core + return sovHdr.GetEpochStartHandler().SetLastFinalizedHeaders([]data.EpochStartShardDataHandler{ + &block.EpochStartCrossChainData{ + ShardID: core.MainChainShardId, + Epoch: lastCrossNotarizedHeader.GetEpoch(), + Round: lastCrossNotarizedHeader.GetRound(), + Nonce: lastCrossNotarizedHeader.GetNonce(), + HeaderHash: lastCrossNotarizedHeaderHash, + }, + }) } func (scbp *sovereignChainBlockProcessor) applyBodyToHeaderForEpochChange(header data.HeaderHandler, body *block.Body) error { @@ -1122,7 +1165,9 @@ func (scbp *sovereignChainBlockProcessor) sortExtendedShardHeadersForCurrentBloc scbp.hdrsForCurrBlock.mutHdrsForBlock.RLock() for _, headerInfo := range scbp.hdrsForCurrBlock.hdrHashAndInfo { - hdrsForCurrentBlock = append(hdrsForCurrentBlock, headerInfo.hdr) + if headerInfo.usedInBlock { + hdrsForCurrentBlock = append(hdrsForCurrentBlock, headerInfo.hdr) + } } scbp.hdrsForCurrBlock.mutHdrsForBlock.RUnlock() From c7bb2e4973e30c796335c99ac3c05fdaa65fa036 Mon Sep 17 00:00:00 2001 From: MariusC Date: Tue, 17 Dec 2024 14:48:37 +0200 Subject: [PATCH 11/16] FEAT: Testing code with missing extended header works --- process/block/sovereignChainBlock.go | 24 +++++++++++++++++++----- process/track/baseBlockTrack.go | 14 ++++++++++++++ 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/process/block/sovereignChainBlock.go b/process/block/sovereignChainBlock.go index 0f3bd32e383..aeae4a2f11c 100644 --- a/process/block/sovereignChainBlock.go +++ b/process/block/sovereignChainBlock.go @@ -4,6 +4,7 @@ import ( "bytes" "fmt" "math/big" + "math/rand" "sort" "time" @@ -33,6 +34,7 @@ var rootHash = "uncomputed root hash" type extendedShardHeaderTrackHandler interface { ComputeLongestExtendedShardChainFromLastNotarized() ([]data.HeaderHandler, [][]byte, error) IsGenesisLastCrossNotarizedHeader() bool + DeleteMainChainHeader(nonce uint64) } type extendedShardHeaderRequestHandler interface { @@ -699,19 +701,31 @@ func (scbp *sovereignChainBlockProcessor) checkAndRequestIfMissingEpochStartExte return 0 } - /* - ADD MALICIOUS CODE HERE TO CHECK THE MECHANISM WORKS + log.Error("checkAndRequestIfMissingEpochStartExtendedHeader started") + + if rand.Int31n(10) > 5 { + log.Error("ADDING CODE TO DELETE HDR") scbp.dataPool.Headers().RemoveHeaderByHash(lastCrossChainData.GetHeaderHash()) + scbp.extendedShardHeaderTracker.DeleteMainChainHeader(lastCrossChainData.GetNonce()) + } - */ scbp.hdrsForCurrBlock.mutHdrsForBlock.Lock() defer scbp.hdrsForCurrBlock.mutHdrsForBlock.Unlock() - _, err := process.GetExtendedShardHeaderFromPool( + _, errMissingHdrPool := process.GetExtendedShardHeaderFromPool( lastCrossChainData.GetHeaderHash(), scbp.dataPool.Headers()) - if err != nil { + _, lastNotarziedHdrHash, errTracker := scbp.blockTracker.GetLastCrossNotarizedHeader(core.MainChainShardId) + + missingHeaderInTracker := errTracker != nil && !bytes.Equal(lastNotarziedHdrHash, lastCrossChainData.GetHeaderHash()) + missingHeaderInPool := errMissingHdrPool != nil + + log.Error("CHECKING EXTRA VALUES", "errTracker", errTracker, "lastNotarziedHdrHash", lastNotarziedHdrHash, "lastCrossChainData.GetHeaderHash()", lastCrossChainData.GetHeaderHash()) + + log.Error("CHECKING BOOL VALUES", "missingHeaderInTracker", missingHeaderInTracker, "missingHeaderInPool", missingHeaderInPool) + + if missingHeaderInTracker || missingHeaderInPool { scbp.hdrsForCurrBlock.missingHdrs++ scbp.hdrsForCurrBlock.hdrHashAndInfo[string(lastCrossChainData.GetHeaderHash())] = &hdrInfo{ hdr: nil, diff --git a/process/track/baseBlockTrack.go b/process/track/baseBlockTrack.go index 1821bd41a32..e4119a376fc 100644 --- a/process/track/baseBlockTrack.go +++ b/process/track/baseBlockTrack.go @@ -325,6 +325,20 @@ func (bbt *baseBlockTrack) cleanupTrackedHeadersBehindNonce(shardID uint32, nonc } } +func (bbt *baseBlockTrack) DeleteMainChainHeader(nonce uint64) { + bbt.mutHeaders.Lock() + defer bbt.mutHeaders.Unlock() + + headersForMainShard, ok := bbt.headers[core.MainChainShardId] + if !ok { + log.Error("DeleteMainChainHeader NOT FOUND") + return + } + + log.Error("DeleteMainChainHeader SUCCESS") + delete(headersForMainShard, nonce) +} + // ComputeLongestChain returns the longest valid chain for a given shard from a given header func (bbt *baseBlockTrack) ComputeLongestChain(shardID uint32, header data.HeaderHandler) ([]data.HeaderHandler, [][]byte) { return bbt.blockProcessor.ComputeLongestChain(shardID, header) From 3fa601cf6e4566144f23755ee8d8e5db5502672b Mon Sep 17 00:00:00 2001 From: MariusC Date: Wed, 18 Dec 2024 17:28:38 +0200 Subject: [PATCH 12/16] CLN: Use setter for last cross chain data --- cmd/node/config/config.toml | 2 +- cmd/sovereignnode/go.mod | 2 +- cmd/sovereignnode/go.sum | 4 +- go.mod | 2 +- go.sum | 4 +- process/block/sovereignChainBlock.go | 73 +++++++++++++--------------- process/track/blockNotarizer.go | 1 + 7 files changed, 41 insertions(+), 47 deletions(-) diff --git a/cmd/node/config/config.toml b/cmd/node/config/config.toml index 6ccb3732763..2aa3c084646 100644 --- a/cmd/node/config/config.toml +++ b/cmd/node/config/config.toml @@ -623,7 +623,7 @@ [EpochStartConfig] GenesisEpoch = 0 MinRoundsBetweenEpochs = 20 - RoundsPerEpoch = 200 + RoundsPerEpoch = 30 # Min and Max ShuffledOutRestartThreshold represents the minimum and maximum duration of an epoch (in percentage) after a node which # has been shuffled out has to restart its process in order to start in a new shard MinShuffledOutRestartThreshold = 0.05 diff --git a/cmd/sovereignnode/go.mod b/cmd/sovereignnode/go.mod index 480286cf9b1..02cd180ccd4 100644 --- a/cmd/sovereignnode/go.mod +++ b/cmd/sovereignnode/go.mod @@ -6,7 +6,7 @@ go 1.20 require ( github.com/google/gops v0.3.18 - github.com/multiversx/mx-chain-core-go v1.2.24-0.20241209142414-762196f8dd06 + github.com/multiversx/mx-chain-core-go v1.2.24-0.20241218131403-473853d0b54a github.com/multiversx/mx-chain-go v1.8.4 github.com/multiversx/mx-chain-logger-go v1.0.15 github.com/multiversx/mx-chain-sovereign-bridge-go v0.0.0-20240116102202-4cf6fbbd95a3 diff --git a/cmd/sovereignnode/go.sum b/cmd/sovereignnode/go.sum index a2be0b00c6a..ee0e9534327 100644 --- a/cmd/sovereignnode/go.sum +++ b/cmd/sovereignnode/go.sum @@ -385,8 +385,8 @@ github.com/multiversx/concurrent-map v0.1.4 h1:hdnbM8VE4b0KYJaGY5yJS2aNIW9TFFsUY github.com/multiversx/concurrent-map v0.1.4/go.mod h1:8cWFRJDOrWHOTNSqgYCUvwT7c7eFQ4U2vKMOp4A/9+o= github.com/multiversx/mx-chain-communication-go v1.1.1 h1:y4DoQeQOJTaSUsRzczQFazf8JYQmInddypApqA3AkwM= github.com/multiversx/mx-chain-communication-go v1.1.1/go.mod h1:WK6bP4pGEHGDDna/AYRIMtl6G9OA0NByI1Lw8PmOnRM= -github.com/multiversx/mx-chain-core-go v1.2.24-0.20241209142414-762196f8dd06 h1:3Sog/pzWhtQ7UKHTaJhK50EjSqlkxTOD4JKWmJZzr50= -github.com/multiversx/mx-chain-core-go v1.2.24-0.20241209142414-762196f8dd06/go.mod h1:P/YBoFnt25XUaCQ7Q/SD15vhnc9yV5JDhHxyFO9P8Z0= +github.com/multiversx/mx-chain-core-go v1.2.24-0.20241218131403-473853d0b54a h1:0w+YAzjGWLV+U3ERmu1TnUUgwjj+3kAbTL4S+vCUa2M= +github.com/multiversx/mx-chain-core-go v1.2.24-0.20241218131403-473853d0b54a/go.mod h1:P/YBoFnt25XUaCQ7Q/SD15vhnc9yV5JDhHxyFO9P8Z0= github.com/multiversx/mx-chain-crypto-go v1.2.12 h1:zWip7rpUS4CGthJxfKn5MZfMfYPjVjIiCID6uX5BSOk= github.com/multiversx/mx-chain-crypto-go v1.2.12/go.mod h1:HzcPpCm1zanNct/6h2rIh+MFrlXbjA5C8+uMyXj3LI4= github.com/multiversx/mx-chain-es-indexer-go v1.7.11-0.20241211094055-23de51462ca4 h1:IfjK6IQy65eMWr/FEv3CMUz13ZqH9sWLnKv85/AoayM= diff --git a/go.mod b/go.mod index d9db1b8c9f3..acfff51064b 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/klauspost/cpuid/v2 v2.2.5 github.com/mitchellh/mapstructure v1.5.0 github.com/multiversx/mx-chain-communication-go v1.1.1 - github.com/multiversx/mx-chain-core-go v1.2.24-0.20241209142414-762196f8dd06 + github.com/multiversx/mx-chain-core-go v1.2.24-0.20241218131403-473853d0b54a github.com/multiversx/mx-chain-crypto-go v1.2.12 github.com/multiversx/mx-chain-es-indexer-go v1.7.11-0.20241211094055-23de51462ca4 github.com/multiversx/mx-chain-logger-go v1.0.15 diff --git a/go.sum b/go.sum index e52d2230d58..c81bb613277 100644 --- a/go.sum +++ b/go.sum @@ -387,8 +387,8 @@ github.com/multiversx/concurrent-map v0.1.4 h1:hdnbM8VE4b0KYJaGY5yJS2aNIW9TFFsUY github.com/multiversx/concurrent-map v0.1.4/go.mod h1:8cWFRJDOrWHOTNSqgYCUvwT7c7eFQ4U2vKMOp4A/9+o= github.com/multiversx/mx-chain-communication-go v1.1.1 h1:y4DoQeQOJTaSUsRzczQFazf8JYQmInddypApqA3AkwM= github.com/multiversx/mx-chain-communication-go v1.1.1/go.mod h1:WK6bP4pGEHGDDna/AYRIMtl6G9OA0NByI1Lw8PmOnRM= -github.com/multiversx/mx-chain-core-go v1.2.24-0.20241209142414-762196f8dd06 h1:3Sog/pzWhtQ7UKHTaJhK50EjSqlkxTOD4JKWmJZzr50= -github.com/multiversx/mx-chain-core-go v1.2.24-0.20241209142414-762196f8dd06/go.mod h1:P/YBoFnt25XUaCQ7Q/SD15vhnc9yV5JDhHxyFO9P8Z0= +github.com/multiversx/mx-chain-core-go v1.2.24-0.20241218131403-473853d0b54a h1:0w+YAzjGWLV+U3ERmu1TnUUgwjj+3kAbTL4S+vCUa2M= +github.com/multiversx/mx-chain-core-go v1.2.24-0.20241218131403-473853d0b54a/go.mod h1:P/YBoFnt25XUaCQ7Q/SD15vhnc9yV5JDhHxyFO9P8Z0= github.com/multiversx/mx-chain-crypto-go v1.2.12 h1:zWip7rpUS4CGthJxfKn5MZfMfYPjVjIiCID6uX5BSOk= github.com/multiversx/mx-chain-crypto-go v1.2.12/go.mod h1:HzcPpCm1zanNct/6h2rIh+MFrlXbjA5C8+uMyXj3LI4= github.com/multiversx/mx-chain-es-indexer-go v1.7.11-0.20241211094055-23de51462ca4 h1:IfjK6IQy65eMWr/FEv3CMUz13ZqH9sWLnKv85/AoayM= diff --git a/process/block/sovereignChainBlock.go b/process/block/sovereignChainBlock.go index aeae4a2f11c..1b9f7f60a5f 100644 --- a/process/block/sovereignChainBlock.go +++ b/process/block/sovereignChainBlock.go @@ -4,7 +4,6 @@ import ( "bytes" "fmt" "math/big" - "math/rand" "sort" "time" @@ -684,13 +683,13 @@ func (scbp *sovereignChainBlockProcessor) requestExtendedShardHeaders(sovereignC // todo: extra validity check: that there are no extended shard headers added to the epoch start block, only GetLastFinalizedCrossChainHeaderHandler if len(sovereignChainHeader.GetExtendedShardHeaderHashes()) == 0 { - return scbp.checkAndRequestIfMissingEpochStartExtendedHeader(sovereignChainHeader) + return scbp.computeAndRequestEpochStartExtendedHeaderIfMissing(sovereignChainHeader) } - return scbp.computeExistingAndRequestMissingExtendedShardHeaders(sovereignChainHeader.GetExtendedShardHeaderHashes()) + return scbp.computeExistingAndRequestMissingExtendedShardHeaders(sovereignChainHeader) } -func (scbp *sovereignChainBlockProcessor) checkAndRequestIfMissingEpochStartExtendedHeader(sovereignChainHeader data.SovereignChainHeaderHandler) uint32 { +func (scbp *sovereignChainBlockProcessor) computeAndRequestEpochStartExtendedHeaderIfMissing(sovereignChainHeader data.SovereignChainHeaderHandler) uint32 { if !sovereignChainHeader.IsStartOfEpochBlock() { return 0 } @@ -701,48 +700,45 @@ func (scbp *sovereignChainBlockProcessor) checkAndRequestIfMissingEpochStartExte return 0 } - log.Error("checkAndRequestIfMissingEpochStartExtendedHeader started") - - if rand.Int31n(10) > 5 { - log.Error("ADDING CODE TO DELETE HDR") - scbp.dataPool.Headers().RemoveHeaderByHash(lastCrossChainData.GetHeaderHash()) - scbp.extendedShardHeaderTracker.DeleteMainChainHeader(lastCrossChainData.GetNonce()) - } - - scbp.hdrsForCurrBlock.mutHdrsForBlock.Lock() - defer scbp.hdrsForCurrBlock.mutHdrsForBlock.Unlock() + lastCrossChainHash := lastCrossChainData.GetHeaderHash() _, errMissingHdrPool := process.GetExtendedShardHeaderFromPool( - lastCrossChainData.GetHeaderHash(), + lastCrossChainHash, scbp.dataPool.Headers()) + _, lastNotarizedHdrHash, _ := scbp.blockTracker.GetLastCrossNotarizedHeader(core.MainChainShardId) - _, lastNotarziedHdrHash, errTracker := scbp.blockTracker.GetLastCrossNotarizedHeader(core.MainChainShardId) - - missingHeaderInTracker := errTracker != nil && !bytes.Equal(lastNotarziedHdrHash, lastCrossChainData.GetHeaderHash()) + missingHeaderInTracker := !bytes.Equal(lastNotarizedHdrHash, lastCrossChainHash) missingHeaderInPool := errMissingHdrPool != nil + shouldRequestLastCrossChainHeader := missingHeaderInTracker || missingHeaderInPool - log.Error("CHECKING EXTRA VALUES", "errTracker", errTracker, "lastNotarziedHdrHash", lastNotarziedHdrHash, "lastCrossChainData.GetHeaderHash()", lastCrossChainData.GetHeaderHash()) - - log.Error("CHECKING BOOL VALUES", "missingHeaderInTracker", missingHeaderInTracker, "missingHeaderInPool", missingHeaderInPool) + log.Debug("sovereignChainBlockProcessor.checkAndRequestIfMissingEpochStartExtendedHeader", + "missingHeaderInTracker", missingHeaderInTracker, + "missingHeaderInPool", missingHeaderInPool, + "shouldRequestLastCrossChainHeader", shouldRequestLastCrossChainHeader, + ) - if missingHeaderInTracker || missingHeaderInPool { - scbp.hdrsForCurrBlock.missingHdrs++ - scbp.hdrsForCurrBlock.hdrHashAndInfo[string(lastCrossChainData.GetHeaderHash())] = &hdrInfo{ - hdr: nil, - usedInBlock: false, - } - go scbp.extendedShardHeaderRequester.RequestExtendedShardHeader(lastCrossChainData.GetHeaderHash()) + if !shouldRequestLastCrossChainHeader { + return 0 + } - return 1 + scbp.hdrsForCurrBlock.mutHdrsForBlock.Lock() + scbp.hdrsForCurrBlock.missingHdrs++ + scbp.hdrsForCurrBlock.hdrHashAndInfo[string(lastCrossChainHash)] = &hdrInfo{ + hdr: nil, + usedInBlock: false, } + scbp.hdrsForCurrBlock.mutHdrsForBlock.Unlock() + + go scbp.extendedShardHeaderRequester.RequestExtendedShardHeader(lastCrossChainHash) - return 0 + return 1 } -func (scbp *sovereignChainBlockProcessor) computeExistingAndRequestMissingExtendedShardHeaders(extendedShardHeaderHashes [][]byte) uint32 { +func (scbp *sovereignChainBlockProcessor) computeExistingAndRequestMissingExtendedShardHeaders(sovereignChainHeader data.SovereignChainHeaderHandler) uint32 { scbp.hdrsForCurrBlock.mutHdrsForBlock.Lock() defer scbp.hdrsForCurrBlock.mutHdrsForBlock.Unlock() + extendedShardHeaderHashes := sovereignChainHeader.GetExtendedShardHeaderHashes() for i := 0; i < len(extendedShardHeaderHashes); i++ { hdr, err := process.GetExtendedShardHeaderFromPool( extendedShardHeaderHashes[i], @@ -1065,15 +1061,12 @@ func (scbp *sovereignChainBlockProcessor) createEpochStartDataCrossChain(sovHdr "lastCrossNotarizedHeaderNonce", lastCrossNotarizedHeader.GetNonce(), ) - // TODO: Make setter directly here in core - return sovHdr.GetEpochStartHandler().SetLastFinalizedHeaders([]data.EpochStartShardDataHandler{ - &block.EpochStartCrossChainData{ - ShardID: core.MainChainShardId, - Epoch: lastCrossNotarizedHeader.GetEpoch(), - Round: lastCrossNotarizedHeader.GetRound(), - Nonce: lastCrossNotarizedHeader.GetNonce(), - HeaderHash: lastCrossNotarizedHeaderHash, - }, + return sovHdr.SetLastFinalizedCrossChainHeaderHandler(&block.EpochStartCrossChainData{ + ShardID: core.MainChainShardId, + Epoch: lastCrossNotarizedHeader.GetEpoch(), + Round: lastCrossNotarizedHeader.GetRound(), + Nonce: lastCrossNotarizedHeader.GetNonce(), + HeaderHash: lastCrossNotarizedHeaderHash, }) } diff --git a/process/track/blockNotarizer.go b/process/track/blockNotarizer.go index 0d6b581fd6e..6520d3ff810 100644 --- a/process/track/blockNotarizer.go +++ b/process/track/blockNotarizer.go @@ -9,6 +9,7 @@ import ( "github.com/multiversx/mx-chain-core-go/data" "github.com/multiversx/mx-chain-core-go/hashing" "github.com/multiversx/mx-chain-core-go/marshal" + "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/sharding" ) From 87500e4605efb9968b8cb2f53b7020d8f23bcd4d Mon Sep 17 00:00:00 2001 From: MariusC Date: Thu, 19 Dec 2024 13:41:58 +0200 Subject: [PATCH 13/16] FEAT: Return error on epoch start invalid block --- errors/errors.go | 3 ++ process/block/sovereignChainBlock.go | 47 ++++++++++++++++------------ 2 files changed, 30 insertions(+), 20 deletions(-) diff --git a/errors/errors.go b/errors/errors.go index 008d5d5c2fa..0558a66b0a3 100644 --- a/errors/errors.go +++ b/errors/errors.go @@ -874,3 +874,6 @@ var ErrNilAPIRewardsHandler = errors.New("nil api rewards handler has been provi // ErrNilOutportDataProviderFactory signals that a nil outport data provider factory has been provided var ErrNilOutportDataProviderFactory = errors.New("nil outport data provider factory has been provided") + +// ErrReceivedSovereignEpochStartBlockWithExtendedHeaders signals that an invalid epoch start sovereign block has been received +var ErrReceivedSovereignEpochStartBlockWithExtendedHeaders = errors.New("received invalid epoch start sovereign block, should not contain any extended headers") diff --git a/process/block/sovereignChainBlock.go b/process/block/sovereignChainBlock.go index 1b9f7f60a5f..f9c5f8cea91 100644 --- a/process/block/sovereignChainBlock.go +++ b/process/block/sovereignChainBlock.go @@ -701,7 +701,24 @@ func (scbp *sovereignChainBlockProcessor) computeAndRequestEpochStartExtendedHea } lastCrossChainHash := lastCrossChainData.GetHeaderHash() + if !scbp.shouldRequestEpochStartCrossChainHash(lastCrossChainHash) { + return 0 + } + + scbp.hdrsForCurrBlock.mutHdrsForBlock.Lock() + scbp.hdrsForCurrBlock.missingHdrs++ + scbp.hdrsForCurrBlock.hdrHashAndInfo[string(lastCrossChainHash)] = &hdrInfo{ + hdr: nil, + usedInBlock: false, + } + scbp.hdrsForCurrBlock.mutHdrsForBlock.Unlock() + + go scbp.extendedShardHeaderRequester.RequestExtendedShardHeader(lastCrossChainHash) + return 1 +} + +func (scbp *sovereignChainBlockProcessor) shouldRequestEpochStartCrossChainHash(lastCrossChainHash []byte) bool { _, errMissingHdrPool := process.GetExtendedShardHeaderFromPool( lastCrossChainHash, scbp.dataPool.Headers()) @@ -717,21 +734,7 @@ func (scbp *sovereignChainBlockProcessor) computeAndRequestEpochStartExtendedHea "shouldRequestLastCrossChainHeader", shouldRequestLastCrossChainHeader, ) - if !shouldRequestLastCrossChainHeader { - return 0 - } - - scbp.hdrsForCurrBlock.mutHdrsForBlock.Lock() - scbp.hdrsForCurrBlock.missingHdrs++ - scbp.hdrsForCurrBlock.hdrHashAndInfo[string(lastCrossChainHash)] = &hdrInfo{ - hdr: nil, - usedInBlock: false, - } - scbp.hdrsForCurrBlock.mutHdrsForBlock.Unlock() - - go scbp.extendedShardHeaderRequester.RequestExtendedShardHeader(lastCrossChainHash) - - return 1 + return missingHeaderInTracker || missingHeaderInPool } func (scbp *sovereignChainBlockProcessor) computeExistingAndRequestMissingExtendedShardHeaders(sovereignChainHeader data.SovereignChainHeaderHandler) uint32 { @@ -797,7 +800,7 @@ func (scbp *sovereignChainBlockProcessor) ProcessBlock(headerHandler data.Header "nonce", headerHandler.GetNonce(), ) - sovereignChainHeader, ok := headerHandler.(data.SovereignChainHeaderHandler) + sovChainHeader, ok := headerHandler.(data.SovereignChainHeaderHandler) if !ok { return nil, nil, process.ErrWrongTypeAssertion } @@ -824,7 +827,7 @@ func (scbp *sovereignChainBlockProcessor) ProcessBlock(headerHandler data.Header scbp.blockChainHook.SetCurrentHeader(headerHandler) scbp.txCoordinator.RequestBlockTransactions(body) - requestedExtendedShardHdrs := scbp.requestExtendedShardHeaders(sovereignChainHeader) + requestedExtendedShardHdrs := scbp.requestExtendedShardHeaders(sovChainHeader) if haveTime() < 0 { return nil, nil, process.ErrTimeIsOut @@ -851,7 +854,7 @@ func (scbp *sovereignChainBlockProcessor) ProcessBlock(headerHandler data.Header go scbp.checkAndRequestIfExtendedShardHeadersMissing() }() - err = scbp.checkExtendedShardHeadersValidity() + err = scbp.checkExtendedShardHeadersValidity(sovChainHeader) if err != nil { return nil, nil, err } @@ -892,7 +895,7 @@ func (scbp *sovereignChainBlockProcessor) ProcessBlock(headerHandler data.Header return nil, nil, err } - err = scbp.verifySovereignPostProcessBlock(headerHandler, newBody, sovereignChainHeader) + err = scbp.verifySovereignPostProcessBlock(headerHandler, newBody, sovChainHeader) if err != nil { return nil, nil, err } @@ -901,7 +904,7 @@ func (scbp *sovereignChainBlockProcessor) ProcessBlock(headerHandler data.Header } // checkExtendedShardHeadersValidity checks if used extended shard headers are valid as construction -func (scbp *sovereignChainBlockProcessor) checkExtendedShardHeadersValidity() error { +func (scbp *sovereignChainBlockProcessor) checkExtendedShardHeadersValidity(sovereignChainHeader data.SovereignChainHeaderHandler) error { lastCrossNotarizedHeader, _, err := scbp.blockTracker.GetLastCrossNotarizedHeader(core.MainChainShardId) if err != nil { return err @@ -917,6 +920,10 @@ func (scbp *sovereignChainBlockProcessor) checkExtendedShardHeadersValidity() er return nil } + if sovereignChainHeader.IsStartOfEpochBlock() { + return errors.ErrReceivedSovereignEpochStartBlockWithExtendedHeaders + } + if scbp.isGenesisHeaderWithNoPreviousTracking(extendedShardHdrs[0]) { // we are missing pre-genesis header, so we can't link it to previous header if len(extendedShardHdrs) == 1 { From ea06b70f9f98f07fdbbf8e4aeca59bfe58ad2646 Mon Sep 17 00:00:00 2001 From: MariusC Date: Thu, 19 Dec 2024 17:13:19 +0200 Subject: [PATCH 14/16] CLN: Final cleaning after testing --- cmd/node/config/config.toml | 2 +- process/block/sovereignChainBlock.go | 3 +-- process/track/baseBlockTrack.go | 14 -------------- 3 files changed, 2 insertions(+), 17 deletions(-) diff --git a/cmd/node/config/config.toml b/cmd/node/config/config.toml index 2aa3c084646..6ccb3732763 100644 --- a/cmd/node/config/config.toml +++ b/cmd/node/config/config.toml @@ -623,7 +623,7 @@ [EpochStartConfig] GenesisEpoch = 0 MinRoundsBetweenEpochs = 20 - RoundsPerEpoch = 30 + RoundsPerEpoch = 200 # Min and Max ShuffledOutRestartThreshold represents the minimum and maximum duration of an epoch (in percentage) after a node which # has been shuffled out has to restart its process in order to start in a new shard MinShuffledOutRestartThreshold = 0.05 diff --git a/process/block/sovereignChainBlock.go b/process/block/sovereignChainBlock.go index f9c5f8cea91..0767aaedbc4 100644 --- a/process/block/sovereignChainBlock.go +++ b/process/block/sovereignChainBlock.go @@ -33,7 +33,6 @@ var rootHash = "uncomputed root hash" type extendedShardHeaderTrackHandler interface { ComputeLongestExtendedShardChainFromLastNotarized() ([]data.HeaderHandler, [][]byte, error) IsGenesisLastCrossNotarizedHeader() bool - DeleteMainChainHeader(nonce uint64) } type extendedShardHeaderRequestHandler interface { @@ -681,7 +680,6 @@ func (scbp *sovereignChainBlockProcessor) requestIncomingTxsIfNeeded(extendedSha func (scbp *sovereignChainBlockProcessor) requestExtendedShardHeaders(sovereignChainHeader data.SovereignChainHeaderHandler) uint32 { _ = core.EmptyChannel(scbp.chRcvAllExtendedShardHdrs) - // todo: extra validity check: that there are no extended shard headers added to the epoch start block, only GetLastFinalizedCrossChainHeaderHandler if len(sovereignChainHeader.GetExtendedShardHeaderHashes()) == 0 { return scbp.computeAndRequestEpochStartExtendedHeaderIfMissing(sovereignChainHeader) } @@ -920,6 +918,7 @@ func (scbp *sovereignChainBlockProcessor) checkExtendedShardHeadersValidity(sove return nil } + // we should not have an epoch start block with main chain headers to be processed if sovereignChainHeader.IsStartOfEpochBlock() { return errors.ErrReceivedSovereignEpochStartBlockWithExtendedHeaders } diff --git a/process/track/baseBlockTrack.go b/process/track/baseBlockTrack.go index e4119a376fc..1821bd41a32 100644 --- a/process/track/baseBlockTrack.go +++ b/process/track/baseBlockTrack.go @@ -325,20 +325,6 @@ func (bbt *baseBlockTrack) cleanupTrackedHeadersBehindNonce(shardID uint32, nonc } } -func (bbt *baseBlockTrack) DeleteMainChainHeader(nonce uint64) { - bbt.mutHeaders.Lock() - defer bbt.mutHeaders.Unlock() - - headersForMainShard, ok := bbt.headers[core.MainChainShardId] - if !ok { - log.Error("DeleteMainChainHeader NOT FOUND") - return - } - - log.Error("DeleteMainChainHeader SUCCESS") - delete(headersForMainShard, nonce) -} - // ComputeLongestChain returns the longest valid chain for a given shard from a given header func (bbt *baseBlockTrack) ComputeLongestChain(shardID uint32, header data.HeaderHandler) ([]data.HeaderHandler, [][]byte) { return bbt.blockProcessor.ComputeLongestChain(shardID, header) From d729ce5cc99ef3f69d727b5f67316db1ffddad23 Mon Sep 17 00:00:00 2001 From: MariusC Date: Thu, 6 Feb 2025 15:00:11 +0200 Subject: [PATCH 15/16] FEAT: Update go mod after merge --- cmd/sovereignnode/go.mod | 2 +- cmd/sovereignnode/go.sum | 12 ++++++------ go.mod | 2 +- go.sum | 12 ++++++------ 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/cmd/sovereignnode/go.mod b/cmd/sovereignnode/go.mod index 5ae6372ebb2..a450c3a4b13 100644 --- a/cmd/sovereignnode/go.mod +++ b/cmd/sovereignnode/go.mod @@ -6,7 +6,7 @@ go 1.20 require ( github.com/google/gops v0.3.18 - github.com/multiversx/mx-chain-core-go v1.2.24-0.20241218131403-473853d0b54a + github.com/multiversx/mx-chain-core-go v1.2.25-0.20250131091121-26781bb55fe9 github.com/multiversx/mx-chain-go v1.8.4 github.com/multiversx/mx-chain-logger-go v1.0.15 github.com/multiversx/mx-chain-sovereign-bridge-go v0.0.0-20240116102202-4cf6fbbd95a3 diff --git a/cmd/sovereignnode/go.sum b/cmd/sovereignnode/go.sum index ee0e9534327..4fb5ae87015 100644 --- a/cmd/sovereignnode/go.sum +++ b/cmd/sovereignnode/go.sum @@ -385,12 +385,12 @@ github.com/multiversx/concurrent-map v0.1.4 h1:hdnbM8VE4b0KYJaGY5yJS2aNIW9TFFsUY github.com/multiversx/concurrent-map v0.1.4/go.mod h1:8cWFRJDOrWHOTNSqgYCUvwT7c7eFQ4U2vKMOp4A/9+o= github.com/multiversx/mx-chain-communication-go v1.1.1 h1:y4DoQeQOJTaSUsRzczQFazf8JYQmInddypApqA3AkwM= github.com/multiversx/mx-chain-communication-go v1.1.1/go.mod h1:WK6bP4pGEHGDDna/AYRIMtl6G9OA0NByI1Lw8PmOnRM= -github.com/multiversx/mx-chain-core-go v1.2.24-0.20241218131403-473853d0b54a h1:0w+YAzjGWLV+U3ERmu1TnUUgwjj+3kAbTL4S+vCUa2M= -github.com/multiversx/mx-chain-core-go v1.2.24-0.20241218131403-473853d0b54a/go.mod h1:P/YBoFnt25XUaCQ7Q/SD15vhnc9yV5JDhHxyFO9P8Z0= +github.com/multiversx/mx-chain-core-go v1.2.25-0.20250131091121-26781bb55fe9 h1:hm9b1I3ywGV6vOMFX86sZ5jZ7hdIqq1IH8EPNj0Pliw= +github.com/multiversx/mx-chain-core-go v1.2.25-0.20250131091121-26781bb55fe9/go.mod h1:P/YBoFnt25XUaCQ7Q/SD15vhnc9yV5JDhHxyFO9P8Z0= github.com/multiversx/mx-chain-crypto-go v1.2.12 h1:zWip7rpUS4CGthJxfKn5MZfMfYPjVjIiCID6uX5BSOk= github.com/multiversx/mx-chain-crypto-go v1.2.12/go.mod h1:HzcPpCm1zanNct/6h2rIh+MFrlXbjA5C8+uMyXj3LI4= -github.com/multiversx/mx-chain-es-indexer-go v1.7.11-0.20241211094055-23de51462ca4 h1:IfjK6IQy65eMWr/FEv3CMUz13ZqH9sWLnKv85/AoayM= -github.com/multiversx/mx-chain-es-indexer-go v1.7.11-0.20241211094055-23de51462ca4/go.mod h1:i5xoCUsrHteffxx3yfR8bj9tmpP/DtastZGOc/KRAoY= +github.com/multiversx/mx-chain-es-indexer-go v1.7.15-0.20250131122054-68d88c13fdac h1:AaD3sEsepJTHeLqp20ZvMzTY1KakWXYK2qcJfqfEdZM= +github.com/multiversx/mx-chain-es-indexer-go v1.7.15-0.20250131122054-68d88c13fdac/go.mod h1:u3P9JM8JWPRcYW3X0Lsw06Nf6a6M7cS42XwT4Au/Ar8= github.com/multiversx/mx-chain-logger-go v1.0.15 h1:HlNdK8etyJyL9NQ+6mIXyKPEBo+wRqOwi3n+m2QIHXc= github.com/multiversx/mx-chain-logger-go v1.0.15/go.mod h1:t3PRKaWB1M+i6gUfD27KXgzLJJC+mAQiN+FLlL1yoGQ= github.com/multiversx/mx-chain-scenario-go v1.4.4 h1:DVE2V+FPeyD/yWoC+KEfPK3jsFzHeruelESfpTlf460= @@ -399,8 +399,8 @@ github.com/multiversx/mx-chain-sovereign-bridge-go v0.0.0-20240116102202-4cf6fbb github.com/multiversx/mx-chain-sovereign-bridge-go v0.0.0-20240116102202-4cf6fbbd95a3/go.mod h1:/U8wy9SMizv5oXD6suxWRkusSx2SvLRARS4R4HuaXAA= github.com/multiversx/mx-chain-sovereign-notifier-go v0.0.0-20230929085947-df9b345f49ac h1:GtFxKINPiDCsqjKpTWHFN/5qvQGnFClYH4jMHNrJx/M= github.com/multiversx/mx-chain-sovereign-notifier-go v0.0.0-20230929085947-df9b345f49ac/go.mod h1:syNNd30uEkKsz2V5nXCfv3u+KhkpKVw34+2DsfSuFSE= -github.com/multiversx/mx-chain-storage-go v1.0.16 h1:l2lJq+EAN3YwLbjJrnoKfFd1/1Xmo9DcAUECND2obLs= -github.com/multiversx/mx-chain-storage-go v1.0.16/go.mod h1:uM/z7YyqTOD3wgyH8TfapyEl5sb+7x/Jaxne4cfG4HI= +github.com/multiversx/mx-chain-storage-go v1.0.19 h1:2R35MoSXcuNJOFmV5xEhcXqiEGZw6AYGy9R8J9KH66Q= +github.com/multiversx/mx-chain-storage-go v1.0.19/go.mod h1:Pb/BuVmiFqO66DSZO16KFkSUeom94x3e3Q9IloBvkYI= github.com/multiversx/mx-chain-vm-common-go v1.5.17-0.20241119132002-2fa80c5ec516 h1:PToP1B7aFkXjQBOF5MDCCvsc+ffWVqqBHtmemfCwVA8= github.com/multiversx/mx-chain-vm-common-go v1.5.17-0.20241119132002-2fa80c5ec516/go.mod h1:C7KVj6/+TAhxDjgY7oAMO5wSj7WbBYIJ5TCMzmxk2w0= github.com/multiversx/mx-chain-vm-go v1.5.37 h1:Iy3KCvM+DOq1f9UPA7uYK/rI3ZbBOXc2CVNO2/vm5zw= diff --git a/go.mod b/go.mod index 2bc89d715d5..52816a60de9 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/klauspost/cpuid/v2 v2.2.5 github.com/mitchellh/mapstructure v1.5.0 github.com/multiversx/mx-chain-communication-go v1.1.1 - github.com/multiversx/mx-chain-core-go v1.2.24-0.20241218131403-473853d0b54a + github.com/multiversx/mx-chain-core-go v1.2.25-0.20250131091121-26781bb55fe9 github.com/multiversx/mx-chain-crypto-go v1.2.12 github.com/multiversx/mx-chain-es-indexer-go v1.7.15-0.20250131122054-68d88c13fdac github.com/multiversx/mx-chain-logger-go v1.0.15 diff --git a/go.sum b/go.sum index c81bb613277..e0a362f08ff 100644 --- a/go.sum +++ b/go.sum @@ -387,18 +387,18 @@ github.com/multiversx/concurrent-map v0.1.4 h1:hdnbM8VE4b0KYJaGY5yJS2aNIW9TFFsUY github.com/multiversx/concurrent-map v0.1.4/go.mod h1:8cWFRJDOrWHOTNSqgYCUvwT7c7eFQ4U2vKMOp4A/9+o= github.com/multiversx/mx-chain-communication-go v1.1.1 h1:y4DoQeQOJTaSUsRzczQFazf8JYQmInddypApqA3AkwM= github.com/multiversx/mx-chain-communication-go v1.1.1/go.mod h1:WK6bP4pGEHGDDna/AYRIMtl6G9OA0NByI1Lw8PmOnRM= -github.com/multiversx/mx-chain-core-go v1.2.24-0.20241218131403-473853d0b54a h1:0w+YAzjGWLV+U3ERmu1TnUUgwjj+3kAbTL4S+vCUa2M= -github.com/multiversx/mx-chain-core-go v1.2.24-0.20241218131403-473853d0b54a/go.mod h1:P/YBoFnt25XUaCQ7Q/SD15vhnc9yV5JDhHxyFO9P8Z0= +github.com/multiversx/mx-chain-core-go v1.2.25-0.20250131091121-26781bb55fe9 h1:hm9b1I3ywGV6vOMFX86sZ5jZ7hdIqq1IH8EPNj0Pliw= +github.com/multiversx/mx-chain-core-go v1.2.25-0.20250131091121-26781bb55fe9/go.mod h1:P/YBoFnt25XUaCQ7Q/SD15vhnc9yV5JDhHxyFO9P8Z0= github.com/multiversx/mx-chain-crypto-go v1.2.12 h1:zWip7rpUS4CGthJxfKn5MZfMfYPjVjIiCID6uX5BSOk= github.com/multiversx/mx-chain-crypto-go v1.2.12/go.mod h1:HzcPpCm1zanNct/6h2rIh+MFrlXbjA5C8+uMyXj3LI4= -github.com/multiversx/mx-chain-es-indexer-go v1.7.11-0.20241211094055-23de51462ca4 h1:IfjK6IQy65eMWr/FEv3CMUz13ZqH9sWLnKv85/AoayM= -github.com/multiversx/mx-chain-es-indexer-go v1.7.11-0.20241211094055-23de51462ca4/go.mod h1:i5xoCUsrHteffxx3yfR8bj9tmpP/DtastZGOc/KRAoY= +github.com/multiversx/mx-chain-es-indexer-go v1.7.15-0.20250131122054-68d88c13fdac h1:AaD3sEsepJTHeLqp20ZvMzTY1KakWXYK2qcJfqfEdZM= +github.com/multiversx/mx-chain-es-indexer-go v1.7.15-0.20250131122054-68d88c13fdac/go.mod h1:u3P9JM8JWPRcYW3X0Lsw06Nf6a6M7cS42XwT4Au/Ar8= github.com/multiversx/mx-chain-logger-go v1.0.15 h1:HlNdK8etyJyL9NQ+6mIXyKPEBo+wRqOwi3n+m2QIHXc= github.com/multiversx/mx-chain-logger-go v1.0.15/go.mod h1:t3PRKaWB1M+i6gUfD27KXgzLJJC+mAQiN+FLlL1yoGQ= github.com/multiversx/mx-chain-scenario-go v1.4.4 h1:DVE2V+FPeyD/yWoC+KEfPK3jsFzHeruelESfpTlf460= github.com/multiversx/mx-chain-scenario-go v1.4.4/go.mod h1:kI+TWR3oIEgUkbwkHCPo2CQ3VjIge+ezGTibiSGwMxo= -github.com/multiversx/mx-chain-storage-go v1.0.16 h1:l2lJq+EAN3YwLbjJrnoKfFd1/1Xmo9DcAUECND2obLs= -github.com/multiversx/mx-chain-storage-go v1.0.16/go.mod h1:uM/z7YyqTOD3wgyH8TfapyEl5sb+7x/Jaxne4cfG4HI= +github.com/multiversx/mx-chain-storage-go v1.0.19 h1:2R35MoSXcuNJOFmV5xEhcXqiEGZw6AYGy9R8J9KH66Q= +github.com/multiversx/mx-chain-storage-go v1.0.19/go.mod h1:Pb/BuVmiFqO66DSZO16KFkSUeom94x3e3Q9IloBvkYI= github.com/multiversx/mx-chain-vm-common-go v1.5.17-0.20241119132002-2fa80c5ec516 h1:PToP1B7aFkXjQBOF5MDCCvsc+ffWVqqBHtmemfCwVA8= github.com/multiversx/mx-chain-vm-common-go v1.5.17-0.20241119132002-2fa80c5ec516/go.mod h1:C7KVj6/+TAhxDjgY7oAMO5wSj7WbBYIJ5TCMzmxk2w0= github.com/multiversx/mx-chain-vm-go v1.5.37 h1:Iy3KCvM+DOq1f9UPA7uYK/rI3ZbBOXc2CVNO2/vm5zw= From c08c0616d43731c2982608046db21025aeac488e Mon Sep 17 00:00:00 2001 From: MariusC Date: Thu, 6 Feb 2025 15:05:02 +0200 Subject: [PATCH 16/16] FIX: Go mod + review comm --- cmd/sovereignnode/go.mod | 2 +- cmd/sovereignnode/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- process/block/sovereignChainBlock.go | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cmd/sovereignnode/go.mod b/cmd/sovereignnode/go.mod index a450c3a4b13..ef5ed7a03c1 100644 --- a/cmd/sovereignnode/go.mod +++ b/cmd/sovereignnode/go.mod @@ -6,7 +6,7 @@ go 1.20 require ( github.com/google/gops v0.3.18 - github.com/multiversx/mx-chain-core-go v1.2.25-0.20250131091121-26781bb55fe9 + github.com/multiversx/mx-chain-core-go v1.2.25-0.20250206111825-25fbb1b4851c github.com/multiversx/mx-chain-go v1.8.4 github.com/multiversx/mx-chain-logger-go v1.0.15 github.com/multiversx/mx-chain-sovereign-bridge-go v0.0.0-20240116102202-4cf6fbbd95a3 diff --git a/cmd/sovereignnode/go.sum b/cmd/sovereignnode/go.sum index 4fb5ae87015..afed042539e 100644 --- a/cmd/sovereignnode/go.sum +++ b/cmd/sovereignnode/go.sum @@ -385,8 +385,8 @@ github.com/multiversx/concurrent-map v0.1.4 h1:hdnbM8VE4b0KYJaGY5yJS2aNIW9TFFsUY github.com/multiversx/concurrent-map v0.1.4/go.mod h1:8cWFRJDOrWHOTNSqgYCUvwT7c7eFQ4U2vKMOp4A/9+o= github.com/multiversx/mx-chain-communication-go v1.1.1 h1:y4DoQeQOJTaSUsRzczQFazf8JYQmInddypApqA3AkwM= github.com/multiversx/mx-chain-communication-go v1.1.1/go.mod h1:WK6bP4pGEHGDDna/AYRIMtl6G9OA0NByI1Lw8PmOnRM= -github.com/multiversx/mx-chain-core-go v1.2.25-0.20250131091121-26781bb55fe9 h1:hm9b1I3ywGV6vOMFX86sZ5jZ7hdIqq1IH8EPNj0Pliw= -github.com/multiversx/mx-chain-core-go v1.2.25-0.20250131091121-26781bb55fe9/go.mod h1:P/YBoFnt25XUaCQ7Q/SD15vhnc9yV5JDhHxyFO9P8Z0= +github.com/multiversx/mx-chain-core-go v1.2.25-0.20250206111825-25fbb1b4851c h1:Cz5b0xd9lbSWGIwmfuPuHqL0e5kTun/PW5NpkVRIAXQ= +github.com/multiversx/mx-chain-core-go v1.2.25-0.20250206111825-25fbb1b4851c/go.mod h1:P/YBoFnt25XUaCQ7Q/SD15vhnc9yV5JDhHxyFO9P8Z0= github.com/multiversx/mx-chain-crypto-go v1.2.12 h1:zWip7rpUS4CGthJxfKn5MZfMfYPjVjIiCID6uX5BSOk= github.com/multiversx/mx-chain-crypto-go v1.2.12/go.mod h1:HzcPpCm1zanNct/6h2rIh+MFrlXbjA5C8+uMyXj3LI4= github.com/multiversx/mx-chain-es-indexer-go v1.7.15-0.20250131122054-68d88c13fdac h1:AaD3sEsepJTHeLqp20ZvMzTY1KakWXYK2qcJfqfEdZM= diff --git a/go.mod b/go.mod index 52816a60de9..da227396227 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/klauspost/cpuid/v2 v2.2.5 github.com/mitchellh/mapstructure v1.5.0 github.com/multiversx/mx-chain-communication-go v1.1.1 - github.com/multiversx/mx-chain-core-go v1.2.25-0.20250131091121-26781bb55fe9 + github.com/multiversx/mx-chain-core-go v1.2.25-0.20250206111825-25fbb1b4851c github.com/multiversx/mx-chain-crypto-go v1.2.12 github.com/multiversx/mx-chain-es-indexer-go v1.7.15-0.20250131122054-68d88c13fdac github.com/multiversx/mx-chain-logger-go v1.0.15 diff --git a/go.sum b/go.sum index e0a362f08ff..ef0ac681f72 100644 --- a/go.sum +++ b/go.sum @@ -387,8 +387,8 @@ github.com/multiversx/concurrent-map v0.1.4 h1:hdnbM8VE4b0KYJaGY5yJS2aNIW9TFFsUY github.com/multiversx/concurrent-map v0.1.4/go.mod h1:8cWFRJDOrWHOTNSqgYCUvwT7c7eFQ4U2vKMOp4A/9+o= github.com/multiversx/mx-chain-communication-go v1.1.1 h1:y4DoQeQOJTaSUsRzczQFazf8JYQmInddypApqA3AkwM= github.com/multiversx/mx-chain-communication-go v1.1.1/go.mod h1:WK6bP4pGEHGDDna/AYRIMtl6G9OA0NByI1Lw8PmOnRM= -github.com/multiversx/mx-chain-core-go v1.2.25-0.20250131091121-26781bb55fe9 h1:hm9b1I3ywGV6vOMFX86sZ5jZ7hdIqq1IH8EPNj0Pliw= -github.com/multiversx/mx-chain-core-go v1.2.25-0.20250131091121-26781bb55fe9/go.mod h1:P/YBoFnt25XUaCQ7Q/SD15vhnc9yV5JDhHxyFO9P8Z0= +github.com/multiversx/mx-chain-core-go v1.2.25-0.20250206111825-25fbb1b4851c h1:Cz5b0xd9lbSWGIwmfuPuHqL0e5kTun/PW5NpkVRIAXQ= +github.com/multiversx/mx-chain-core-go v1.2.25-0.20250206111825-25fbb1b4851c/go.mod h1:P/YBoFnt25XUaCQ7Q/SD15vhnc9yV5JDhHxyFO9P8Z0= github.com/multiversx/mx-chain-crypto-go v1.2.12 h1:zWip7rpUS4CGthJxfKn5MZfMfYPjVjIiCID6uX5BSOk= github.com/multiversx/mx-chain-crypto-go v1.2.12/go.mod h1:HzcPpCm1zanNct/6h2rIh+MFrlXbjA5C8+uMyXj3LI4= github.com/multiversx/mx-chain-es-indexer-go v1.7.15-0.20250131122054-68d88c13fdac h1:AaD3sEsepJTHeLqp20ZvMzTY1KakWXYK2qcJfqfEdZM= diff --git a/process/block/sovereignChainBlock.go b/process/block/sovereignChainBlock.go index 0767aaedbc4..9222739664c 100644 --- a/process/block/sovereignChainBlock.go +++ b/process/block/sovereignChainBlock.go @@ -732,7 +732,7 @@ func (scbp *sovereignChainBlockProcessor) shouldRequestEpochStartCrossChainHash( "shouldRequestLastCrossChainHeader", shouldRequestLastCrossChainHeader, ) - return missingHeaderInTracker || missingHeaderInPool + return shouldRequestLastCrossChainHeader } func (scbp *sovereignChainBlockProcessor) computeExistingAndRequestMissingExtendedShardHeaders(sovereignChainHeader data.SovereignChainHeaderHandler) uint32 {