Skip to content

Commit

Permalink
Merge branch 'master' into fix_graphql_missing_account
Browse files Browse the repository at this point in the history
  • Loading branch information
atoulme authored Mar 4, 2021
2 parents 302c541 + 9947692 commit 4c80562
Show file tree
Hide file tree
Showing 3 changed files with 136 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,8 @@ public OptionalLong getQip714BlockNumber() {
public Map<String, Object> asMap() {
final ImmutableMap.Builder<String, Object> builder = ImmutableMap.builder();
getChainId().ifPresent(chainId -> builder.put("chainId", chainId));

// mainnet fork blocks
getHomesteadBlockNumber().ifPresent(l -> builder.put("homesteadBlock", l));
getDaoForkBlock()
.ifPresent(
Expand All @@ -345,11 +347,22 @@ public Map<String, Object> asMap() {
getIstanbulBlockNumber().ifPresent(l -> builder.put("istanbulBlock", l));
getMuirGlacierBlockNumber().ifPresent(l -> builder.put("muirGlacierBlock", l));
getBerlinBlockNumber().ifPresent(l -> builder.put("berlinBlock", l));

// classic fork blocks
getClassicForkBlock().ifPresent(l -> builder.put("classicForkBlock", l));
getEcip1015BlockNumber().ifPresent(l -> builder.put("ecip1015Block", l));
getDieHardBlockNumber().ifPresent(l -> builder.put("dieHardBlock", l));
getGothamBlockNumber().ifPresent(l -> builder.put("gothamBlock", l));
getDefuseDifficultyBombBlockNumber().ifPresent(l -> builder.put("ecip1041Block", l));
getAtlantisBlockNumber().ifPresent(l -> builder.put("atlantisBlock", l));
getAghartaBlockNumber().ifPresent(l -> builder.put("aghartaBlock", l));
getPhoenixBlockNumber().ifPresent(l -> builder.put("phoenixBlock", l));
getThanosBlockNumber().ifPresent(l -> builder.put("thanosBlock", l));

getEIP1559BlockNumber().ifPresent(l -> builder.put("eip1559Block", l));
getContractSizeLimit().ifPresent(l -> builder.put("contractSizeLimit", l));
getEvmStackSize().ifPresent(l -> builder.put("evmstacksize", l));
getEcip1017EraRounds().ifPresent(l -> builder.put("ecip1017EraRounds", l));
getThanosBlockNumber().ifPresent(l -> builder.put("thanosBlock", l));

if (isClique()) {
builder.put("clique", getCliqueConfigOptions().asMap());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,15 @@ public class StubGenesisConfigOptions implements GenesisConfigOptions {
private OptionalLong berlinBlockNumber = OptionalLong.empty();
// TODO EIP-1559 change for the actual fork name when known
private final OptionalLong eip1559BlockNumber = OptionalLong.empty();
private final OptionalLong classicForkBlock = OptionalLong.empty();
private final OptionalLong ecip1015BlockNumber = OptionalLong.empty();
private final OptionalLong diehardBlockNumber = OptionalLong.empty();
private final OptionalLong gothamBlockNumber = OptionalLong.empty();
private final OptionalLong defuseDifficultyBombBlockNumber = OptionalLong.empty();
private final OptionalLong atlantisBlockNumber = OptionalLong.empty();
private final OptionalLong aghartaBlockNumber = OptionalLong.empty();
private final OptionalLong phoenixBlockNumber = OptionalLong.empty();
private final OptionalLong thanosBlockNumber = OptionalLong.empty();
private OptionalLong classicForkBlock = OptionalLong.empty();
private OptionalLong ecip1015BlockNumber = OptionalLong.empty();
private OptionalLong diehardBlockNumber = OptionalLong.empty();
private OptionalLong gothamBlockNumber = OptionalLong.empty();
private OptionalLong defuseDifficultyBombBlockNumber = OptionalLong.empty();
private OptionalLong atlantisBlockNumber = OptionalLong.empty();
private OptionalLong aghartaBlockNumber = OptionalLong.empty();
private OptionalLong phoenixBlockNumber = OptionalLong.empty();
private OptionalLong thanosBlockNumber = OptionalLong.empty();
private Optional<BigInteger> chainId = Optional.empty();
private OptionalInt contractSizeLimit = OptionalInt.empty();
private OptionalInt stackSizeLimit = OptionalInt.empty();
Expand Down Expand Up @@ -229,6 +229,8 @@ public Optional<BigInteger> getChainId() {
public Map<String, Object> asMap() {
final ImmutableMap.Builder<String, Object> builder = ImmutableMap.builder();
getChainId().ifPresent(chainId -> builder.put("chainId", chainId));

// mainnet fork blocks
getHomesteadBlockNumber().ifPresent(l -> builder.put("homesteadBlock", l));
getDaoForkBlock()
.ifPresent(
Expand All @@ -249,6 +251,18 @@ public Map<String, Object> asMap() {
getBerlinBlockNumber().ifPresent(l -> builder.put("berlinBlock", l));
// TODO EIP-1559 change for the actual fork name when known
getEIP1559BlockNumber().ifPresent(l -> builder.put("eip1559Block", l));

// classic fork blocks
getClassicForkBlock().ifPresent(l -> builder.put("classicForkBlock", l));
getEcip1015BlockNumber().ifPresent(l -> builder.put("ecip1015Block", l));
getDieHardBlockNumber().ifPresent(l -> builder.put("dieHardBlock", l));
getGothamBlockNumber().ifPresent(l -> builder.put("gothamBlock", l));
getDefuseDifficultyBombBlockNumber().ifPresent(l -> builder.put("ecip1041Block", l));
getAtlantisBlockNumber().ifPresent(l -> builder.put("atlantisBlock", l));
getAghartaBlockNumber().ifPresent(l -> builder.put("aghartaBlock", l));
getPhoenixBlockNumber().ifPresent(l -> builder.put("phoenixBlock", l));
getThanosBlockNumber().ifPresent(l -> builder.put("thanosBlock", l));

getContractSizeLimit().ifPresent(l -> builder.put("contractSizeLimit", l));
getEvmStackSize().ifPresent(l -> builder.put("evmStackSize", l));
if (isClique()) {
Expand Down Expand Up @@ -336,6 +350,51 @@ public StubGenesisConfigOptions berlinBlock(final long blockNumber) {
return this;
}

public StubGenesisConfigOptions classicForkBlock(final long blockNumber) {
classicForkBlock = OptionalLong.of(blockNumber);
return this;
}

public StubGenesisConfigOptions ecip1015(final long blockNumber) {
ecip1015BlockNumber = OptionalLong.of(blockNumber);
return this;
}

public StubGenesisConfigOptions dieHard(final long blockNumber) {
diehardBlockNumber = OptionalLong.of(blockNumber);
return this;
}

public StubGenesisConfigOptions gotham(final long blockNumber) {
gothamBlockNumber = OptionalLong.of(blockNumber);
return this;
}

public StubGenesisConfigOptions defuseDifficultyBomb(final long blockNumber) {
defuseDifficultyBombBlockNumber = OptionalLong.of(blockNumber);
return this;
}

public StubGenesisConfigOptions atlantis(final long blockNumber) {
atlantisBlockNumber = OptionalLong.of(blockNumber);
return this;
}

public StubGenesisConfigOptions agharta(final long blockNumber) {
aghartaBlockNumber = OptionalLong.of(blockNumber);
return this;
}

public StubGenesisConfigOptions phoenix(final long blockNumber) {
phoenixBlockNumber = OptionalLong.of(blockNumber);
return this;
}

public StubGenesisConfigOptions thanos(final long blockNumber) {
thanosBlockNumber = OptionalLong.of(blockNumber);
return this;
}

public StubGenesisConfigOptions chainId(final BigInteger chainId) {
this.chainId = Optional.ofNullable(chainId);
return this;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,60 @@ public void returnsErrorWhenP2PNotReady() {
assertThat(response).isEqualToComparingFieldByField(expectedResponse);
}

@SuppressWarnings("unchecked")
@Test
public void returnsClassicForkBlocks() {
when(p2pNetwork.isP2pEnabled()).thenReturn(true);
when(p2pNetwork.getLocalEnode()).thenReturn(Optional.of(defaultPeer.getEnodeURL()));
final GenesisConfigOptions genesisClassicConfigOptions =
new StubGenesisConfigOptions()
.chainId(BigInteger.valueOf(2019))
.classicForkBlock(1)
.ecip1015(2)
.dieHard(3)
.gotham(4)
.defuseDifficultyBomb(5)
.atlantis(6)
.agharta(7)
.phoenix(8)
.thanos(9);

final AdminNodeInfo methodClassic =
new AdminNodeInfo(
"testnetClassic/1.0/this/that",
BigInteger.valueOf(2018),
genesisClassicConfigOptions,
p2pNetwork,
blockchainQueries,
natService);

final JsonRpcRequestContext request = adminNodeInfo();

final Map<String, Long> expectedConfig =
Map.of(
"classicForkBlock", 1L,
"ecip1015Block", 2L,
"dieHardBlock", 3L,
"gothamBlock", 4L,
"ecip1041Block", 5L,
"atlantisBlock", 6L,
"aghartaBlock", 7L,
"phoenixBlock", 8L,
"thanosBlock", 9L);

final JsonRpcResponse response = methodClassic.response(request);
assertThat(response).isInstanceOf(JsonRpcSuccessResponse.class);
final Object result = ((JsonRpcSuccessResponse) response).getResult();
assertThat(result).isInstanceOf(Map.class);
final Object protocolsMap = ((Map<?, ?>) result).get("protocols");
assertThat(protocolsMap).isInstanceOf(Map.class);
final Object ethMap = ((Map<?, ?>) protocolsMap).get("eth");
assertThat(ethMap).isInstanceOf(Map.class);
final Object configMap = ((Map<?, ?>) ethMap).get("config");
assertThat(configMap).isInstanceOf(Map.class);
assertThat(((Map<String, Long>) configMap)).containsAllEntriesOf(expectedConfig);
}

private JsonRpcRequestContext adminNodeInfo() {
return new JsonRpcRequestContext(new JsonRpcRequest("2.0", "admin_nodeInfo", new Object[] {}));
}
Expand Down

0 comments on commit 4c80562

Please sign in to comment.