public void Get_from_db_null_value() { IDebugBridge debugBridge = Substitute.For <IDebugBridge>(); byte[] key = new byte[] { 1, 2, 3 }; debugBridge.GetDbValue(Arg.Any <string>(), Arg.Any <byte[]>()).Returns((byte[])null); IConfigProvider configProvider = Substitute.For <IConfigProvider>(); IJsonRpcModelMapper modelMapper = new JsonRpcModelMapper(); DebugModule module = new DebugModule(configProvider, NullLogManager.Instance, debugBridge, modelMapper, new UnforgivingJsonSerializer()); JsonRpcResponse response = RpcTest.TestRequest <IDebugModule>(module, "debug_getFromDb", "STATE", key.ToHexString()); Assert.IsNull(response.Error, "error"); Assert.IsNull(response.Result, "result"); }
public void Get_from_db() { IDebugBridge debugBridge = Substitute.For <IDebugBridge>(); byte[] key = new byte[] { 1, 2, 3 }; byte[] value = new byte[] { 4, 5, 6 }; debugBridge.GetDbValue(Arg.Any <string>(), Arg.Any <byte[]>()).Returns(value); IConfigProvider configProvider = Substitute.For <IConfigProvider>(); IJsonRpcModelMapper modelMapper = new JsonRpcModelMapper(); DebugModule module = new DebugModule(configProvider, NullLogManager.Instance, debugBridge, modelMapper, new UnforgivingJsonSerializer()); JsonRpcResponse response = RpcTest.TestRequest <IDebugModule>(module, "debug_getFromDb", "STATE", key.ToHexString()); byte[] result = Bytes.FromHexString((string)response.Result); Assert.AreEqual(value, result); }
private void RegisterJsonRpcModules() { if (!_initConfig.JsonRpcEnabled) { return; } IReadOnlyDbProvider rpcDbProvider = new ReadOnlyDbProvider(_dbProvider, false); AlternativeChain rpcChain = new AlternativeChain(_blockTree, _blockValidator, _rewardCalculator, _specProvider, rpcDbProvider, _recoveryStep, _logManager, _transactionPool, _receiptStorage); ITracer tracer = new Tracer(rpcChain.Processor, _receiptStorage, _blockTree, _dbProvider.TraceDb); IFilterStore filterStore = new FilterStore(); IFilterManager filterManager = new FilterManager(filterStore, _blockProcessor, _transactionPool, _logManager); _wallet = HiveEnabled ? (IWallet) new HiveWallet() : new DevWallet(_logManager); RpcState rpcState = new RpcState(_blockTree, _specProvider, rpcDbProvider, _logManager); //creating blockchain bridge var blockchainBridge = new BlockchainBridge( _ethereumSigner, rpcState.StateProvider, rpcState.BlockTree, _transactionPool, _transactionPoolInfoProvider, _receiptStorage, filterStore, filterManager, _wallet, rpcState.TransactionProcessor); TransactionPool debugTransactionPool = new TransactionPool(new PersistentTransactionStorage(_dbProvider.PendingTxsDb, _specProvider), new PendingTransactionThresholdValidator(_initConfig.ObsoletePendingTransactionInterval, _initConfig.RemovePendingTransactionInterval), _timestamp, _ethereumSigner, _logManager, _initConfig.RemovePendingTransactionInterval, _initConfig.PeerNotificationThreshold); var debugReceiptStorage = new PersistentReceiptStorage(_dbProvider.ReceiptsDb, _specProvider); AlternativeChain debugChain = new AlternativeChain(_blockTree, _blockValidator, _rewardCalculator, _specProvider, rpcDbProvider, _recoveryStep, _logManager, debugTransactionPool, debugReceiptStorage); IReadOnlyDbProvider debugDbProvider = new ReadOnlyDbProvider(_dbProvider, false); var debugBridge = new DebugBridge(debugDbProvider, tracer, debugChain.Processor); JsonRpcModelMapper mapper = new JsonRpcModelMapper(); EthModule module = new EthModule(_jsonSerializer, _configProvider, mapper, _logManager, blockchainBridge); _rpcModuleProvider.Register <IEthModule>(module); DebugModule debugModule = new DebugModule(_configProvider, _logManager, debugBridge, mapper, _jsonSerializer); _rpcModuleProvider.Register <IDebugModule>(debugModule); if (_sealEngine is CliqueSealEngine) { CliqueModule cliqueModule = new CliqueModule(_configProvider, _logManager, _jsonSerializer, new CliqueBridge(_blockProducer as CliqueBlockProducer, _blockTree)); _rpcModuleProvider.Register <ICliqueModule>(cliqueModule); } AdminModule adminModule = new AdminModule(_configProvider, _logManager, _jsonSerializer); _rpcModuleProvider.Register <IAdminModule>(adminModule); TxPoolModule txPoolModule = new TxPoolModule(_configProvider, _logManager, _jsonSerializer, blockchainBridge, mapper); _rpcModuleProvider.Register <ITxPoolModule>(txPoolModule); if (_initConfig.NetworkEnabled && _initConfig.SynchronizationEnabled) { NetModule netModule = new NetModule(_configProvider, _logManager, _jsonSerializer, new NetBridge(_syncManager)); _rpcModuleProvider.Register <INetModule>(netModule); } TraceModule traceModule = new TraceModule(_configProvider, _logManager, _jsonSerializer, tracer); _rpcModuleProvider.Register <ITraceModule>(traceModule); _rpcModuleProvider.Register <INethmModule>(new NethmModule(_configProvider, _logManager, _jsonSerializer, _enode)); }