diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/parallelization/ParallelizedConcurrentTransactionProcessorTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/parallelization/ParallelizedConcurrentTransactionProcessorTest.java index b81b29a8192..3ec3d927365 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/parallelization/ParallelizedConcurrentTransactionProcessorTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/parallelization/ParallelizedConcurrentTransactionProcessorTest.java @@ -19,6 +19,7 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -26,6 +27,8 @@ import org.hyperledger.besu.datatypes.Address; import org.hyperledger.besu.datatypes.Hash; import org.hyperledger.besu.datatypes.Wei; +import org.hyperledger.besu.ethereum.ProtocolContext; +import org.hyperledger.besu.ethereum.chain.MutableBlockchain; import org.hyperledger.besu.ethereum.core.BlockHeader; import org.hyperledger.besu.ethereum.core.InMemoryKeyValueStorageProvider; import org.hyperledger.besu.ethereum.core.Transaction; @@ -42,6 +45,7 @@ import org.hyperledger.besu.ethereum.trie.diffbased.common.trielog.NoOpTrieLogManager; import org.hyperledger.besu.ethereum.trie.diffbased.common.worldview.accumulator.DiffBasedWorldStateUpdateAccumulator; import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; +import org.hyperledger.besu.ethereum.worldstate.WorldStateArchive; import org.hyperledger.besu.evm.blockhash.BlockHashLookup; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.evm.tracing.OperationTracer; @@ -62,7 +66,9 @@ class ParallelizedConcurrentTransactionProcessorTest { @Mock private MainnetTransactionProcessor transactionProcessor; + @Mock private BlockHeader chainHeadBlockHeader; @Mock private BlockHeader blockHeader; + @Mock ProtocolContext protocolContext; @Mock private Transaction transaction; @Mock private PrivateMetadataUpdater privateMetadataUpdater; @Mock private TransactionCollisionDetector transactionCollisionDetector; @@ -89,6 +95,19 @@ void setUp() { new NoOpTrieLogManager(), EvmConfiguration.DEFAULT, createStatefulConfigWithTrie()); + + when(chainHeadBlockHeader.getHash()).thenReturn(Hash.ZERO); + when(chainHeadBlockHeader.getStateRoot()).thenReturn(Hash.EMPTY_TRIE_HASH); + when(blockHeader.getParentHash()).thenReturn(Hash.ZERO); + + when(transaction.detachedCopy()).thenReturn(transaction); + + final MutableBlockchain blockchain = mock(MutableBlockchain.class); + when(protocolContext.getBlockchain()).thenReturn(blockchain); + when(blockchain.getChainHeadHeader()).thenReturn(chainHeadBlockHeader); + final WorldStateArchive worldStateArchive = mock(WorldStateArchive.class); + when(protocolContext.getWorldStateArchive()).thenReturn(worldStateArchive); + when(worldStateArchive.getWorldState(any())).thenReturn(Optional.of(worldState)); when(transactionCollisionDetector.hasCollision(any(), any(), any(), any())).thenReturn(false); } @@ -105,7 +124,7 @@ void testRunTransaction() { Collections.emptyList(), 0, 0, Bytes.EMPTY, ValidationResult.valid())); processor.runTransaction( - worldState, + protocolContext, blockHeader, 0, transaction, @@ -151,7 +170,7 @@ void testRunTransactionWithFailure() { Optional.of(Bytes.EMPTY))); processor.runTransaction( - worldState, + protocolContext, blockHeader, 0, transaction, @@ -180,7 +199,7 @@ void testRunTransactionWithConflict() { Collections.emptyList(), 0, 0, Bytes.EMPTY, ValidationResult.valid())); processor.runTransaction( - worldState, + protocolContext, blockHeader, 0, transaction,