Skip to content

Commit b5dd2ae

Browse files
rolfyonetbenr
andauthoredDec 16, 2024
added test case for comparing mainnet config output (#8917)
--------- Signed-off-by: Paul Harris <[email protected]> Co-authored-by: Enrico Del Fante <[email protected]>
1 parent 414e909 commit b5dd2ae

File tree

3 files changed

+178
-1
lines changed
  • data/beaconrestapi/src/test
  • infrastructure/json/src/testFixtures/java/tech/pegasys/teku/infrastructure/json

3 files changed

+178
-1
lines changed
 

‎data/beaconrestapi/src/test/java/tech/pegasys/teku/beaconrestapi/handlers/v1/config/GetSpecTest.java

+22-1
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,23 @@
1313

1414
package tech.pegasys.teku.beaconrestapi.handlers.v1.config;
1515

16-
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
16+
import static java.nio.charset.StandardCharsets.UTF_8;
17+
import static org.assertj.core.api.Assertions.assertThat;
1718
import static tech.pegasys.teku.infrastructure.http.HttpStatusCodes.SC_BAD_REQUEST;
1819
import static tech.pegasys.teku.infrastructure.http.HttpStatusCodes.SC_INTERNAL_SERVER_ERROR;
1920
import static tech.pegasys.teku.infrastructure.http.HttpStatusCodes.SC_OK;
21+
import static tech.pegasys.teku.infrastructure.json.JsonTestUtil.parseStringMap;
2022
import static tech.pegasys.teku.infrastructure.restapi.MetadataTestUtil.verifyMetadataErrorResponse;
2123

2224
import com.fasterxml.jackson.core.JsonProcessingException;
25+
import com.google.common.io.Resources;
26+
import java.util.Map;
2327
import org.junit.jupiter.api.BeforeEach;
2428
import org.junit.jupiter.api.Test;
2529
import tech.pegasys.teku.api.ConfigProvider;
2630
import tech.pegasys.teku.api.SpecConfigData;
2731
import tech.pegasys.teku.beaconrestapi.AbstractMigratedBeaconHandlerTest;
32+
import tech.pegasys.teku.spec.SpecFactory;
2833

2934
class GetSpecTest extends AbstractMigratedBeaconHandlerTest {
3035
private final ConfigProvider configProvider = new ConfigProvider(spec);
@@ -51,4 +56,20 @@ void metadata_shouldHandle400() throws JsonProcessingException {
5156
void metadata_shouldHandle500() throws JsonProcessingException {
5257
verifyMetadataErrorResponse(handler, SC_INTERNAL_SERVER_ERROR);
5358
}
59+
60+
@Test
61+
@SuppressWarnings("unchecked")
62+
void shouldGetCorrectMainnetConfig() throws Exception {
63+
final ConfigProvider configProvider = new ConfigProvider(SpecFactory.create("mainnet"));
64+
setHandler(new GetSpec(configProvider));
65+
handler.handleRequest(request);
66+
67+
final Map<String, String> result = (Map<String, String>) request.getResponseBody();
68+
final Map<String, String> expected =
69+
parseStringMap(
70+
Resources.toString(
71+
Resources.getResource(GetSpecTest.class, "mainnetConfig.json"), UTF_8));
72+
73+
assertThat(result).containsExactlyInAnyOrderEntriesOf(expected);
74+
}
5475
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
{
2+
"SLOTS_PER_EPOCH" : "32",
3+
"PRESET_BASE" : "mainnet",
4+
"TERMINAL_TOTAL_DIFFICULTY" : "58750000000000000000000",
5+
"INACTIVITY_SCORE_BIAS" : "4",
6+
"MAX_ATTESTER_SLASHINGS" : "2",
7+
"MAX_WITHDRAWALS_PER_PAYLOAD" : "16",
8+
"INACTIVITY_PENALTY_QUOTIENT_BELLATRIX" : "16777216",
9+
"PENDING_PARTIAL_WITHDRAWALS_LIMIT" : "134217728",
10+
"INACTIVITY_PENALTY_QUOTIENT" : "67108864",
11+
"SAFE_SLOTS_TO_UPDATE_JUSTIFIED" : "8",
12+
"SECONDS_PER_ETH1_BLOCK" : "14",
13+
"MIN_SEED_LOOKAHEAD" : "1",
14+
"VALIDATOR_REGISTRY_LIMIT" : "1099511627776",
15+
"REORG_MAX_EPOCHS_SINCE_FINALIZATION" : "2",
16+
"SLOTS_PER_HISTORICAL_ROOT" : "8192",
17+
"RESP_TIMEOUT" : "10",
18+
"DOMAIN_VOLUNTARY_EXIT" : "0x04000000",
19+
"MAX_VALIDATORS_PER_COMMITTEE" : "2048",
20+
"MIN_GENESIS_TIME" : "1606824000",
21+
"ALTAIR_FORK_EPOCH" : "74240",
22+
"MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT" : "256000000000",
23+
"HYSTERESIS_QUOTIENT" : "4",
24+
"ALTAIR_FORK_VERSION" : "0x01000000",
25+
"MAX_BYTES_PER_TRANSACTION" : "1073741824",
26+
"MAX_CHUNK_SIZE" : "10485760",
27+
"TTFB_TIMEOUT" : "5",
28+
"WHISTLEBLOWER_REWARD_QUOTIENT" : "512",
29+
"PROPOSER_REWARD_QUOTIENT" : "8",
30+
"MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP" : "16384",
31+
"EPOCHS_PER_HISTORICAL_VECTOR" : "65536",
32+
"MIN_PER_EPOCH_CHURN_LIMIT" : "4",
33+
"MAX_ATTESTER_SLASHINGS_ELECTRA" : "1",
34+
"TARGET_AGGREGATORS_PER_SYNC_SUBCOMMITTEE" : "16",
35+
"MAX_DEPOSITS" : "16",
36+
"BELLATRIX_FORK_EPOCH" : "144896",
37+
"MAX_REQUEST_BLOB_SIDECARS" : "768",
38+
"REORG_HEAD_WEIGHT_THRESHOLD" : "20",
39+
"TARGET_AGGREGATORS_PER_COMMITTEE" : "16",
40+
"DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF" : "0x08000000",
41+
"MESSAGE_DOMAIN_INVALID_SNAPPY" : "0x00000000",
42+
"EPOCHS_PER_SLASHINGS_VECTOR" : "8192",
43+
"MIN_SLASHING_PENALTY_QUOTIENT" : "128",
44+
"MAX_BLS_TO_EXECUTION_CHANGES" : "16",
45+
"GOSSIP_MAX_SIZE" : "10485760",
46+
"TARGET_BLOBS_PER_BLOCK_ELECTRA" : "3",
47+
"DOMAIN_BEACON_ATTESTER" : "0x01000000",
48+
"EPOCHS_PER_SUBNET_SUBSCRIPTION" : "256",
49+
"PENDING_DEPOSITS_LIMIT" : "134217728",
50+
"MAX_ATTESTATIONS_ELECTRA" : "8",
51+
"ATTESTATION_SUBNET_COUNT" : "64",
52+
"GENESIS_DELAY" : "604800",
53+
"MAX_SEED_LOOKAHEAD" : "4",
54+
"ETH1_FOLLOW_DISTANCE" : "2048",
55+
"SECONDS_PER_SLOT" : "12",
56+
"REORG_PARENT_WEIGHT_THRESHOLD" : "160",
57+
"MIN_SYNC_COMMITTEE_PARTICIPANTS" : "1",
58+
"MAX_PENDING_DEPOSITS_PER_EPOCH" : "16",
59+
"BELLATRIX_FORK_VERSION" : "0x02000000",
60+
"PROPORTIONAL_SLASHING_MULTIPLIER_BELLATRIX" : "3",
61+
"EFFECTIVE_BALANCE_INCREMENT" : "1000000000",
62+
"MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA" : "128000000000",
63+
"FIELD_ELEMENTS_PER_BLOB" : "4096",
64+
"MIN_EPOCHS_TO_INACTIVITY_PENALTY" : "4",
65+
"BASE_REWARD_FACTOR" : "64",
66+
"MAX_EXTRA_DATA_BYTES" : "32",
67+
"CONFIG_NAME" : "mainnet",
68+
"MAX_PROPOSER_SLASHINGS" : "16",
69+
"INACTIVITY_SCORE_RECOVERY_RATE" : "16",
70+
"MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS" : "4096",
71+
"MAX_TRANSACTIONS_PER_PAYLOAD" : "1048576",
72+
"DEPOSIT_CONTRACT_ADDRESS" : "0x00000000219ab540356cBB839Cbe05303d7705Fa",
73+
"MIN_ATTESTATION_INCLUSION_DELAY" : "1",
74+
"SHUFFLE_ROUND_COUNT" : "90",
75+
"TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH" : "18446744073709551615",
76+
"MAX_EFFECTIVE_BALANCE" : "32000000000",
77+
"DOMAIN_BEACON_PROPOSER" : "0x00000000",
78+
"DENEB_FORK_EPOCH" : "269568",
79+
"DOMAIN_SYNC_COMMITTEE" : "0x07000000",
80+
"PROPOSER_SCORE_BOOST" : "40",
81+
"DOMAIN_SELECTION_PROOF" : "0x05000000",
82+
"MIN_SLASHING_PENALTY_QUOTIENT_BELLATRIX" : "32",
83+
"MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT" : "8",
84+
"HYSTERESIS_UPWARD_MULTIPLIER" : "5",
85+
"SUBNETS_PER_NODE" : "2",
86+
"MIN_DEPOSIT_AMOUNT" : "1000000000",
87+
"MIN_SLASHING_PENALTY_QUOTIENT_ELECTRA" : "4096",
88+
"PROPORTIONAL_SLASHING_MULTIPLIER_ALTAIR" : "2",
89+
"MAX_BLOBS_PER_BLOCK" : "6",
90+
"MIN_VALIDATOR_WITHDRAWABILITY_DELAY" : "256",
91+
"MAXIMUM_GOSSIP_CLOCK_DISPARITY" : "500",
92+
"TARGET_COMMITTEE_SIZE" : "128",
93+
"TERMINAL_BLOCK_HASH" : "0x0000000000000000000000000000000000000000000000000000000000000000",
94+
"DOMAIN_DEPOSIT" : "0x03000000",
95+
"DOMAIN_CONTRIBUTION_AND_PROOF" : "0x09000000",
96+
"UPDATE_TIMEOUT" : "8192",
97+
"ELECTRA_FORK_EPOCH" : "18446744073709551615",
98+
"SYNC_COMMITTEE_BRANCH_LENGTH" : "5",
99+
"DEPOSIT_CHAIN_ID" : "1",
100+
"MAX_BLOB_COMMITMENTS_PER_BLOCK" : "4096",
101+
"DOMAIN_RANDAO" : "0x02000000",
102+
"CAPELLA_FORK_VERSION" : "0x03000000",
103+
"MAX_EFFECTIVE_BALANCE_ELECTRA" : "2048000000000",
104+
"MIN_SLASHING_PENALTY_QUOTIENT_ALTAIR" : "64",
105+
"EPOCHS_PER_ETH1_VOTING_PERIOD" : "64",
106+
"WHISTLEBLOWER_REWARD_QUOTIENT_ELECTRA" : "4096",
107+
"HISTORICAL_ROOTS_LIMIT" : "16777216",
108+
"ATTESTATION_PROPAGATION_SLOT_RANGE" : "32",
109+
"MAX_BLOBS_PER_BLOCK_ELECTRA" : "6",
110+
"SYNC_COMMITTEE_SIZE" : "512",
111+
"ATTESTATION_SUBNET_PREFIX_BITS" : "6",
112+
"PROPORTIONAL_SLASHING_MULTIPLIER" : "1",
113+
"MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD" : "16",
114+
"MESSAGE_DOMAIN_VALID_SNAPPY" : "0x01000000",
115+
"MAX_VOLUNTARY_EXITS" : "16",
116+
"PENDING_CONSOLIDATIONS_LIMIT" : "262144",
117+
"HYSTERESIS_DOWNWARD_MULTIPLIER" : "1",
118+
"DOMAIN_APPLICATION_BUILDER" : "0x00000001",
119+
"MAX_PENDING_PARTIALS_PER_WITHDRAWALS_SWEEP" : "8",
120+
"EPOCHS_PER_SYNC_COMMITTEE_PERIOD" : "256",
121+
"BYTES_PER_LOGS_BLOOM" : "256",
122+
"MAX_DEPOSIT_REQUESTS_PER_PAYLOAD" : "8192",
123+
"MIN_GENESIS_ACTIVE_VALIDATOR_COUNT" : "16384",
124+
"MAX_REQUEST_BLOB_SIDECARS_ELECTRA" : "768",
125+
"BLOB_SIDECAR_SUBNET_COUNT_ELECTRA" : "6",
126+
"MAX_ATTESTATIONS" : "128",
127+
"MIN_EPOCHS_FOR_BLOCK_REQUESTS" : "33024",
128+
"DENEB_FORK_VERSION" : "0x04000000",
129+
"ELECTRA_FORK_VERSION" : "0x05000000",
130+
"MAX_REQUEST_BLOCKS" : "1024",
131+
"GENESIS_FORK_VERSION" : "0x00000000",
132+
"KZG_COMMITMENT_INCLUSION_PROOF_DEPTH" : "17",
133+
"DEPOSIT_NETWORK_ID" : "1",
134+
"MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD" : "1",
135+
"MAX_REQUEST_BLOCKS_DENEB" : "128",
136+
"BLOB_SIDECAR_SUBNET_COUNT" : "6",
137+
"SYNC_COMMITTEE_SUBNET_COUNT" : "4",
138+
"CAPELLA_FORK_EPOCH" : "194048",
139+
"EJECTION_BALANCE" : "16000000000",
140+
"ATTESTATION_SUBNET_EXTRA_BITS" : "0",
141+
"MAX_COMMITTEES_PER_SLOT" : "64",
142+
"SHARD_COMMITTEE_PERIOD" : "256",
143+
"INACTIVITY_PENALTY_QUOTIENT_ALTAIR" : "50331648",
144+
"DOMAIN_AGGREGATE_AND_PROOF" : "0x06000000",
145+
"CHURN_LIMIT_QUOTIENT" : "65536",
146+
"BLS_WITHDRAWAL_PREFIX" : "0x00",
147+
"MIN_ACTIVATION_BALANCE" : "32000000000"
148+
}

‎infrastructure/json/src/testFixtures/java/tech/pegasys/teku/infrastructure/json/JsonTestUtil.java

+8
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,14 @@ public static Map<String, Object> parse(final String json) throws Exception {
4949
.readValue(json);
5050
}
5151

52+
public static Map<String, String> parseStringMap(final String json) throws Exception {
53+
return new ObjectMapper()
54+
.readerFor(
55+
TypeFactory.defaultInstance()
56+
.constructMapType(LinkedHashMap.class, String.class, String.class))
57+
.readValue(json);
58+
}
59+
5260
public static String parseString(final String json) throws Exception {
5361
return new ObjectMapper().readerFor(String.class).readValue(json);
5462
}

0 commit comments

Comments
 (0)
Please sign in to comment.