From 48ab8e73bdc1a233bbde784b113d72c3cd4cb8b9 Mon Sep 17 00:00:00 2001 From: axenteoctavian Date: Mon, 15 Jan 2024 16:12:20 +0200 Subject: [PATCH] fixes after review --- factory/api/apiResolverFactory.go | 16 ++++------- factory/api/apiResolverFactory_test.go | 38 +++++++++++++++++++------- 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/factory/api/apiResolverFactory.go b/factory/api/apiResolverFactory.go index 4245c42cde6..2a6cfffe304 100644 --- a/factory/api/apiResolverFactory.go +++ b/factory/api/apiResolverFactory.go @@ -416,38 +416,32 @@ func createArgsSCQueryService(args *scQueryElementArgs) (*smartContract.ArgsNewS MissingTrieNodesNotifier: syncer.NewMissingTrieNodesNotifier(), } - var apiBlockchain data.ChainHandler - var accAdapter state.AccountsAdapterAPI var vmFactory process.VirtualMachinesContainerFactory maxGasForVmQueries := args.generalConfig.VirtualMachine.GasConfig.ShardMaxGasPerVmQuery if args.processComponents.ShardCoordinator().SelfId() == core.MetachainShardId { maxGasForVmQueries = args.generalConfig.VirtualMachine.GasConfig.MetaMaxGasPerVmQuery - apiBlockchain, err = blockchain.NewMetaChain(disabled.NewAppStatusHandler()) + argsHook.BlockChain, err = blockchain.NewMetaChain(disabled.NewAppStatusHandler()) if err != nil { return nil, err } - argsHook.BlockChain = apiBlockchain - accAdapter, err = createNewAccountsAdapterApi(args, apiBlockchain) + argsHook.Accounts, err = createNewAccountsAdapterApi(args, argsHook.BlockChain) if err != nil { return nil, err } - argsHook.Accounts = accAdapter vmFactory, err = createMetaVmContainerFactory(args, argsHook) } else { - apiBlockchain, err = blockchain.NewBlockChain(disabled.NewAppStatusHandler()) + argsHook.BlockChain, err = blockchain.NewBlockChain(disabled.NewAppStatusHandler()) if err != nil { return nil, err } - argsHook.BlockChain = apiBlockchain - accAdapter, err = createNewAccountsAdapterApi(args, apiBlockchain) + argsHook.Accounts, err = createNewAccountsAdapterApi(args, argsHook.BlockChain) if err != nil { return nil, err } - argsHook.Accounts = accAdapter vmFactory, err = createShardVmContainerFactory(args, argsHook) } @@ -482,7 +476,7 @@ func createArgsSCQueryService(args *scQueryElementArgs) (*smartContract.ArgsNewS EconomicsFee: args.coreComponents.EconomicsData(), BlockChainHook: vmFactory.BlockChainHookImpl(), MainBlockChain: args.dataComponents.Blockchain(), - APIBlockChain: apiBlockchain, + APIBlockChain: argsHook.BlockChain, WasmVMChangeLocker: args.coreComponents.WasmVMChangeLocker(), Bootstrapper: args.bootstrapper, AllowExternalQueriesChan: args.allowVMQueriesChan, diff --git a/factory/api/apiResolverFactory_test.go b/factory/api/apiResolverFactory_test.go index 25b29965ecf..d0916752f85 100644 --- a/factory/api/apiResolverFactory_test.go +++ b/factory/api/apiResolverFactory_test.go @@ -287,7 +287,7 @@ func TestCreateApiResolver(t *testing.T) { }) } -func createMockSCQueryElementArgs() api.SCQueryElementArgs { +func createMockSCQueryElementArgs(shardId uint32) api.SCQueryElementArgs { return api.SCQueryElementArgs{ GeneralConfig: &config.Config{ BuiltInFunctions: config.BuiltInFunctionsConfig{ @@ -356,7 +356,9 @@ func createMockSCQueryElementArgs() api.SCQueryElementArgs { DataPool: &dataRetriever.PoolsHolderMock{}, }, ProcessComponents: &mock.ProcessComponentsMock{ - ShardCoord: &testscommon.ShardsCoordinatorMock{}, + ShardCoord: &testscommon.ShardsCoordinatorMock{ + CurrentShard: shardId, + }, }, GasScheduleNotifier: &testscommon.GasScheduleNotifierMock{ LatestGasScheduleCalled: func() map[string]map[string]uint64 { @@ -424,7 +426,7 @@ func TestCreateApiResolver_createScQueryElement(t *testing.T) { t.Run("nil guardian handler should error", func(t *testing.T) { t.Parallel() - args := createMockSCQueryElementArgs() + args := createMockSCQueryElementArgs(0) args.GuardedAccountHandler = nil scQueryService, err := api.CreateScQueryElement(args) require.Equal(t, process.ErrNilGuardedAccountHandler, err) @@ -433,7 +435,7 @@ func TestCreateApiResolver_createScQueryElement(t *testing.T) { t.Run("DecodeAddresses fails", func(t *testing.T) { t.Parallel() - args := createMockSCQueryElementArgs() + args := createMockSCQueryElementArgs(0) args.CoreComponents = &mock.CoreComponentsMock{ AddrPubKeyConv: nil, } @@ -445,7 +447,7 @@ func TestCreateApiResolver_createScQueryElement(t *testing.T) { t.Run("createBuiltinFuncs fails", func(t *testing.T) { t.Parallel() - args := createMockSCQueryElementArgs() + args := createMockSCQueryElementArgs(0) coreCompMock := args.CoreComponents.(*mock.CoreComponentsMock) coreCompMock.IntMarsh = nil scQueryService, err := api.CreateScQueryElement(args) @@ -456,7 +458,7 @@ func TestCreateApiResolver_createScQueryElement(t *testing.T) { t.Run("NewCache fails", func(t *testing.T) { t.Parallel() - args := createMockSCQueryElementArgs() + args := createMockSCQueryElementArgs(0) args.GeneralConfig.SmartContractDataPool = config.CacheConfig{ Type: "LRU", SizeInBytes: 1, @@ -469,7 +471,7 @@ func TestCreateApiResolver_createScQueryElement(t *testing.T) { t.Run("metachain - NewVMContainerFactory fails", func(t *testing.T) { t.Parallel() - args := createMockSCQueryElementArgs() + args := createMockSCQueryElementArgs(0) args.ProcessComponents = &mock.ProcessComponentsMock{ ShardCoord: &testscommon.ShardsCoordinatorMock{ SelfIDCalled: func() uint32 { @@ -487,7 +489,7 @@ func TestCreateApiResolver_createScQueryElement(t *testing.T) { t.Run("shard - NewVMContainerFactory fails", func(t *testing.T) { t.Parallel() - args := createMockSCQueryElementArgs() + args := createMockSCQueryElementArgs(0) coreCompMock := args.CoreComponents.(*mock.CoreComponentsMock) coreCompMock.Hash = nil scQueryService, err := api.CreateScQueryElement(args) @@ -504,7 +506,7 @@ func TestCreateApiResolver_createArgsSCQueryService(t *testing.T) { t.Run("sovereign chain should add systemVM", func(t *testing.T) { t.Parallel() - args := createMockSCQueryElementArgs() + args := createMockSCQueryElementArgs(0) args.ChainRunType = common.ChainRunTypeSovereign argsScQueryService, err := api.CreateArgsSCQueryService(args) @@ -526,7 +528,7 @@ func TestCreateApiResolver_createArgsSCQueryService(t *testing.T) { t.Run("regular chain should NOT add systemVM", func(t *testing.T) { t.Parallel() - args := createMockSCQueryElementArgs() + args := createMockSCQueryElementArgs(0) args.ChainRunType = common.ChainRunTypeRegular argsScQueryService, err := api.CreateArgsSCQueryService(args) @@ -544,4 +546,20 @@ func TestCreateApiResolver_createArgsSCQueryService(t *testing.T) { require.NotNil(t, wasmvm) require.Equal(t, "*hostCore.vmHost", fmt.Sprintf("%T", wasmvm)) }) + t.Run("metachain chain should NOT add systemVM", func(t *testing.T) { + t.Parallel() + + args := createMockSCQueryElementArgs(common.MetachainShardId) + args.ChainRunType = common.MetachainShardName + + argsScQueryService, err := api.CreateArgsSCQueryService(args) + require.Nil(t, err) + require.NotNil(t, argsScQueryService.VmContainer) + + require.Equal(t, 1, argsScQueryService.VmContainer.Len()) + + svm, err := argsScQueryService.VmContainer.Get(vmFactory.SystemVirtualMachine) + require.Nil(t, err) + require.NotNil(t, svm) + }) }