Skip to content

Commit

Permalink
Cleanup UnformattedDataWrapper (hyperledger#275)
Browse files Browse the repository at this point in the history
* Use UnformattedDataImpl as a DelegatingBytes class, so we can have it used throughout and reduce the churn of new objects

Signed-off-by: Antoine Toulme <antoine@lunar-ocean.com>
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
  • Loading branch information
atoulme authored and shemnon committed Dec 20, 2019
1 parent bf7493d commit 573d7c1
Show file tree
Hide file tree
Showing 46 changed files with 89 additions and 139 deletions.
2 changes: 0 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,3 @@
path = ethereum/referencetests/src/test/resources
url = https://github.com/ethereum/tests.git
ignore = all
branch = 48142b4ee7a42d081c6eda7b2a57d9b2c958bc81
shallow = true
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ public void importChain_validJson_withBlockNumbers() throws IOException {
// Check block 1
Block block = blocks.get(0);
if (isEthash) {
assertThat(block.getHeader().internalGetExtraData()).isEqualTo(Bytes.EMPTY);
assertThat(block.getHeader().getExtraData()).isEqualTo(Bytes.EMPTY);
assertThat(block.getHeader().getCoinbase()).isEqualTo(Address.ZERO);
}
assertThat(block.getBody().getTransactions().size()).isEqualTo(2);
Expand Down Expand Up @@ -155,8 +155,7 @@ public void importChain_validJson_withBlockNumbers() throws IOException {
// Check block 2
block = blocks.get(1);
if (isEthash) {
assertThat(block.getHeader().internalGetExtraData())
.isEqualTo(Bytes.fromHexString("0x1234"));
assertThat(block.getHeader().getExtraData()).isEqualTo(Bytes.fromHexString("0x1234"));
assertThat(block.getHeader().getCoinbase()).isEqualTo(Address.fromHexString("0x02"));
}
assertThat(block.getBody().getTransactions().size()).isEqualTo(1);
Expand All @@ -174,8 +173,7 @@ public void importChain_validJson_withBlockNumbers() throws IOException {
// Check block 3
block = blocks.get(2);
if (isEthash) {
assertThat(block.getHeader().internalGetExtraData())
.isEqualTo(Bytes.fromHexString("0x3456"));
assertThat(block.getHeader().getExtraData()).isEqualTo(Bytes.fromHexString("0x3456"));
assertThat(block.getHeader().getCoinbase())
.isEqualTo(Address.fromHexString("f17f52151EbEF6C7334FAD080c5704D77216b732"));
}
Expand All @@ -184,7 +182,7 @@ public void importChain_validJson_withBlockNumbers() throws IOException {
// Check block 4
block = blocks.get(3);
if (isEthash) {
assertThat(block.getHeader().internalGetExtraData()).isEqualTo(Bytes.EMPTY);
assertThat(block.getHeader().getExtraData()).isEqualTo(Bytes.EMPTY);
assertThat(block.getHeader().getCoinbase()).isEqualTo(Address.ZERO);
}
assertThat(block.getBody().getTransactions().size()).isEqualTo(1);
Expand Down Expand Up @@ -220,7 +218,7 @@ public void importChain_validJson_noBlockIdentifiers() throws IOException {
// Check block 1
Block block = blocks.get(0);
if (isEthash) {
assertThat(block.getHeader().internalGetExtraData()).isEqualTo(Bytes.EMPTY);
assertThat(block.getHeader().getExtraData()).isEqualTo(Bytes.EMPTY);
assertThat(block.getHeader().getCoinbase()).isEqualTo(Address.ZERO);
}
assertThat(block.getBody().getTransactions().size()).isEqualTo(2);
Expand Down Expand Up @@ -248,8 +246,7 @@ public void importChain_validJson_noBlockIdentifiers() throws IOException {
// Check block 2
block = blocks.get(1);
if (isEthash) {
assertThat(block.getHeader().internalGetExtraData())
.isEqualTo(Bytes.fromHexString("0x1234"));
assertThat(block.getHeader().getExtraData()).isEqualTo(Bytes.fromHexString("0x1234"));
assertThat(block.getHeader().getCoinbase()).isEqualTo(Address.fromHexString("0x02"));
}
assertThat(block.getBody().getTransactions().size()).isEqualTo(1);
Expand All @@ -267,8 +264,7 @@ public void importChain_validJson_noBlockIdentifiers() throws IOException {
// Check block 3
block = blocks.get(2);
if (isEthash) {
assertThat(block.getHeader().internalGetExtraData())
.isEqualTo(Bytes.fromHexString("0x3456"));
assertThat(block.getHeader().getExtraData()).isEqualTo(Bytes.fromHexString("0x3456"));
assertThat(block.getHeader().getCoinbase())
.isEqualTo(Address.fromHexString("f17f52151EbEF6C7334FAD080c5704D77216b732"));
}
Expand All @@ -277,7 +273,7 @@ public void importChain_validJson_noBlockIdentifiers() throws IOException {
// Check block 4
block = blocks.get(3);
if (isEthash) {
assertThat(block.getHeader().internalGetExtraData()).isEqualTo(Bytes.EMPTY);
assertThat(block.getHeader().getExtraData()).isEqualTo(Bytes.EMPTY);
assertThat(block.getHeader().getCoinbase()).isEqualTo(Address.ZERO);
}
assertThat(block.getBody().getTransactions().size()).isEqualTo(1);
Expand Down Expand Up @@ -327,7 +323,7 @@ public void importChain_validJson_withParentHashes() throws IOException {
// Check block 1
assertThat(newBlock.getHeader().getParentHash()).isEqualTo(parentBlock.getHash());
if (isEthash) {
assertThat(newBlock.getHeader().internalGetExtraData()).isEqualTo(Bytes.EMPTY);
assertThat(newBlock.getHeader().getExtraData()).isEqualTo(Bytes.EMPTY);
assertThat(newBlock.getHeader().getCoinbase()).isEqualTo(Address.ZERO);
}
assertThat(newBlock.getBody().getTransactions().size()).isEqualTo(1);
Expand Down Expand Up @@ -379,8 +375,7 @@ public void importChain_specialFields() throws IOException {
importer.importChain(jsonData);
final Blockchain blockchain = controller.getProtocolContext().getBlockchain();
final Block block = getBlockAt(blockchain, 1);
assertThat(block.getHeader().internalGetExtraData())
.isEqualTo(Bytes.fromHexString("0x0123"));
assertThat(block.getHeader().getExtraData()).isEqualTo(Bytes.fromHexString("0x0123"));
assertThat(block.getHeader().getCoinbase())
.isEqualTo(Address.fromHexString("627306090abaB3A6e1400e9345bC60c78a8BEf57"));
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ public static CliqueExtraData decode(final BlockHeader header) {
}

static CliqueExtraData decodeRaw(final BlockHeader header) {
final Bytes input = header.internalGetExtraData();
final Bytes input = header.getExtraData();
if (input.size() < EXTRA_VANITY_LENGTH + Signature.BYTES_REQUIRED) {
throw new IllegalArgumentException(
"Invalid Bytes supplied - too short to produce a valid Clique Extra Data object.");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ private static Bytes serializeHeader(

// set the extraData field using the supplied extraDataSerializer if the block height is not 0
if (header.getNumber() == BlockHeader.GENESIS_BLOCK_NUMBER) {
builder.extraData(header.internalGetExtraData());
builder.extraData(header.getExtraData());
} else {
builder.extraData(extraDataSerializer.get());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,6 @@ public Hash hash(final BlockHeader header) {

@Override
public IbftExtraData parseExtraData(final BlockHeader header) {
return IbftExtraData.decodeRaw(header.internalGetExtraData());
return IbftExtraData.decodeRaw(header.getExtraData());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ public static IbftExtraData decode(final BlockHeader blockHeader) {
LOG.warn(
"Expected a IbftExtraData instance but got {}. Reparsing required.",
inputExtraData != null ? inputExtraData.getClass().getName() : "null");
return decodeRaw(blockHeader.internalGetExtraData());
return decodeRaw(blockHeader.getExtraData());
}

static IbftExtraData decodeRaw(final Bytes input) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ public void roundNumberFromBlockIsReturned() {
@Test
public void getRoundNumberThrowsIfBlockIsNotOnTheChain() {
final NonBesuBlockHeader header =
new NonBesuBlockHeader(blockHeader.getHash(), blockHeader.internalGetExtraData());
new NonBesuBlockHeader(blockHeader.getHash(), blockHeader.getExtraData());
when(blockchain.getBlockHeader(blockHeader.getHash())).thenReturn(Optional.empty());

final IbftQueryService service =
Expand All @@ -142,7 +142,7 @@ public void getSignersReturnsAddressesOfSignersInBlock() {
@Test
public void getSignersThrowsIfBlockIsNotOnTheChain() {
final NonBesuBlockHeader header =
new NonBesuBlockHeader(blockHeader.getHash(), blockHeader.internalGetExtraData());
new NonBesuBlockHeader(blockHeader.getHash(), blockHeader.getExtraData());
when(blockchain.getBlockHeader(blockHeader.getHash())).thenReturn(Optional.empty());

final IbftQueryService service =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ private static Bytes serializeHeader(
out.writeLongScalar(header.getTimestamp());
// Cannot decode an IbftExtraData on block 0 due to missing/illegal signatures
if (header.getNumber() == 0) {
out.writeBytes(header.internalGetExtraData());
out.writeBytes(header.getExtraData());
} else {
out.writeBytes(extraDataSerializer.get());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public static IbftExtraData decode(final BlockHeader header) {
LOG.warn(
"Expected a IbftExtraData instance but got {}. Reparsing required.",
inputExtraData != null ? inputExtraData.getClass().getName() : "null");
return decodeRaw(header.internalGetExtraData());
return decodeRaw(header.getExtraData());
}

static IbftExtraData decodeRaw(final Bytes input) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,6 @@ public Hash hash(final BlockHeader header) {

@Override
public IbftExtraData parseExtraData(final BlockHeader header) {
return IbftExtraData.decodeRaw(header.internalGetExtraData());
return IbftExtraData.decodeRaw(header.getExtraData());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
import org.hyperledger.besu.ethereum.core.Hash;
import org.hyperledger.besu.ethereum.core.LogsBloomFilter;
import org.hyperledger.besu.ethereum.core.Transaction;
import org.hyperledger.besu.ethereum.core.UnformattedDataWrapper;
import org.hyperledger.besu.ethereum.core.UnformattedDataImpl;
import org.hyperledger.besu.ethereum.core.Wei;
import org.hyperledger.besu.ethereum.mainnet.MainnetBlockHeaderFunctions;

Expand Down Expand Up @@ -165,7 +165,7 @@ public TransactionResult transaction(
when(transaction.getHash()).thenReturn(hash(hash));
when(transaction.getTo()).thenReturn(Optional.ofNullable(address(toAddress)));
when(transaction.getSender()).thenReturn(address(fromAddress));
when(transaction.getPayload()).thenReturn(new UnformattedDataWrapper(bytes(input)));
when(transaction.getPayload()).thenReturn(new UnformattedDataImpl(bytes(input)));
when(transaction.getValue()).thenReturn(wei(value));
when(transaction.getGasLimit()).thenReturn(unsignedLong(gas));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import org.hyperledger.besu.ethereum.core.Hash;
import org.hyperledger.besu.ethereum.core.PrivacyParameters;
import org.hyperledger.besu.ethereum.core.Transaction;
import org.hyperledger.besu.ethereum.core.UnformattedDataImpl;
import org.hyperledger.besu.ethereum.core.Wei;
import org.hyperledger.besu.ethereum.privacy.PrivacyController;
import org.hyperledger.besu.ethereum.privacy.PrivateTransaction;
Expand Down Expand Up @@ -161,7 +162,7 @@ public void returnsStoredPrivateTransaction() {
final SendResponse sendResponse = enclave.send(payload, ENCLAVE_PUBLIC_KEY, to);

final Bytes hexKey = Bytes.fromBase64String(sendResponse.getKey());
when(justTransaction.getPayloadBytes()).thenReturn(hexKey);
when(justTransaction.getPayload()).thenReturn(new UnformattedDataImpl(hexKey));

final Object[] params = new Object[] {Hash.ZERO};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ public Optional<AccountAdapter> getMiner(final DataFetchingEnvironment environme
}

public Optional<Bytes> getExtraData() {
return Optional.of(header.internalGetExtraData());
return Optional.of(header.getExtraData());
}

public Optional<Long> getGasLimit() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ public Optional<Long> getGas() {
}

public Optional<Bytes> getInputData() {
return Optional.of(transactionWithMetadata.getTransaction().getPayloadBytes());
return Optional.of(transactionWithMetadata.getTransaction().getPayload());
}

public Optional<NormalBlockAdapter> getBlock(final DataFetchingEnvironment environment) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public JsonRpcResponse response(final JsonRpcRequestContext requestContext) {
LOG.trace("Fetching transaction information");
final ReceiveResponse receiveResponse =
privacyController.retrieveTransaction(
resultTransaction.getTransaction().getPayloadBytes().toBase64String());
resultTransaction.getTransaction().getPayload().toBase64String());
LOG.trace("Received transaction information");

final BytesValueRLPInput input =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ public JsonRpcResponse response(final JsonRpcRequestContext requestContext) {
final String privacyGroupId;
try {
final ReceiveResponse receiveResponse =
privacyController.retrieveTransaction(transaction.getPayloadBytes().toBase64String());
privacyController.retrieveTransaction(transaction.getPayload().toBase64String());
LOG.trace("Received transaction information");

final BytesValueRLPInput input =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1797,8 +1797,7 @@ private void assertTransactionResultMatchesTransaction(
assertThat(Wei.fromHexString(result.getString("gasPrice")))
.isEqualTo(transaction.getGasPrice());
assertThat(Long.decode(result.getString("gas"))).isEqualTo(transaction.getGasLimit());
assertThat(Bytes.fromHexString(result.getString("input")))
.isEqualTo(transaction.getPayloadBytes());
assertThat(Bytes.fromHexString(result.getString("input"))).isEqualTo(transaction.getPayload());
}

private void assertBlockResultMatchesBlock(final JsonObject result, final Block block) {
Expand All @@ -1816,7 +1815,7 @@ private void assertBlockResultMatchesBlock(final JsonObject result, final Block
assertThat(Difficulty.fromHexString(result.getString("difficulty")))
.isEqualTo(header.getDifficulty());
assertThat(Bytes.fromHexStringLenient(result.getString("extraData")))
.isEqualTo(header.internalGetExtraData());
.isEqualTo(header.getExtraData());
assertThat(hexStringToInt(result.getString("size"))).isEqualTo(block.calculateSize());
assertThat(Long.decode(result.getString("gasLimit"))).isEqualTo(header.getGasLimit());
assertThat(Long.decode(result.getString("gasUsed"))).isEqualTo(header.getGasUsed());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import org.hyperledger.besu.ethereum.core.Address;
import org.hyperledger.besu.ethereum.core.Hash;
import org.hyperledger.besu.ethereum.core.Transaction;
import org.hyperledger.besu.ethereum.core.UnformattedDataWrapper;
import org.hyperledger.besu.ethereum.core.UnformattedDataImpl;
import org.hyperledger.besu.ethereum.core.Wei;

import java.math.BigInteger;
Expand Down Expand Up @@ -69,8 +69,7 @@ public static Transaction transaction(
when(transaction.getS()).thenReturn(bigInteger(s));
when(transaction.getTo()).thenReturn(Optional.ofNullable(address(toAddress)));
when(transaction.getSender()).thenReturn(address(fromAddress));
when(transaction.getPayload())
.thenReturn(new UnformattedDataWrapper(Bytes.fromHexString(input)));
when(transaction.getPayload()).thenReturn(new UnformattedDataImpl(Bytes.fromHexString(input)));
when(transaction.getValue()).thenReturn(wei(value));
when(transaction.getGasLimit()).thenReturn(unsignedLong(gas));
return transaction;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
import org.hyperledger.besu.ethereum.core.BlockDataGenerator;
import org.hyperledger.besu.ethereum.core.Hash;
import org.hyperledger.besu.ethereum.core.LogWithMetadata;
import org.hyperledger.besu.ethereum.core.UnformattedDataWrapper;
import org.hyperledger.besu.ethereum.core.UnformattedDataImpl;
import org.hyperledger.besu.ethereum.eth.transactions.TransactionPool;

import java.util.List;
Expand Down Expand Up @@ -200,7 +200,7 @@ private LogWithMetadata logWithMetadata() {
Hash.ZERO,
0,
Address.fromHexString("0x0"),
new UnformattedDataWrapper(Bytes.EMPTY),
new UnformattedDataImpl(Bytes.EMPTY),
Lists.newArrayList(),
false);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@
import org.hyperledger.besu.ethereum.core.Log;
import org.hyperledger.besu.ethereum.core.LogTopic;
import org.hyperledger.besu.ethereum.core.LogsBloomFilter;
import org.hyperledger.besu.ethereum.core.UnformattedDataWrapper;
import org.hyperledger.besu.plugin.data.UnformattedData;

import java.util.ArrayList;
import java.util.List;
Expand All @@ -35,8 +33,7 @@

public class LogsQueryTest {

private static final UnformattedData data =
new UnformattedDataWrapper(Bytes.fromHexString("0x0102"));
private static final Bytes data = Bytes.fromHexString("0x0102");

@Test
public void wildcardQueryAddressTopicReturnTrue() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
import org.hyperledger.besu.ethereum.core.Address;
import org.hyperledger.besu.ethereum.core.Hash;
import org.hyperledger.besu.ethereum.core.LogWithMetadata;
import org.hyperledger.besu.ethereum.core.UnformattedDataWrapper;
import org.hyperledger.besu.ethereum.core.UnformattedDataImpl;

import java.util.List;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -203,7 +203,7 @@ private LogWithMetadata logWithMetadata() {
Hash.ZERO,
0,
Address.fromHexString("0x0"),
new UnformattedDataWrapper(Bytes.EMPTY),
new UnformattedDataImpl(Bytes.EMPTY),
Lists.newArrayList(),
false);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
import org.hyperledger.besu.ethereum.core.Address;
import org.hyperledger.besu.ethereum.core.Hash;
import org.hyperledger.besu.ethereum.core.LogWithMetadata;
import org.hyperledger.besu.ethereum.core.UnformattedDataWrapper;
import org.hyperledger.besu.ethereum.core.UnformattedDataImpl;

import java.util.ArrayList;
import java.util.Collections;
Expand Down Expand Up @@ -137,7 +137,7 @@ private List<LogWithMetadata> logs() {
Hash.ZERO,
0,
Address.fromHexString("0x0"),
new UnformattedDataWrapper(Bytes.EMPTY),
new UnformattedDataImpl(Bytes.EMPTY),
Lists.newArrayList(),
false));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import org.hyperledger.besu.ethereum.core.Hash;
import org.hyperledger.besu.ethereum.core.PrivacyParameters;
import org.hyperledger.besu.ethereum.core.Transaction;
import org.hyperledger.besu.ethereum.core.UnformattedDataImpl;
import org.hyperledger.besu.ethereum.core.Wei;
import org.hyperledger.besu.ethereum.privacy.PrivacyController;
import org.hyperledger.besu.ethereum.privacy.PrivateTransaction;
Expand Down Expand Up @@ -110,7 +111,8 @@ public void returnsPrivateTransactionLegacy() {
when(blockchain.transactionByHash(any(Hash.class)))
.thenReturn(Optional.of(returnedTransaction));
when(returnedTransaction.getTransaction()).thenReturn(justTransaction);
when(justTransaction.getPayloadBytes()).thenReturn(Bytes.fromBase64String(""));
when(justTransaction.getPayload())
.thenReturn(new UnformattedDataImpl(Bytes.fromBase64String("")));

final PrivateTransaction privateTransaction =
privateTransactionBuilder
Expand Down Expand Up @@ -145,7 +147,8 @@ public void returnsPrivateTransactionGroup() {
when(blockchain.transactionByHash(any(Hash.class)))
.thenReturn(Optional.of(returnedTransaction));
when(returnedTransaction.getTransaction()).thenReturn(justTransaction);
when(justTransaction.getPayloadBytes()).thenReturn(Bytes.fromBase64String(""));
when(justTransaction.getPayload())
.thenReturn(new UnformattedDataImpl(Bytes.fromBase64String("")));

final PrivateTransaction privateTransaction =
privateTransactionBuilder
Expand Down
Loading

0 comments on commit 573d7c1

Please sign in to comment.