@Test(expected = RLPException.class) public void deserializeDifferentPacketData() { final byte[] r = new byte[64]; new Random().nextBytes(r); final BytesValue target = BytesValue.wrap(r); final FindNeighborsPacketData packet = FindNeighborsPacketData.create(target); final BytesValue serialized = RLP.encode(packet::writeTo); assertNotNull(serialized); NeighborsPacketData.readFrom(RLP.input(serialized)); }
@Test public void serializeDeserializeFindNeighborsPacketData() { final byte[] r = new byte[64]; new Random().nextBytes(r); final BytesValue target = BytesValue.wrap(r); final FindNeighborsPacketData packet = FindNeighborsPacketData.create(target); final BytesValue serialized = RLP.encode(packet::writeTo); assertNotNull(serialized); final FindNeighborsPacketData deserialized = FindNeighborsPacketData.readFrom(RLP.input(serialized)); assertThat(deserialized.getTarget()).isEqualTo(target); // Fuzziness: allow a skew of 1.5 seconds between the time the message was generated until the // assertion. assertThat(deserialized.getExpiration()) .isCloseTo( System.currentTimeMillis() + PacketData.DEFAULT_EXPIRATION_PERIOD_MS, offset(1500L)); }
@Test public void neighborsPacketData() { final List<DiscoveryPeer> peers = helper.createDiscoveryPeers(5); final NeighborsPacketData packet = NeighborsPacketData.create(peers); final BytesValue serialized = RLP.encode(packet::writeTo); assertNotNull(serialized); final NeighborsPacketData deserialized = NeighborsPacketData.readFrom(RLP.input(serialized)); assertThat(deserialized.getNodes()).isEqualTo(peers); // Fuzziness: allow a skew of 1.5 seconds between the time the message was generated until the // assertion. assertThat(deserialized.getExpiration()) .isCloseTo( System.currentTimeMillis() + PacketData.DEFAULT_EXPIRATION_PERIOD_MS, offset(1500L)); }
@Test public void toFromRlp() { final BlockDataGenerator gen = new BlockDataGenerator(); final TransactionReceipt receipt = gen.receipt(); final TransactionReceipt copy = TransactionReceipt.readFrom(RLP.input(RLP.encode(receipt::writeTo))); assertEquals(receipt, copy); } }
@Test public void toFromRlp() { final BlockDataGenerator gen = new BlockDataGenerator(); final Log log = gen.log(); final Log copy = Log.readFrom(RLP.input(RLP.encode(log::writeTo))); assertEquals(log, copy); } }
RLP.encode( out -> { out.startList();
public void milestone(final String milestone) { final TransactionTestCaseSpec.Expectation expected = spec.expectation(milestone); try { final BytesValue rlp = spec.getRlp(); // Test transaction deserialization (will throw an exception if it fails). final Transaction transaction = Transaction.readFrom(RLP.input(rlp)); if (!transactionValidator(milestone).validate(transaction).isValid()) { throw new RuntimeException(String.format("Transaction is invalid %s", transaction)); } // Test rlp encoding final BytesValue actualRlp = RLP.encode(transaction::writeTo); Assert.assertTrue(expected.isSucceeds()); Assert.assertEquals(rlp, actualRlp); Assert.assertEquals(expected.getSender(), transaction.getSender()); Assert.assertEquals(expected.getHash(), transaction.hash()); } catch (final Exception e) { Assert.assertFalse(expected.isSucceeds()); } } }
"Unmatched logs hash. Generated logs: " + logs, expectedLogsHash, Hash.hash(RLP.encode(logs::writeTo)));