public DebugRpcModule(ILogManager logManager, IDebugBridge debugBridge, IJsonRpcConfig jsonRpcConfig) { _debugBridge = debugBridge ?? throw new ArgumentNullException(nameof(debugBridge)); _jsonRpcConfig = jsonRpcConfig ?? throw new ArgumentNullException(nameof(jsonRpcConfig)); _logger = logManager.GetClassLogger(); _traceTimeout = TimeSpan.FromMilliseconds(_jsonRpcConfig.Timeout); }
public void Get_block_rlp_when_missing() { IDebugBridge debugBridge = Substitute.For <IDebugBridge>(); debugBridge.GetBlockRlp(1).Returns((byte[])null); DebugModule module = new DebugModule(NullLogManager.Instance, debugBridge); JsonRpcErrorResponse response = RpcTest.TestRequest <IDebugModule>(module, "debug_getBlockRlp", "1") as JsonRpcErrorResponse; Assert.AreEqual(-32601, response.Error.Code); }
public void Get_block_rlp() { BlockDecoder decoder = new BlockDecoder(); IDebugBridge debugBridge = Substitute.For <IDebugBridge>(); Rlp rlp = decoder.Encode(Build.A.Block.WithNumber(1).TestObject); debugBridge.GetBlockRlp(1).Returns(rlp.Bytes); DebugRpcModule rpcModule = new DebugRpcModule(LimboLogs.Instance, debugBridge, jsonRpcConfig); JsonRpcSuccessResponse response = RpcTest.TestRequest <IDebugRpcModule>(rpcModule, "debug_getBlockRlp", "1") as JsonRpcSuccessResponse; Assert.AreEqual(rlp.Bytes, (byte[])response?.Result); }
public void Get_block_rlp_by_hash_when_missing() { BlockDecoder decoder = new BlockDecoder(); IDebugBridge debugBridge = Substitute.For <IDebugBridge>(); Rlp rlp = decoder.Encode(Build.A.Block.WithNumber(1).TestObject); debugBridge.GetBlockRlp(Keccak.Zero).Returns((byte[])null); DebugModule module = new DebugModule(NullLogManager.Instance, debugBridge); JsonRpcErrorResponse response = RpcTest.TestRequest <IDebugModule>(module, "debug_getBlockRlpByHash", $"{Keccak.Zero.Bytes.ToHexString()}") as JsonRpcErrorResponse; Assert.AreEqual(-32601, response.Error.Code); }
public void Get_block_rlp_by_hash() { BlockDecoder decoder = new BlockDecoder(); IDebugBridge debugBridge = Substitute.For <IDebugBridge>(); Rlp rlp = decoder.Encode(Build.A.Block.WithNumber(1).TestObject); debugBridge.GetBlockRlp(Keccak.Zero).Returns(rlp.Bytes); DebugModule module = new DebugModule(LimboLogs.Instance, debugBridge); JsonRpcSuccessResponse response = RpcTest.TestRequest <IDebugModule>(module, "debug_getBlockRlpByHash", $"{Keccak.Zero.Bytes.ToHexString()}") as JsonRpcSuccessResponse; Assert.AreEqual(rlp.Bytes, (byte[])response?.Result); }
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>(); DebugModule module = new DebugModule(LimboLogs.Instance, debugBridge); JsonRpcSuccessResponse response = RpcTest.TestRequest <IDebugModule>(module, "debug_getFromDb", "STATE", key.ToHexString(true)) as JsonRpcSuccessResponse; Assert.NotNull(response); }
public void Get_block_rlp() { BlockDecoder decoder = new BlockDecoder(); IDebugBridge debugBridge = Substitute.For <IDebugBridge>(); Rlp rlp = decoder.Encode(Build.A.Block.WithNumber(1).TestObject); debugBridge.GetBlockRlp(1).Returns(rlp.Bytes); DebugModule module = new DebugModule(NullLogManager.Instance, debugBridge); JsonRpcResponse response = RpcTest.TestRequest <IDebugModule>(module, "debug_getBlockRlp", "1"); Assert.IsNotInstanceOf <JsonRpcErrorResponse>(response); Assert.AreEqual(rlp.Bytes, (byte[])response.Result); }
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>(); DebugModule module = new DebugModule(NullLogManager.Instance, debugBridge); JsonRpcResponse response = RpcTest.TestRequest <IDebugModule>(module, "debug_getFromDb", "STATE", key.ToHexString(true)); Assert.IsNull(response.Error, response.Error?.Message); 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>(); DebugModule module = new DebugModule(NullLogManager.Instance, debugBridge); JsonRpcSuccessResponse response = RpcTest.TestRequest <IDebugModule>(module, "debug_getFromDb", "STATE", key.ToHexString(true)) as JsonRpcSuccessResponse; byte[] result = response.Result as byte[]; }
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>(); DebugModule module = new DebugModule(configProvider, NullLogManager.Instance, debugBridge, new UnforgivingJsonSerializer()); JsonRpcResponse response = RpcTest.TestRequest <IDebugModule>(module, "debug_getFromDb", "STATE", key.ToHexString(true)); byte[] result = response.Result as byte[]; Assert.AreEqual(value, result, response.Error?.Message); }
public void Get_trace() { GethTxTraceEntry entry = new GethTxTraceEntry(); entry.Storage = new Dictionary <string, string> { { "1".PadLeft(64, '0'), "2".PadLeft(64, '0') }, { "3".PadLeft(64, '0'), "4".PadLeft(64, '0') }, }; entry.Memory = new List <string> { "5".PadLeft(64, '0'), "6".PadLeft(64, '0') }; entry.Stack = new List <string> { "7".PadLeft(64, '0'), "8".PadLeft(64, '0') }; entry.Operation = "STOP"; entry.Gas = 22000; entry.GasCost = 1; entry.Depth = 1; var trace = new GethLikeTxTrace(); trace.ReturnValue = Bytes.FromHexString("a2"); trace.Entries.Add(entry); IDebugBridge debugBridge = Substitute.For <IDebugBridge>(); debugBridge.GetTransactionTrace(Arg.Any <Keccak>()).Returns(trace); IConfigProvider configProvider = Substitute.For <IConfigProvider>(); DebugModule module = new DebugModule(configProvider, NullLogManager.Instance, debugBridge, new UnforgivingJsonSerializer()); string response = RpcTest.TestSerializedRequest <IDebugModule>(module, "debug_traceTransaction", TestObject.KeccakA.ToString(true)); Assert.AreEqual("{\"id\":67,\"jsonrpc\":\"2.0\",\"result\":{\"gas\":\"0x0\",\"failed\":false,\"returnValue\":\"0xa2\",\"structLogs\":[{\"pc\":0,\"op\":\"STOP\",\"gas\":22000,\"gasCost\":1,\"depth\":1,\"error\":null,\"stack\":[\"0000000000000000000000000000000000000000000000000000000000000007\",\"0000000000000000000000000000000000000000000000000000000000000008\"],\"memory\":[\"0000000000000000000000000000000000000000000000000000000000000005\",\"0000000000000000000000000000000000000000000000000000000000000006\"],\"storage\":{\"0000000000000000000000000000000000000000000000000000000000000001\":\"0000000000000000000000000000000000000000000000000000000000000002\",\"0000000000000000000000000000000000000000000000000000000000000003\":\"0000000000000000000000000000000000000000000000000000000000000004\"}}]}}", response); }
public void Get_chain_level(string parameter) { IDebugBridge debugBridge = Substitute.For <IDebugBridge>(); debugBridge.GetLevelInfo(1).Returns( new ChainLevelInfo( true, new[] { new BlockInfo(TestItem.KeccakA, 1000), new BlockInfo(TestItem.KeccakB, 1001), })); DebugModule module = new DebugModule(LimboLogs.Instance, debugBridge); JsonRpcSuccessResponse response = RpcTest.TestRequest <IDebugModule>(module, "debug_getChainLevel", parameter) as JsonRpcSuccessResponse; ChainLevelForRpc chainLevel = response?.Result as ChainLevelForRpc; Assert.NotNull(chainLevel); Assert.AreEqual(true, chainLevel.HasBlockOnMainChain); Assert.AreEqual(2, chainLevel.BlockInfos.Length); }
public void Get_trace_with_options() { GethTxTraceEntry entry = new GethTxTraceEntry(); entry.Storage = new Dictionary <string, string> { { "1".PadLeft(64, '0'), "2".PadLeft(64, '0') }, { "3".PadLeft(64, '0'), "4".PadLeft(64, '0') }, }; entry.Memory = new List <string> { "5".PadLeft(64, '0'), "6".PadLeft(64, '0') }; entry.Stack = new List <string> { }; entry.Operation = "STOP"; entry.Gas = 22000; entry.GasCost = 1; entry.Depth = 1; var trace = new GethLikeTxTrace(); trace.ReturnValue = Bytes.FromHexString("a2"); trace.Entries.Add(entry); IDebugBridge debugBridge = Substitute.For <IDebugBridge>(); debugBridge.GetTransactionTrace(Arg.Any <Keccak>(), Arg.Any <GethTraceOptions>()).Returns(trace); DebugModule module = new DebugModule(LimboLogs.Instance, debugBridge); string response = RpcTest.TestSerializedRequest <IDebugModule>(DebugModuleFactory.Converters, module, "debug_traceTransaction", TestItem.KeccakA.ToString(true), "{disableStack : true}"); Assert.AreEqual("{\"jsonrpc\":\"2.0\",\"result\":{\"gas\":\"0x0\",\"failed\":false,\"returnValue\":\"0xa2\",\"structLogs\":[{\"pc\":0,\"op\":\"STOP\",\"gas\":22000,\"gasCost\":1,\"depth\":1,\"error\":null,\"stack\":[],\"memory\":[\"0000000000000000000000000000000000000000000000000000000000000005\",\"0000000000000000000000000000000000000000000000000000000000000006\"],\"storage\":{\"0000000000000000000000000000000000000000000000000000000000000001\":\"0000000000000000000000000000000000000000000000000000000000000002\",\"0000000000000000000000000000000000000000000000000000000000000003\":\"0000000000000000000000000000000000000000000000000000000000000004\"}}]},\"id\":67}", response); }
public DebugModule(ILogManager logManager, IDebugBridge debugBridge) { _debugBridge = debugBridge ?? throw new ArgumentNullException(nameof(debugBridge)); _logger = logManager.GetClassLogger(); }
public DebugModule(ILogManager logManager, IDebugBridge debugBridge) : base(logManager) { _debugBridge = debugBridge; }
public DebugModule(IConfigProvider configProvider, ILogManager logManager, IDebugBridge debugBridge, IJsonSerializer jsonSerializer) : base(configProvider, logManager, jsonSerializer) { _debugBridge = debugBridge; }
public DebugModule(IConfigProvider configurationProvider, ILogManager logManager, IDebugBridge debugBridge, IJsonRpcModelMapper modelMapper, IJsonSerializer jsonSerializer) : base(configurationProvider, logManager, jsonSerializer) { _debugBridge = debugBridge; _modelMapper = modelMapper; }