use of org.hyperledger.besu.ethereum.core.BlockchainSetupUtil in project besu by hyperledger.
the class CheckpointHeaderFetcherTest method setUpClass.
@BeforeClass
public static void setUpClass() {
final BlockchainSetupUtil blockchainSetupUtil = BlockchainSetupUtil.forTesting(DataStorageFormat.FOREST);
blockchainSetupUtil.importAllBlocks();
blockchain = blockchainSetupUtil.getBlockchain();
transactionPool = blockchainSetupUtil.getTransactionPool();
protocolSchedule = blockchainSetupUtil.getProtocolSchedule();
protocolContext = blockchainSetupUtil.getProtocolContext();
}
use of org.hyperledger.besu.ethereum.core.BlockchainSetupUtil in project besu by hyperledger.
the class AbstractJsonRpcHttpServiceTest method getRpcMethods.
protected Map<String, JsonRpcMethod> getRpcMethods(final JsonRpcConfiguration config, final BlockchainSetupUtil blockchainSetupUtil) {
final ProtocolContext protocolContext = mock(ProtocolContext.class);
final Synchronizer synchronizerMock = mock(Synchronizer.class);
final P2PNetwork peerDiscoveryMock = mock(P2PNetwork.class);
final TransactionPool transactionPoolMock = mock(TransactionPool.class);
final PoWMiningCoordinator miningCoordinatorMock = mock(PoWMiningCoordinator.class);
when(transactionPoolMock.addLocalTransaction(any(Transaction.class))).thenReturn(ValidationResult.valid());
// nonce too low tests uses a tx with nonce=16
when(transactionPoolMock.addLocalTransaction(argThat(tx -> tx.getNonce() == 16))).thenReturn(ValidationResult.invalid(TransactionInvalidReason.NONCE_TOO_LOW));
final GasPricePendingTransactionsSorter pendingTransactionsMock = mock(GasPricePendingTransactionsSorter.class);
when(transactionPoolMock.getPendingTransactions()).thenReturn(pendingTransactionsMock);
final PrivacyParameters privacyParameters = mock(PrivacyParameters.class);
final BlockchainQueries blockchainQueries = new BlockchainQueries(blockchainSetupUtil.getBlockchain(), blockchainSetupUtil.getWorldArchive());
final FilterIdGenerator filterIdGenerator = mock(FilterIdGenerator.class);
final FilterRepository filterRepository = new FilterRepository();
when(filterIdGenerator.nextId()).thenReturn("0x1");
filterManager = new FilterManagerBuilder().blockchainQueries(blockchainQueries).transactionPool(transactionPoolMock).filterIdGenerator(filterIdGenerator).filterRepository(filterRepository).build();
final Set<Capability> supportedCapabilities = new HashSet<>();
supportedCapabilities.add(EthProtocol.ETH62);
supportedCapabilities.add(EthProtocol.ETH63);
final NatService natService = new NatService(Optional.empty());
return new JsonRpcMethodsFactory().methods(CLIENT_VERSION, NETWORK_ID, new StubGenesisConfigOptions(), peerDiscoveryMock, blockchainQueries, synchronizerMock, blockchainSetupUtil.getProtocolSchedule(), protocolContext, filterManager, transactionPoolMock, miningCoordinatorMock, new NoOpMetricsSystem(), supportedCapabilities, Optional.empty(), Optional.empty(), JSON_RPC_APIS, privacyParameters, config, mock(WebSocketConfiguration.class), mock(MetricsConfiguration.class), natService, new HashMap<>(), folder.getRoot().toPath(), mock(EthPeers.class));
}
use of org.hyperledger.besu.ethereum.core.BlockchainSetupUtil in project besu by hyperledger.
the class Istanbul99ProtocolManagerTest method setup.
@BeforeClass
public static void setup() {
final BlockchainSetupUtil blockchainSetupUtil = BlockchainSetupUtil.forTesting(DataStorageFormat.FOREST);
blockchainSetupUtil.importAllBlocks();
blockchain = blockchainSetupUtil.getBlockchain();
transactionPool = blockchainSetupUtil.getTransactionPool();
protocolSchedule = blockchainSetupUtil.getProtocolSchedule();
protocolContext = blockchainSetupUtil.getProtocolContext();
assertThat(blockchainSetupUtil.getMaxBlockNumber()).isGreaterThanOrEqualTo(20L);
}
use of org.hyperledger.besu.ethereum.core.BlockchainSetupUtil in project besu by hyperledger.
the class EthJsonRpcHttpServiceTest method getFilterChanges_oneBlock.
@Test
public void getFilterChanges_oneBlock() throws Exception {
BlockchainSetupUtil blockchainSetupUtil = startServiceWithEmptyChain(DataStorageFormat.FOREST);
final String expectedRespBody = String.format("{%n \"jsonrpc\" : \"2.0\",%n \"id\" : 2,%n \"result\" : [ \"0x10aaf14a53caf27552325374429d3558398a36d3682ede6603c2c6511896e9f9\" ]%n}");
final ResponseBody body = ethNewBlockFilter(1).body();
final String result = getResult(body);
body.close();
// Import genesis + first block
blockchainSetupUtil.importFirstBlocks(2);
final Response resp = ethGetFilterChanges(2, result);
assertThat(resp.code()).isEqualTo(200);
assertThat(resp.body().string()).isEqualTo(expectedRespBody);
}
use of org.hyperledger.besu.ethereum.core.BlockchainSetupUtil in project besu by hyperledger.
the class FastSyncChainDownloaderTest method recoversFromSyncTargetDisconnect.
@Test
public void recoversFromSyncTargetDisconnect() {
final BlockchainSetupUtil shorterChainUtil = BlockchainSetupUtil.forTesting(storageFormat);
final MutableBlockchain shorterChain = shorterChainUtil.getBlockchain();
otherBlockchainSetup.importFirstBlocks(30);
shorterChainUtil.importFirstBlocks(28);
final RespondingEthPeer bestPeer = EthProtocolManagerTestUtil.createPeer(ethProtocolManager, otherBlockchain);
final RespondingEthPeer secondBestPeer = EthProtocolManagerTestUtil.createPeer(ethProtocolManager, shorterChain);
final RespondingEthPeer.Responder shorterResponder = RespondingEthPeer.blockchainResponder(shorterChain);
// Doesn't respond to requests for checkpoints unless it's starting from genesis
// So the import can only make it as far as block 15 (3 checkpoints 5 blocks apart)
final RespondingEthPeer.Responder shorterLimitedRangeResponder = RespondingEthPeer.targetedResponder((cap, msg) -> {
if (msg.getCode() == EthPV62.GET_BLOCK_HEADERS) {
final GetBlockHeadersMessage request = GetBlockHeadersMessage.readFrom(msg);
return request.skip() == 0 || (request.hash().equals(localBlockchain.getBlockHashByNumber(0)));
} else {
return true;
}
}, (cap, msg) -> shorterResponder.respond(cap, msg).get());
final SynchronizerConfiguration syncConfig = SynchronizerConfiguration.builder().downloaderChainSegmentSize(5).downloaderHeadersRequestSize(3).downloaderParallelism(1).build();
final long pivotBlockNumber = 25;
final ChainDownloader downloader = downloader(syncConfig, pivotBlockNumber);
final CompletableFuture<Void> result = downloader.start();
while (localBlockchain.getChainHeadBlockNumber() < 15) {
bestPeer.respond(shorterLimitedRangeResponder);
secondBestPeer.respond(shorterLimitedRangeResponder);
LockSupport.parkNanos(200);
}
assertThat(localBlockchain.getChainHeadBlockNumber()).isEqualTo(15);
assertThat(result).isNotCompleted();
ethProtocolManager.handleDisconnect(bestPeer.getPeerConnection(), TOO_MANY_PEERS, true);
secondBestPeer.respondWhileOtherThreadsWork(shorterResponder, () -> !result.isDone());
assertThat(result).isCompleted();
assertThat(localBlockchain.getChainHeadBlockNumber()).isEqualTo(pivotBlockNumber);
assertThat(localBlockchain.getChainHeadHeader()).isEqualTo(otherBlockchain.getBlockHeader(pivotBlockNumber).get());
}
Aggregations