public void Can_do_roundtrip_null([Values(true, false)] bool valueDecoder) { BlockDecoder decoder = new BlockDecoder(); Rlp result = decoder.Encode((Block)null); Block decoded = valueDecoder ? Rlp.Decode <Block>(result.Bytes.AsSpan()) : Rlp.Decode <Block>(result); Assert.IsNull(decoded); }
public void Can_do_roundtrip_null() { BlockDecoder decoder = new BlockDecoder(); Rlp result = decoder.Encode((Block)null); Block decoded = Rlp.Decode <Block>(result); Assert.IsNull(decoded); }
public void Can_do_roundtrip_regression() { BlockDecoder decoder = new BlockDecoder(); Block decoded = decoder.Decode(new RlpStream(Bytes.FromHexString(regression5644))); Rlp encoded = decoder.Encode(decoded); Assert.AreEqual(encoded.Bytes.ToHexString(), encoded.Bytes.ToHexString()); }
public void Can_do_roundtrip_regression([Values(true, false)] bool valueDecoder) { BlockDecoder decoder = new BlockDecoder(); var bytes = Bytes.FromHexString(regression5644); var valueDecoderContext = new Rlp.ValueDecoderContext(bytes); Block decoded = valueDecoder ? decoder.Decode(ref valueDecoderContext) : decoder.Decode(new RlpStream(bytes)); Rlp encoded = decoder.Encode(decoded); Assert.AreEqual(encoded.Bytes.ToHexString(), encoded.Bytes.ToHexString()); }
public void Can_do_roundtrip_scenarios() { BlockDecoder decoder = new BlockDecoder(); foreach (Block block in _scenarios) { Rlp encoded = decoder.Encode(block); Block decoded = decoder.Decode(new RlpStream(encoded.Bytes)); Rlp encoded2 = decoder.Encode(decoded); Assert.AreEqual(encoded.Bytes.ToHexString(), encoded2.Bytes.ToHexString()); } }
public void Get_block_rlp_by_hash_when_missing() { BlockDecoder decoder = new BlockDecoder(); Rlp rlp = decoder.Encode(Build.A.Block.WithNumber(1).TestObject); debugBridge.GetBlockRlp(Keccak.Zero).Returns((byte[])null); DebugModule module = new DebugModule(LimboLogs.Instance, debugBridge, jsonRpcConfig); JsonRpcErrorResponse response = RpcTest.TestRequest <IDebugModule>(module, "debug_getBlockRlpByHash", $"{Keccak.Zero.Bytes.ToHexString()}") as JsonRpcErrorResponse; Assert.AreEqual(-32001, response.Error.Code); }
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); }
public void Can_do_roundtrip_scenarios([Values(true, false)] bool valueDecoder) { BlockDecoder decoder = new BlockDecoder(); foreach (Block block in _scenarios) { Rlp encoded = decoder.Encode(block); var valueDecoderContext = new Rlp.ValueDecoderContext(encoded.Bytes); Block decoded = valueDecoder ? decoder.Decode(ref valueDecoderContext) : decoder.Decode(new RlpStream(encoded.Bytes)); Rlp encoded2 = decoder.Encode(decoded); Assert.AreEqual(encoded.Bytes.ToHexString(), encoded2.Bytes.ToHexString()); } }
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() { 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(NullLogManager.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_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); JsonRpcResponse response = RpcTest.TestRequest <IDebugModule>(module, "debug_getBlockRlpByHash", $"{Keccak.Zero.Bytes.ToHexString()}"); 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); 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 Init(string path) { var dbOnTheRocks = new BlocksRocksDb(path, new DbConfig(), LimboLogs.Instance); var blocksBytes = dbOnTheRocks.GetAll(); var blockDecoder = new BlockDecoder(); var blocks = blocksBytes .Select(b => blockDecoder.Decode(b.Value.AsRlpStream())) .OrderBy(b => b.Number) .ToList(); var window = new Window("Blocks") { X = 0, Y = 10, Width = Dim.Fill(), Height = Dim.Fill() }; if (!blocks.Any()) { MessageBox.Query(40, 7, "Info", "No data."); window.FocusPrev(); return; } var y = 1; foreach (var block in blocks) { var blockBtn = new Button(1, y++, $"Number: {block.Number}, Hash: {block.Hash}"); blockBtn.Clicked = () => { var blockDetailsWindow = new Window("Block details") { X = 0, Y = 10, Width = Dim.Fill(), Height = Dim.Fill() }; Application.Top.Add(blockDetailsWindow); var serializer = new EthereumJsonSerializer(); var blockLbl = new Label(1, 1, serializer.Serialize(block, true)); blockDetailsWindow.Add(blockLbl); Application.Run(blockDetailsWindow); }; window.Add(blockBtn); } Application.Top.Add(window); Application.Run(window); }
public void Get_length_null() { BlockDecoder decoder = new BlockDecoder(); Assert.AreEqual(1, decoder.GetLength(null, RlpBehaviors.None)); }