Skip to content
This repository was archived by the owner on Oct 31, 2025. It is now read-only.

Commit 0f2e43c

Browse files
authored
Merge main into zkbesu (#27)
* mark deleted slot during clear storage step (besu-eth#6305) * made directory structure of tests match source; fixed one typo (besu-eth#6337) * migrate controller tests to junit 5 (besu-eth#6338) * add new forkids for testnets, update forkid test to Junit5, no longer need named network specific trusted setups (besu-eth#6322) * Fix trielog shipping issue during self destruct (besu-eth#6340) * fix trielog shipping issue --------- Signed-off-by: Karim Taam <karim.t2am@gmail.com> Signed-off-by: Sally MacFarlane <macfarla.github@gmail.com> Signed-off-by: jflo <justin+github@florentine.us> Signed-off-by: garyschulte <garyschulte@gmail.com>
1 parent 1d4b979 commit 0f2e43c

File tree

23 files changed

+396
-302
lines changed

23 files changed

+396
-302
lines changed

besu/src/main/java/org/hyperledger/besu/cli/BesuCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1796,7 +1796,7 @@ private void configureNativeLibs() {
17961796
if (kzgTrustedSetupFile != null) {
17971797
KZGPointEvalPrecompiledContract.init(kzgTrustedSetupFile);
17981798
} else {
1799-
KZGPointEvalPrecompiledContract.init(network.name());
1799+
KZGPointEvalPrecompiledContract.init();
18001800
}
18011801
} else if (kzgTrustedSetupFile != null) {
18021802
throw new ParameterException(

besu/src/main/java/org/hyperledger/besu/cli/subcommands/operator/GenerateBlockchainConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161

6262
@Command(
6363
name = "generate-blockchain-config",
64-
description = "Generates node keypairs and genesis file with RLP encoded extra data.",
64+
description = "Generate node keypairs and genesis file with RLP encoded extra data.",
6565
mixinStandardHelpOptions = true,
6666
versionProvider = VersionProvider.class)
6767
class GenerateBlockchainConfig implements Runnable {

besu/src/test/java/org/hyperledger/besu/ForkIdsNetworkConfigTest.java

Lines changed: 155 additions & 165 deletions
Large diffs are not rendered by default.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/*
2+
* Copyright Hyperledger Besu contributors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
5+
* the License. You may obtain a copy of the License at
6+
*
7+
* http://www.apache.org/licenses/LICENSE-2.0
8+
*
9+
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
10+
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
11+
* specific language governing permissions and limitations under the License.
12+
*
13+
* SPDX-License-Identifier: Apache-2.0
14+
*
15+
*/
16+
package org.hyperledger.besu;
17+
18+
import static org.assertj.core.api.Assertions.assertThat;
19+
20+
import org.hyperledger.besu.ethereum.forkid.ForkId;
21+
22+
import java.util.List;
23+
24+
import org.apache.tuweni.bytes.Bytes;
25+
import org.junit.jupiter.api.Test;
26+
27+
public class RawForkIdTest {
28+
@Test
29+
public void testFromRaw() {
30+
final ForkId forkId = new ForkId(Bytes.ofUnsignedInt(0xfe3366e7L), 1735371L);
31+
final List<List<Bytes>> forkIdAsBytesList = List.of(forkId.getForkIdAsBytesList());
32+
assertThat(ForkId.fromRawForkId(forkIdAsBytesList).get()).isEqualTo(forkId);
33+
}
34+
}

besu/src/test/java/org/hyperledger/besu/cli/operator/OperatorSubCommandTest.java renamed to besu/src/test/java/org/hyperledger/besu/cli/subcommands/operator/OperatorSubCommandTest.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*
1313
* SPDX-License-Identifier: Apache-2.0
1414
*/
15-
package org.hyperledger.besu.cli.operator;
15+
package org.hyperledger.besu.cli.subcommands.operator;
1616

1717
import static java.lang.String.format;
1818
import static java.lang.System.currentTimeMillis;
@@ -22,11 +22,10 @@
2222
import static java.util.Collections.singletonList;
2323
import static org.assertj.core.api.Assertions.assertThat;
2424
import static org.assertj.core.api.Assertions.contentOf;
25-
import static org.hyperledger.besu.cli.operator.OperatorSubCommandTest.Cmd.cmd;
25+
import static org.hyperledger.besu.cli.subcommands.operator.OperatorSubCommandTest.Cmd.cmd;
2626

2727
import org.hyperledger.besu.BesuInfo;
2828
import org.hyperledger.besu.cli.CommandTestAbstract;
29-
import org.hyperledger.besu.cli.subcommands.operator.OperatorSubCommand;
3029
import org.hyperledger.besu.crypto.SECP256K1;
3130
import org.hyperledger.besu.crypto.SECP256R1;
3231
import org.hyperledger.besu.crypto.SECPPrivateKey;
@@ -72,7 +71,7 @@ public class OperatorSubCommandTest extends CommandTestAbstract {
7271
+ System.lineSeparator()
7372
+ "Commands:"
7473
+ System.lineSeparator()
75-
+ " generate-blockchain-config Generates node keypairs and genesis file with RLP"
74+
+ " generate-blockchain-config Generate node keypairs and genesis file with RLP"
7675
+ System.lineSeparator()
7776
+ " encoded extra data."
7877
+ System.lineSeparator()

besu/src/test/java/org/hyperledger/besu/cli/rlp/RLPSubCommandTest.java renamed to besu/src/test/java/org/hyperledger/besu/cli/subcommands/rlp/RLPSubCommandTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*
1313
* SPDX-License-Identifier: Apache-2.0
1414
*/
15-
package org.hyperledger.besu.cli.rlp;
15+
package org.hyperledger.besu.cli.subcommands.rlp;
1616

1717
import static java.nio.charset.StandardCharsets.UTF_8;
1818
import static org.assertj.core.api.Assertions.assertThat;

besu/src/test/java/org/hyperledger/besu/controller/BesuControllerBuilderTest.java

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import static org.mockito.ArgumentMatchers.any;
1818
import static org.mockito.Mockito.doReturn;
19+
import static org.mockito.Mockito.lenient;
1920
import static org.mockito.Mockito.mock;
2021
import static org.mockito.Mockito.never;
2122
import static org.mockito.Mockito.spy;
@@ -58,21 +59,21 @@
5859
import org.hyperledger.besu.services.kvstore.InMemoryKeyValueStorage;
5960

6061
import java.math.BigInteger;
62+
import java.nio.file.Path;
6163
import java.time.Clock;
6264
import java.util.OptionalLong;
6365

6466
import com.google.common.collect.Range;
6567
import org.apache.tuweni.bytes.Bytes;
66-
import org.junit.Before;
67-
import org.junit.Rule;
68-
import org.junit.Test;
69-
import org.junit.rules.TemporaryFolder;
70-
import org.junit.runner.RunWith;
68+
import org.junit.jupiter.api.BeforeEach;
69+
import org.junit.jupiter.api.Test;
70+
import org.junit.jupiter.api.extension.ExtendWith;
71+
import org.junit.jupiter.api.io.TempDir;
7172
import org.mockito.Answers;
7273
import org.mockito.Mock;
73-
import org.mockito.junit.MockitoJUnitRunner;
74+
import org.mockito.junit.jupiter.MockitoExtension;
7475

75-
@RunWith(MockitoJUnitRunner.class)
76+
@ExtendWith(MockitoExtension.class)
7677
public class BesuControllerBuilderTest {
7778

7879
private BesuControllerBuilder besuControllerBuilder;
@@ -100,9 +101,9 @@ public class BesuControllerBuilderTest {
100101

101102
BigInteger networkId = BigInteger.ONE;
102103

103-
@Rule public final TemporaryFolder tempDirRule = new TemporaryFolder();
104+
@TempDir Path tempDir;
104105

105-
@Before
106+
@BeforeEach
106107
public void setup() {
107108
when(genesisConfigFile.getParentHash()).thenReturn(Hash.ZERO.toHexString());
108109
when(genesisConfigFile.getDifficulty()).thenReturn(Bytes.of(0).toHexString());
@@ -129,14 +130,18 @@ public void setup() {
129130

130131
when(synchronizerConfiguration.getBlockPropagationRange()).thenReturn(Range.closed(1L, 2L));
131132

132-
when(storageProvider.createWorldStateStorage(DataStorageFormat.FOREST))
133+
lenient()
134+
.when(storageProvider.createWorldStateStorage(DataStorageFormat.FOREST))
133135
.thenReturn(worldStateStorage);
134-
when(storageProvider.createWorldStatePreimageStorage()).thenReturn(worldStatePreimageStorage);
136+
lenient()
137+
.when(storageProvider.createWorldStatePreimageStorage())
138+
.thenReturn(worldStatePreimageStorage);
135139

136-
when(worldStateStorage.isWorldStateAvailable(any(), any())).thenReturn(true);
137-
when(worldStatePreimageStorage.updater())
140+
lenient().when(worldStateStorage.isWorldStateAvailable(any(), any())).thenReturn(true);
141+
lenient()
142+
.when(worldStatePreimageStorage.updater())
138143
.thenReturn(mock(WorldStatePreimageStorage.Updater.class));
139-
when(worldStateStorage.updater()).thenReturn(mock(WorldStateStorage.Updater.class));
144+
lenient().when(worldStateStorage.updater()).thenReturn(mock(WorldStateStorage.Updater.class));
140145
besuControllerBuilder = spy(visitWithMockConfigs(new MainnetBesuControllerBuilder()));
141146
}
142147

@@ -149,7 +154,7 @@ BesuControllerBuilder visitWithMockConfigs(final BesuControllerBuilder builder)
149154
.miningParameters(miningParameters)
150155
.metricsSystem(observableMetricsSystem)
151156
.privacyParameters(privacyParameters)
152-
.dataDirectory(tempDirRule.getRoot().toPath())
157+
.dataDirectory(tempDir)
153158
.clock(clock)
154159
.transactionPoolConfiguration(poolConfiguration)
155160
.nodeKey(nodeKey)

besu/src/test/java/org/hyperledger/besu/controller/BesuControllerTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@
3737
import java.util.OptionalLong;
3838

3939
import com.google.common.io.Resources;
40-
import org.junit.Test;
41-
import org.junit.runner.RunWith;
40+
import org.junit.jupiter.api.Test;
41+
import org.junit.jupiter.api.extension.ExtendWith;
4242
import org.mockito.Mock;
4343
import org.mockito.Spy;
44-
import org.mockito.junit.MockitoJUnitRunner;
44+
import org.mockito.junit.jupiter.MockitoExtension;
4545

46-
@RunWith(MockitoJUnitRunner.class)
46+
@ExtendWith(MockitoExtension.class)
4747
public class BesuControllerTest {
4848

4949
@Spy private GenesisConfigFile genesisConfigFile = GenesisConfigFile.mainnet();

besu/src/test/java/org/hyperledger/besu/controller/ConsensusScheduleBesuControllerBuilderTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,13 @@
5454
import java.util.function.BiFunction;
5555

5656
import org.assertj.core.api.SoftAssertions;
57-
import org.junit.Test;
58-
import org.junit.runner.RunWith;
57+
import org.junit.jupiter.api.Test;
58+
import org.junit.jupiter.api.extension.ExtendWith;
5959
import org.mockito.Mock;
6060
import org.mockito.Mockito;
61-
import org.mockito.junit.MockitoJUnitRunner;
61+
import org.mockito.junit.jupiter.MockitoExtension;
6262

63-
@RunWith(MockitoJUnitRunner.class)
63+
@ExtendWith(MockitoExtension.class)
6464
public class ConsensusScheduleBesuControllerBuilderTest {
6565
private @Mock BiFunction<
6666
NavigableSet<ForkSpec<ProtocolSchedule>>, Optional<BigInteger>, ProtocolSchedule>

besu/src/test/java/org/hyperledger/besu/controller/MergeBesuControllerBuilderTest.java

Lines changed: 40 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import static org.hyperledger.besu.ethereum.core.InMemoryKeyValueStorageProvider.createInMemoryBlockchain;
1919
import static org.mockito.ArgumentMatchers.any;
2020
import static org.mockito.ArgumentMatchers.anyLong;
21+
import static org.mockito.Mockito.lenient;
2122
import static org.mockito.Mockito.mock;
2223
import static org.mockito.Mockito.spy;
2324
import static org.mockito.Mockito.when;
@@ -61,6 +62,7 @@
6162
import org.hyperledger.besu.services.kvstore.InMemoryKeyValueStorage;
6263

6364
import java.math.BigInteger;
65+
import java.nio.file.Path;
6466
import java.time.Clock;
6567
import java.util.Collections;
6668
import java.util.Optional;
@@ -70,16 +72,15 @@
7072
import org.apache.tuweni.bytes.Bytes;
7173
import org.apache.tuweni.bytes.Bytes32;
7274
import org.apache.tuweni.units.bigints.UInt256;
73-
import org.junit.Before;
74-
import org.junit.Rule;
75-
import org.junit.Test;
76-
import org.junit.rules.TemporaryFolder;
77-
import org.junit.runner.RunWith;
75+
import org.junit.jupiter.api.BeforeEach;
76+
import org.junit.jupiter.api.Test;
77+
import org.junit.jupiter.api.extension.ExtendWith;
78+
import org.junit.jupiter.api.io.TempDir;
7879
import org.mockito.Answers;
7980
import org.mockito.Mock;
80-
import org.mockito.junit.MockitoJUnitRunner;
81+
import org.mockito.junit.jupiter.MockitoExtension;
8182

82-
@RunWith(MockitoJUnitRunner.class)
83+
@ExtendWith(MockitoExtension.class)
8384
public class MergeBesuControllerBuilderTest {
8485

8586
private MergeBesuControllerBuilder besuControllerBuilder;
@@ -108,46 +109,54 @@ public class MergeBesuControllerBuilderTest {
108109
TransactionPoolConfiguration.DEFAULT;
109110
private final ObservableMetricsSystem observableMetricsSystem = new NoOpMetricsSystem();
110111

111-
@Rule public final TemporaryFolder tempDirRule = new TemporaryFolder();
112+
@TempDir Path tempDir;
112113

113-
@Before
114+
@BeforeEach
114115
public void setup() {
115-
when(genesisConfigFile.getParentHash()).thenReturn(Hash.ZERO.toHexString());
116-
when(genesisConfigFile.getDifficulty()).thenReturn(Bytes.of(0).toHexString());
117-
when(genesisConfigFile.getExtraData()).thenReturn(Bytes.EMPTY.toHexString());
118-
when(genesisConfigFile.getMixHash()).thenReturn(Hash.ZERO.toHexString());
119-
when(genesisConfigFile.getNonce()).thenReturn(Long.toHexString(1));
120-
when(genesisConfigFile.getConfigOptions(any())).thenReturn(genesisConfigOptions);
121-
when(genesisConfigFile.getConfigOptions()).thenReturn(genesisConfigOptions);
122-
when(genesisConfigOptions.getCheckpointOptions()).thenReturn(checkpointConfigOptions);
116+
lenient().when(genesisConfigFile.getParentHash()).thenReturn(Hash.ZERO.toHexString());
117+
lenient().when(genesisConfigFile.getDifficulty()).thenReturn(Bytes.of(0).toHexString());
118+
lenient().when(genesisConfigFile.getExtraData()).thenReturn(Bytes.EMPTY.toHexString());
119+
lenient().when(genesisConfigFile.getMixHash()).thenReturn(Hash.ZERO.toHexString());
120+
lenient().when(genesisConfigFile.getNonce()).thenReturn(Long.toHexString(1));
121+
lenient().when(genesisConfigFile.getConfigOptions(any())).thenReturn(genesisConfigOptions);
122+
lenient().when(genesisConfigFile.getConfigOptions()).thenReturn(genesisConfigOptions);
123+
lenient().when(genesisConfigOptions.getCheckpointOptions()).thenReturn(checkpointConfigOptions);
123124
when(genesisConfigOptions.getTerminalTotalDifficulty())
124125
.thenReturn((Optional.of(UInt256.valueOf(100L))));
125126
when(genesisConfigOptions.getThanosBlockNumber()).thenReturn(OptionalLong.empty());
126127
when(genesisConfigOptions.getTerminalBlockHash()).thenReturn(Optional.of(Hash.ZERO));
127-
when(genesisConfigOptions.getTerminalBlockNumber()).thenReturn(OptionalLong.of(1L));
128-
when(storageProvider.createBlockchainStorage(any(), any()))
128+
lenient().when(genesisConfigOptions.getTerminalBlockNumber()).thenReturn(OptionalLong.of(1L));
129+
lenient()
130+
.when(storageProvider.createBlockchainStorage(any(), any()))
129131
.thenReturn(
130132
new KeyValueStoragePrefixedKeyBlockchainStorage(
131133
new InMemoryKeyValueStorage(),
132134
new VariablesKeyValueStorage(new InMemoryKeyValueStorage()),
133135
new MainnetBlockHeaderFunctions()));
134-
when(storageProvider.getStorageBySegmentIdentifier(any()))
136+
lenient()
137+
.when(storageProvider.getStorageBySegmentIdentifier(any()))
135138
.thenReturn(new InMemoryKeyValueStorage());
136-
when(synchronizerConfiguration.getDownloaderParallelism()).thenReturn(1);
137-
when(synchronizerConfiguration.getTransactionsParallelism()).thenReturn(1);
138-
when(synchronizerConfiguration.getComputationParallelism()).thenReturn(1);
139+
lenient().when(synchronizerConfiguration.getDownloaderParallelism()).thenReturn(1);
140+
lenient().when(synchronizerConfiguration.getTransactionsParallelism()).thenReturn(1);
141+
lenient().when(synchronizerConfiguration.getComputationParallelism()).thenReturn(1);
139142

140-
when(synchronizerConfiguration.getBlockPropagationRange()).thenReturn(Range.closed(1L, 2L));
143+
lenient()
144+
.when(synchronizerConfiguration.getBlockPropagationRange())
145+
.thenReturn(Range.closed(1L, 2L));
141146

142-
when(storageProvider.createWorldStateStorage(DataStorageFormat.FOREST))
147+
lenient()
148+
.when(storageProvider.createWorldStateStorage(DataStorageFormat.FOREST))
143149
.thenReturn(worldStateStorage);
144-
when(storageProvider.createWorldStatePreimageStorage()).thenReturn(worldStatePreimageStorage);
150+
lenient()
151+
.when(storageProvider.createWorldStatePreimageStorage())
152+
.thenReturn(worldStatePreimageStorage);
145153

146-
when(worldStateStorage.isWorldStateAvailable(any(), any())).thenReturn(true);
147-
when(worldStatePreimageStorage.updater())
154+
lenient().when(worldStateStorage.isWorldStateAvailable(any(), any())).thenReturn(true);
155+
lenient()
156+
.when(worldStatePreimageStorage.updater())
148157
.thenReturn(mock(WorldStatePreimageStorage.Updater.class));
149-
when(worldStateStorage.updater()).thenReturn(mock(WorldStateStorage.Updater.class));
150-
when(miningParameters.getTargetGasLimit()).thenReturn(OptionalLong.empty());
158+
lenient().when(worldStateStorage.updater()).thenReturn(mock(WorldStateStorage.Updater.class));
159+
lenient().when(miningParameters.getTargetGasLimit()).thenReturn(OptionalLong.empty());
151160

152161
besuControllerBuilder = visitWithMockConfigs(new MergeBesuControllerBuilder());
153162
}
@@ -162,7 +171,7 @@ MergeBesuControllerBuilder visitWithMockConfigs(final MergeBesuControllerBuilder
162171
.miningParameters(miningParameters)
163172
.metricsSystem(observableMetricsSystem)
164173
.privacyParameters(privacyParameters)
165-
.dataDirectory(tempDirRule.getRoot().toPath())
174+
.dataDirectory(tempDir)
166175
.clock(clock)
167176
.transactionPoolConfiguration(poolConfiguration)
168177
.nodeKey(nodeKey)

0 commit comments

Comments
 (0)