Skip to content

Commit ce2c05b

Browse files
committed
Merge branch 'master' into post-state-validators
2 parents 9ec67f7 + 434481f commit ce2c05b

File tree

22 files changed

+407
-477
lines changed

22 files changed

+407
-477
lines changed

.circleci/config.yml

+4-2
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ jobs:
201201
- deps-{{ checksum "build.gradle" }}-{{ checksum "gradle/versions.gradle" }}
202202
- run:
203203
name: Build
204-
no_output_timeout: 60m
204+
no_output_timeout: 20m
205205
command: |
206206
$Env:JAVA_TOOL_OPTIONS = "-Xmx2g"
207207
$Env:GRADLE_OPTS = "-Dorg.gradle.daemon=false -Dorg.gradle.parallel=true"
@@ -256,7 +256,7 @@ jobs:
256256
at: ~/project
257257
- run:
258258
name: UnitTests
259-
no_output_timeout: 60m
259+
no_output_timeout: 20m
260260
command: |
261261
CLASSNAMES=$(circleci tests glob "**/src/test/java/**/*.java" \
262262
| sed 's@.*/src/test/java/@@' \
@@ -543,6 +543,8 @@ workflows:
543543
tags:
544544
<<: *filters-release-tags
545545
- windowsBuild:
546+
requires:
547+
- spotless
546548
filters:
547549
tags:
548550
<<: *filters-release-tags

ethereum/networks/src/main/java/tech/pegasys/teku/networks/Eth2NetworkConfiguration.java

+66
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.net.URL;
3333
import java.util.ArrayList;
3434
import java.util.List;
35+
import java.util.Objects;
3536
import java.util.Optional;
3637
import org.apache.tuweni.bytes.Bytes32;
3738
import org.apache.tuweni.units.bigints.UInt256;
@@ -266,6 +267,71 @@ public String toString() {
266267
return constants;
267268
}
268269

270+
@Override
271+
public boolean equals(final Object o) {
272+
if (this == o) {
273+
return true;
274+
}
275+
if (o == null || getClass() != o.getClass()) {
276+
return false;
277+
}
278+
final Eth2NetworkConfiguration that = (Eth2NetworkConfiguration) o;
279+
return startupTargetPeerCount == that.startupTargetPeerCount
280+
&& startupTimeoutSeconds == that.startupTimeoutSeconds
281+
&& asyncP2pMaxThreads == that.asyncP2pMaxThreads
282+
&& asyncBeaconChainMaxThreads == that.asyncBeaconChainMaxThreads
283+
&& asyncBeaconChainMaxQueue == that.asyncBeaconChainMaxQueue
284+
&& asyncP2pMaxQueue == that.asyncP2pMaxQueue
285+
&& forkChoiceLateBlockReorgEnabled == that.forkChoiceLateBlockReorgEnabled
286+
&& forkChoiceUpdatedAlwaysSendPayloadAttributes
287+
== that.forkChoiceUpdatedAlwaysSendPayloadAttributes
288+
&& Objects.equals(spec, that.spec)
289+
&& Objects.equals(constants, that.constants)
290+
&& Objects.equals(stateBoostrapConfig, that.stateBoostrapConfig)
291+
&& Objects.equals(discoveryBootnodes, that.discoveryBootnodes)
292+
&& Objects.equals(altairForkEpoch, that.altairForkEpoch)
293+
&& Objects.equals(bellatrixForkEpoch, that.bellatrixForkEpoch)
294+
&& Objects.equals(capellaForkEpoch, that.capellaForkEpoch)
295+
&& Objects.equals(denebForkEpoch, that.denebForkEpoch)
296+
&& Objects.equals(eth1DepositContractAddress, that.eth1DepositContractAddress)
297+
&& Objects.equals(eth1DepositContractDeployBlock, that.eth1DepositContractDeployBlock)
298+
&& Objects.equals(trustedSetup, that.trustedSetup)
299+
&& Objects.equals(terminalBlockHashOverride, that.terminalBlockHashOverride)
300+
&& Objects.equals(totalTerminalDifficultyOverride, that.totalTerminalDifficultyOverride)
301+
&& Objects.equals(terminalBlockHashEpochOverride, that.terminalBlockHashEpochOverride)
302+
&& Objects.equals(eth2Network, that.eth2Network)
303+
&& Objects.equals(epochsStoreBlobs, that.epochsStoreBlobs);
304+
}
305+
306+
@Override
307+
public int hashCode() {
308+
return Objects.hash(
309+
spec,
310+
constants,
311+
stateBoostrapConfig,
312+
startupTargetPeerCount,
313+
startupTimeoutSeconds,
314+
discoveryBootnodes,
315+
altairForkEpoch,
316+
bellatrixForkEpoch,
317+
capellaForkEpoch,
318+
denebForkEpoch,
319+
eth1DepositContractAddress,
320+
eth1DepositContractDeployBlock,
321+
trustedSetup,
322+
terminalBlockHashOverride,
323+
totalTerminalDifficultyOverride,
324+
terminalBlockHashEpochOverride,
325+
eth2Network,
326+
epochsStoreBlobs,
327+
asyncP2pMaxThreads,
328+
asyncBeaconChainMaxThreads,
329+
asyncBeaconChainMaxQueue,
330+
asyncP2pMaxQueue,
331+
forkChoiceLateBlockReorgEnabled,
332+
forkChoiceUpdatedAlwaysSendPayloadAttributes);
333+
}
334+
269335
public static class Builder {
270336
private static final String EPOCHS_STORE_BLOBS_MAX_KEYWORD = "MAX";
271337
private String constants;

ethereum/networks/src/main/java/tech/pegasys/teku/networks/StateBoostrapConfig.java

+27
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
package tech.pegasys.teku.networks;
1515

16+
import java.util.Objects;
1617
import java.util.Optional;
1718

1819
public class StateBoostrapConfig {
@@ -58,4 +59,30 @@ public boolean isUsingCheckpointSync() {
5859
public boolean isAllowSyncOutsideWeakSubjectivityPeriod() {
5960
return allowSyncOutsideWeakSubjectivityPeriod;
6061
}
62+
63+
@Override
64+
public boolean equals(final Object o) {
65+
if (this == o) {
66+
return true;
67+
}
68+
if (o == null || getClass() != o.getClass()) {
69+
return false;
70+
}
71+
final StateBoostrapConfig that = (StateBoostrapConfig) o;
72+
return isUsingCustomInitialState == that.isUsingCustomInitialState
73+
&& allowSyncOutsideWeakSubjectivityPeriod == that.allowSyncOutsideWeakSubjectivityPeriod
74+
&& Objects.equals(genesisState, that.genesisState)
75+
&& Objects.equals(initialState, that.initialState)
76+
&& Objects.equals(checkpointSyncUrl, that.checkpointSyncUrl);
77+
}
78+
79+
@Override
80+
public int hashCode() {
81+
return Objects.hash(
82+
genesisState,
83+
initialState,
84+
checkpointSyncUrl,
85+
isUsingCustomInitialState,
86+
allowSyncOutsideWeakSubjectivityPeriod);
87+
}
6188
}

ethereum/networks/src/test/java/tech/pegasys/teku/networks/Eth2NetworkConfigurationTest.java

+8-10
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public void build_shouldBuildKnownNetworks(
4242
networkDefinition.configure(networkConfigBuilder);
4343

4444
assertThat(networkConfig.getConstants()).isEqualTo(network.configName());
45-
assertThat(networkConfigBuilder.build()).usingRecursiveComparison().isEqualTo(networkConfig);
45+
assertThat(networkConfigBuilder.build()).isEqualTo(networkConfig);
4646
assertThat(networkConfig.getNetworkBoostrapConfig().isUsingCustomInitialState()).isFalse();
4747
}
4848

@@ -52,7 +52,7 @@ void shouldAliasGoerliToPrater() {
5252
Eth2NetworkConfiguration.builder("goerli").build();
5353
final Eth2NetworkConfiguration praterConfig =
5454
Eth2NetworkConfiguration.builder("prater").build();
55-
assertThat(goerliConfig).usingRecursiveComparison().isEqualTo(praterConfig);
55+
assertThat(goerliConfig).isEqualTo(praterConfig);
5656
}
5757

5858
@Test
@@ -77,7 +77,7 @@ public void constants_usingConstantsUrl() {
7777

7878
@Test
7979
public void applyNetworkDefaults_shouldOverwritePreviouslySetValues() {
80-
List<Arguments> definedNetworks = getDefinedNetworks().collect(Collectors.toList());
80+
List<Arguments> definedNetworks = getDefinedNetworks().toList();
8181

8282
for (Arguments networkA : definedNetworks) {
8383
for (Arguments networkB : definedNetworks) {
@@ -88,16 +88,15 @@ public void applyNetworkDefaults_shouldOverwritePreviouslySetValues() {
8888
builder.applyNetworkDefaults(networkAName);
8989
builder.applyNetworkDefaults(networkBName);
9090

91-
assertThat(builder)
92-
.usingRecursiveComparison()
93-
.isEqualTo(Eth2NetworkConfiguration.builder(networkBName));
91+
assertThat(builder.build())
92+
.isEqualTo(Eth2NetworkConfiguration.builder(networkBName).build());
9493
}
9594
}
9695
}
9796

9897
@Test
9998
public void applyNamedNetworkDefaults_shouldOverwritePreviouslySetValues() {
100-
List<Arguments> definedNetworks = getDefinedNetworks().collect(Collectors.toList());
99+
List<Arguments> definedNetworks = getDefinedNetworks().toList();
101100

102101
for (Arguments networkA : definedNetworks) {
103102
for (Arguments networkB : definedNetworks) {
@@ -109,9 +108,8 @@ public void applyNamedNetworkDefaults_shouldOverwritePreviouslySetValues() {
109108
networkBDef.configure(builder);
110109

111110
final Eth2Network networkBName = ((Eth2Network) networkB.get()[0]);
112-
assertThat(builder)
113-
.usingRecursiveComparison()
114-
.isEqualTo(Eth2NetworkConfiguration.builder(networkBName));
111+
assertThat(builder.build())
112+
.isEqualTo(Eth2NetworkConfiguration.builder(networkBName).build());
115113
}
116114
}
117115
}

infrastructure/logging/src/main/java/tech/pegasys/teku/infrastructure/logging/LoggingConfig.java

+35
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import static com.google.common.base.Preconditions.checkArgument;
1717

18+
import java.util.Objects;
1819
import java.util.Optional;
1920
import org.apache.logging.log4j.Level;
2021

@@ -96,6 +97,40 @@ public int getDbOpAlertThresholdMillis() {
9697
return dbOpAlertThresholdMillis;
9798
}
9899

100+
@Override
101+
public boolean equals(final Object o) {
102+
if (this == o) {
103+
return true;
104+
}
105+
if (o == null || getClass() != o.getClass()) {
106+
return false;
107+
}
108+
final LoggingConfig that = (LoggingConfig) o;
109+
return colorEnabled == that.colorEnabled
110+
&& includeEventsEnabled == that.includeEventsEnabled
111+
&& includeValidatorDutiesEnabled == that.includeValidatorDutiesEnabled
112+
&& includeP2pWarningsEnabled == that.includeP2pWarningsEnabled
113+
&& dbOpAlertThresholdMillis == that.dbOpAlertThresholdMillis
114+
&& Objects.equals(logLevel, that.logLevel)
115+
&& destination == that.destination
116+
&& Objects.equals(logFile, that.logFile)
117+
&& Objects.equals(logFileNamePattern, that.logFileNamePattern);
118+
}
119+
120+
@Override
121+
public int hashCode() {
122+
return Objects.hash(
123+
logLevel,
124+
colorEnabled,
125+
includeEventsEnabled,
126+
includeValidatorDutiesEnabled,
127+
includeP2pWarningsEnabled,
128+
destination,
129+
logFile,
130+
logFileNamePattern,
131+
dbOpAlertThresholdMillis);
132+
}
133+
99134
public static final class LoggingConfigBuilder {
100135
public static final String SEP = System.getProperty("file.separator");
101136

services/beaconchain/src/test/java/tech/pegasys/teku/services/beaconchain/WeakSubjectivityInitializerTest.java

+4-5
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public void finalizeAndStoreConfig_nothingStored_noNewArgs() {
7373
assertThat(result).isCompleted();
7474
verify(queryChannel).getWeakSubjectivityState();
7575
verify(updateChannel, never()).onWeakSubjectivityUpdate(any());
76-
assertThat(safeJoin(result)).usingRecursiveComparison().isEqualTo(defaultConfig);
76+
assertThat(safeJoin(result)).isEqualTo(defaultConfig);
7777
}
7878

7979
@Test
@@ -98,7 +98,7 @@ public void finalizeAndStoreConfig_nothingStored_withNewArgs() {
9898
verify(updateChannel)
9999
.onWeakSubjectivityUpdate(
100100
WeakSubjectivityUpdate.setWeakSubjectivityCheckpoint(cliCheckpoint));
101-
assertThat(safeJoin(result)).usingRecursiveComparison().isEqualTo(cliConfig);
101+
assertThat(safeJoin(result)).isEqualTo(cliConfig);
102102
}
103103

104104
@Test
@@ -119,7 +119,6 @@ public void finalizeAndStoreConfig_withStoredCheckpoint_noNewArgs() {
119119
verify(queryChannel).getWeakSubjectivityState();
120120
verify(updateChannel, never()).onWeakSubjectivityUpdate(any());
121121
assertThat(safeJoin(result))
122-
.usingRecursiveComparison()
123122
.isEqualTo(WeakSubjectivityConfig.builder(storedState).specProvider(spec).build());
124123
}
125124

@@ -150,7 +149,7 @@ public void finalizeAndStoreConfig_withStoredCheckpoint_withNewDistinctArgs() {
150149
verify(updateChannel)
151150
.onWeakSubjectivityUpdate(
152151
WeakSubjectivityUpdate.setWeakSubjectivityCheckpoint(cliCheckpoint));
153-
assertThat(safeJoin(result)).usingRecursiveComparison().isEqualTo(cliConfig);
152+
assertThat(safeJoin(result)).isEqualTo(cliConfig);
154153
}
155154

156155
@Test
@@ -175,7 +174,7 @@ public void finalizeAndStoreConfig_withStoredCheckpoint_withConsistentCLIArgs()
175174
assertThat(result).isCompleted();
176175
verify(queryChannel).getWeakSubjectivityState();
177176
verify(updateChannel, never()).onWeakSubjectivityUpdate(any());
178-
assertThat(safeJoin(result)).usingRecursiveComparison().isEqualTo(cliConfig);
177+
assertThat(safeJoin(result)).isEqualTo(cliConfig);
179178
}
180179

181180
@Test

storage/src/test/java/tech/pegasys/teku/storage/store/AbstractStoreTest.java

+43-8
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public abstract class AbstractStoreTest {
5353
protected final ForkChoiceStrategy dummyForkChoiceStrategy = mock(ForkChoiceStrategy.class);
5454

5555
protected void processChainWithLimitedCache(
56-
BiConsumer<UpdatableStore, SignedBlockAndState> chainProcessor) {
56+
final BiConsumer<UpdatableStore, SignedBlockAndState> chainProcessor) {
5757
final int cacheSize = 10;
5858
final int cacheMultiplier = 3;
5959

@@ -84,7 +84,7 @@ protected void processChainWithLimitedCache(
8484
}
8585

8686
protected void processCheckpointsWithLimitedCache(
87-
BiConsumer<UpdatableStore, CheckpointState> chainProcessor) {
87+
final BiConsumer<UpdatableStore, CheckpointState> chainProcessor) {
8888
final int cacheSize = 3;
8989
final int epochsToProcess = cacheSize * 3;
9090

@@ -122,7 +122,7 @@ protected void processCheckpointsWithLimitedCache(
122122
}
123123

124124
protected void processChainHeadWithMockForkChoiceStrategy(
125-
BiConsumer<UpdatableStore, SignedBlockAndState> chainProcessor) {
125+
final BiConsumer<UpdatableStore, SignedBlockAndState> chainProcessor) {
126126
final StoreConfig pruningOptions = StoreConfig.builder().build();
127127

128128
final UpdatableStore store = createGenesisStoreWithMockForkChoiceStrategy(pruningOptions);
@@ -150,15 +150,54 @@ protected UpdatableStore createGenesisStore() {
150150
return createGenesisStore(defaultStoreConfig);
151151
}
152152

153+
protected UpdatableStore createGenesisStore(
154+
final EarliestBlobSidecarSlotProvider earliestBlobSidecarSlotProvider) {
155+
return createStoreBuilder(defaultStoreConfig, chainBuilder, earliestBlobSidecarSlotProvider)
156+
.build();
157+
}
158+
159+
protected UpdatableStore createGenesisStore(final StoreConfig pruningOptions) {
160+
return createStoreBuilder(pruningOptions).build();
161+
}
162+
163+
protected StoreBuilder createStoreBuilder(
164+
final StoreConfig pruningOptions,
165+
final ChainBuilder chainBuilder,
166+
final EarliestBlobSidecarSlotProvider earliestBlobSidecarSlotProvider) {
167+
final SignedBlockAndState genesis = chainBuilder.generateGenesis();
168+
final Checkpoint genesisCheckpoint = chainBuilder.getCurrentCheckpointForEpoch(0);
169+
return createStoreBuilder(
170+
pruningOptions, genesis, genesisCheckpoint, earliestBlobSidecarSlotProvider);
171+
}
172+
153173
protected StoreBuilder createStoreBuilder(final StoreConfig pruningOptions) {
154174
final SignedBlockAndState genesis = chainBuilder.generateGenesis();
155175
final Checkpoint genesisCheckpoint = chainBuilder.getCurrentCheckpointForEpoch(0);
176+
return createStoreBuilder(pruningOptions, genesis, genesisCheckpoint);
177+
}
178+
179+
private StoreBuilder createStoreBuilder(
180+
final StoreConfig pruningOptions,
181+
final SignedBlockAndState genesis,
182+
final Checkpoint genesisCheckpoint) {
183+
return createStoreBuilder(
184+
pruningOptions,
185+
genesis,
186+
genesisCheckpoint,
187+
earliestBlobSidecarSlotProviderFromChainBuilder());
188+
}
189+
190+
private StoreBuilder createStoreBuilder(
191+
final StoreConfig pruningOptions,
192+
final SignedBlockAndState genesis,
193+
final Checkpoint genesisCheckpoint,
194+
final EarliestBlobSidecarSlotProvider earliestBlobSidecarSlotProvider) {
156195
return StoreBuilder.create()
157196
.asyncRunner(SYNC_RUNNER)
158197
.metricsSystem(new StubMetricsSystem())
159198
.specProvider(spec)
160199
.blockProvider(blockProviderFromChainBuilder())
161-
.earliestBlobSidecarSlotProvider(earliestBlobSidecarSlotProviderFromChainBuilder())
200+
.earliestBlobSidecarSlotProvider(earliestBlobSidecarSlotProvider)
162201
.stateProvider(StateAndBlockSummaryProvider.NOOP)
163202
.anchor(Optional.empty())
164203
.genesisTime(genesis.getState().getGenesisTime())
@@ -181,10 +220,6 @@ protected StoreBuilder createStoreBuilder(final StoreConfig pruningOptions) {
181220
.votes(emptyMap());
182221
}
183222

184-
protected UpdatableStore createGenesisStore(final StoreConfig pruningOptions) {
185-
return createStoreBuilder(pruningOptions).build();
186-
}
187-
188223
protected UpdatableStore createGenesisStoreWithMockForkChoiceStrategy(
189224
final StoreConfig pruningOptions) {
190225
return createStoreBuilder(pruningOptions).forkChoiceStrategy(dummyForkChoiceStrategy).build();

0 commit comments

Comments
 (0)