Esempio n. 1
0
        public void Update_head_block()
        {
            debugBridge.UpdateHeadBlock(Arg.Any <Keccak>());
            IDebugRpcModule rpcModule = new DebugRpcModule(LimboLogs.Instance, debugBridge, jsonRpcConfig);

            RpcTest.TestSerializedRequest(rpcModule, "debug_resetHead", TestItem.KeccakA.ToString());
            debugBridge.Received().UpdateHeadBlock(TestItem.KeccakA);
        }
Esempio n. 2
0
        public void Migrate_receipts()
        {
            debugBridge.MigrateReceipts(Arg.Any <long>()).Returns(true);
            IDebugRpcModule rpcModule = new DebugRpcModule(LimboLogs.Instance, debugBridge, jsonRpcConfig);
            string          response  = RpcTest.TestSerializedRequest(rpcModule, "debug_migrateReceipts", "100");

            Assert.NotNull(response);
        }
Esempio n. 3
0
        public void Get_block_rlp_when_missing()
        {
            debugBridge.GetBlockRlp(1).Returns((byte[])null);

            DebugRpcModule       rpcModule = new DebugRpcModule(LimboLogs.Instance, debugBridge, jsonRpcConfig);
            JsonRpcErrorResponse response  = RpcTest.TestRequest <IDebugRpcModule>(rpcModule, "debug_getBlockRlp", "1") as JsonRpcErrorResponse;

            Assert.AreEqual(-32001, response?.Error.Code);
        }
Esempio n. 4
0
        public void Get_from_db_null_value()
        {
            byte[] key = new byte[] { 1, 2, 3 };
            debugBridge.GetDbValue(Arg.Any <string>(), Arg.Any <byte[]>()).Returns((byte[])null);

            IConfigProvider        configProvider = Substitute.For <IConfigProvider>();
            DebugRpcModule         rpcModule      = new DebugRpcModule(LimboLogs.Instance, debugBridge, jsonRpcConfig);
            JsonRpcSuccessResponse response       = RpcTest.TestRequest <IDebugRpcModule>(rpcModule, "debug_getFromDb", "STATE", key.ToHexString(true)) as JsonRpcSuccessResponse;

            Assert.NotNull(response);
        }
Esempio n. 5
0
        public void Get_block_rlp_by_hash()
        {
            BlockDecoder decoder = new BlockDecoder();
            Rlp          rlp     = decoder.Encode(Build.A.Block.WithNumber(1).TestObject);

            debugBridge.GetBlockRlp(Keccak.Zero).Returns(rlp.Bytes);

            DebugRpcModule         rpcModule = new DebugRpcModule(LimboLogs.Instance, debugBridge, jsonRpcConfig);
            JsonRpcSuccessResponse response  = RpcTest.TestRequest <IDebugRpcModule>(rpcModule, "debug_getBlockRlpByHash", $"{Keccak.Zero.Bytes.ToHexString()}") as JsonRpcSuccessResponse;

            Assert.AreEqual(rlp.Bytes, (byte[])response?.Result);
        }
Esempio n. 6
0
        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 TraceBlockByNumber_Fail()
        {
            var blockNumber = BlockParameter.Latest;

            debugBridge
            .GetBlockTrace(blockNumber, Arg.Any <CancellationToken>(), Arg.Any <GethTraceOptions>())
            .Returns(default(GethLikeTxTrace[]));

            var rpcModule = new DebugRpcModule(LimboLogs.Instance, debugBridge, jsonRpcConfig);
            var actual    = rpcModule.debug_traceBlockByNumber(blockNumber);
            var expected  = ResultWrapper <GethLikeTxTrace[]> .Fail($"Trace is null for block {blockNumber}", ErrorCodes.ResourceNotFound);

            actual.Should().BeEquivalentTo(expected);
        }
        public void TraceBlock_Fail()
        {
            var blockRlp = new Rlp(TestItem.RandomDataA);

            debugBridge
            .GetBlockTrace(blockRlp, Arg.Any <CancellationToken>(), Arg.Any <GethTraceOptions>())
            .Returns(default(GethLikeTxTrace[]));

            var rpcModule = new DebugRpcModule(LimboLogs.Instance, debugBridge, jsonRpcConfig);
            var actual    = rpcModule.debug_traceBlock(blockRlp.Bytes);
            var expected  = ResultWrapper <GethLikeTxTrace[]> .Fail($"Trace is null for RLP {blockRlp.Bytes.ToHexString()}", ErrorCodes.ResourceNotFound);

            actual.Should().BeEquivalentTo(expected);
        }
        public void TraceBlockByNumber_Success()
        {
            var traces      = Enumerable.Repeat(MockGethLikeTrace(), 2).ToArray();
            var tracesClone = TestItem.CloneObject(traces);
            var blockNumber = BlockParameter.Latest;

            debugBridge
            .GetBlockTrace(blockNumber, Arg.Any <CancellationToken>(), Arg.Any <GethTraceOptions>())
            .Returns(traces);

            var rpcModule = new DebugRpcModule(LimboLogs.Instance, debugBridge, jsonRpcConfig);
            var actual    = rpcModule.debug_traceBlockByNumber(blockNumber);
            var expected  = ResultWrapper <GethLikeTxTrace[]> .Success(tracesClone);

            actual.Should().BeEquivalentTo(expected);
        }
Esempio n. 10
0
        public void Get_chain_level(string parameter)
        {
            debugBridge.GetLevelInfo(1).Returns(
                new ChainLevelInfo(
                    true,
                    new[]
            {
                new BlockInfo(TestItem.KeccakA, 1000),
                new BlockInfo(TestItem.KeccakB, 1001),
            }));

            DebugRpcModule         rpcModule  = new DebugRpcModule(LimboLogs.Instance, debugBridge, jsonRpcConfig);
            JsonRpcSuccessResponse response   = RpcTest.TestRequest <IDebugRpcModule>(rpcModule, "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);
        }
Esempio n. 11
0
        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);

            debugBridge.GetTransactionTrace(Arg.Any <Keccak>(), Arg.Any <CancellationToken>(), Arg.Any <GethTraceOptions>()).Returns(trace);

            DebugRpcModule rpcModule = new DebugRpcModule(LimboLogs.Instance, debugBridge, jsonRpcConfig);
            string         response  = RpcTest.TestSerializedRequest <IDebugRpcModule>(DebugModuleFactory.Converters, rpcModule, "debug_traceTransaction", TestItem.KeccakA.ToString(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\":[\"0000000000000000000000000000000000000000000000000000000000000007\",\"0000000000000000000000000000000000000000000000000000000000000008\"],\"memory\":[\"0000000000000000000000000000000000000000000000000000000000000005\",\"0000000000000000000000000000000000000000000000000000000000000006\"],\"storage\":{\"0000000000000000000000000000000000000000000000000000000000000001\":\"0000000000000000000000000000000000000000000000000000000000000002\",\"0000000000000000000000000000000000000000000000000000000000000003\":\"0000000000000000000000000000000000000000000000000000000000000004\"}}]},\"id\":67}", response);
        }