update tests

This commit is contained in:
realbigsean
2024-05-09 18:59:53 -04:00
parent 92d0b125c7
commit eb2260222c
6 changed files with 127 additions and 56 deletions

View File

@@ -20,7 +20,7 @@ pub fn initiate_validator_exit<E: EthSpec>(
// Compute exit queue epoch // Compute exit queue epoch
let exit_queue_epoch = if state.fork_name_unchecked() >= ForkName::Electra { let exit_queue_epoch = if state.fork_name_unchecked() >= ForkName::Electra {
let effective_balance = state.get_validator(index)?.effective_balance; let effective_balance = state.get_effective_balance(index)?;
state.compute_exit_epoch_and_update_churn(effective_balance, spec)? state.compute_exit_epoch_and_update_churn(effective_balance, spec)?
} else { } else {
let delayed_epoch = state.compute_activation_exit_epoch(state.current_epoch(), spec)?; let delayed_epoch = state.compute_activation_exit_epoch(state.current_epoch(), spec)?;

View File

@@ -865,6 +865,14 @@ impl ChainSpec {
electra_fork_epoch: None, electra_fork_epoch: None,
max_pending_partials_per_withdrawals_sweep: u64::checked_pow(2, 0) max_pending_partials_per_withdrawals_sweep: u64::checked_pow(2, 0)
.expect("pow does not overflow"), .expect("pow does not overflow"),
min_per_epoch_churn_limit_electra: option_wrapper(|| {
u64::checked_pow(2, 6)?.checked_mul(u64::checked_pow(10, 9)?)
})
.expect("calculation does not overflow"),
max_per_epoch_activation_exit_churn_limit: option_wrapper(|| {
u64::checked_pow(2, 7)?.checked_mul(u64::checked_pow(10, 9)?)
})
.expect("calculation does not overflow"),
// Other // Other
network_id: 2, // lighthouse testnet network id network_id: 2, // lighthouse testnet network id
deposit_chain_id: 5, deposit_chain_id: 5,

View File

@@ -1,4 +1,4 @@
TESTS_TAG := v1.4.0-beta.6 TESTS_TAG := v1.5.0-alpha.2
TESTS = general minimal mainnet TESTS = general minimal mainnet
TARBALLS = $(patsubst %,%-$(TESTS_TAG).tar.gz,$(TESTS)) TARBALLS = $(patsubst %,%-$(TESTS_TAG).tar.gz,$(TESTS))

View File

@@ -290,7 +290,7 @@ impl<E: EthSpec> Operation<E> for BeaconBlockBody<E, FullPayload<E>> {
} }
fn is_enabled_for_fork(fork_name: ForkName) -> bool { fn is_enabled_for_fork(fork_name: ForkName) -> bool {
fork_name != ForkName::Base && fork_name != ForkName::Altair fork_name >= ForkName::Bellatrix
} }
fn decode(path: &Path, fork_name: ForkName, _spec: &ChainSpec) -> Result<Self, Error> { fn decode(path: &Path, fork_name: ForkName, _spec: &ChainSpec) -> Result<Self, Error> {
@@ -331,7 +331,7 @@ impl<E: EthSpec> Operation<E> for BeaconBlockBody<E, BlindedPayload<E>> {
} }
fn is_enabled_for_fork(fork_name: ForkName) -> bool { fn is_enabled_for_fork(fork_name: ForkName) -> bool {
fork_name != ForkName::Base && fork_name != ForkName::Altair fork_name >= ForkName::Bellatrix
} }
fn decode(path: &Path, fork_name: ForkName, _spec: &ChainSpec) -> Result<Self, Error> { fn decode(path: &Path, fork_name: ForkName, _spec: &ChainSpec) -> Result<Self, Error> {
@@ -383,9 +383,7 @@ impl<E: EthSpec> Operation<E> for WithdrawalsPayload<E> {
} }
fn is_enabled_for_fork(fork_name: ForkName) -> bool { fn is_enabled_for_fork(fork_name: ForkName) -> bool {
fork_name != ForkName::Base fork_name >= ForkName::Capella
&& fork_name != ForkName::Altair
&& fork_name != ForkName::Bellatrix
} }
fn decode(path: &Path, fork_name: ForkName, _spec: &ChainSpec) -> Result<Self, Error> { fn decode(path: &Path, fork_name: ForkName, _spec: &ChainSpec) -> Result<Self, Error> {
@@ -417,9 +415,7 @@ impl<E: EthSpec> Operation<E> for SignedBlsToExecutionChange {
} }
fn is_enabled_for_fork(fork_name: ForkName) -> bool { fn is_enabled_for_fork(fork_name: ForkName) -> bool {
fork_name != ForkName::Base fork_name >= ForkName::Capella
&& fork_name != ForkName::Altair
&& fork_name != ForkName::Bellatrix
} }
fn decode(path: &Path, _fork_name: ForkName, _spec: &ChainSpec) -> Result<Self, Error> { fn decode(path: &Path, _fork_name: ForkName, _spec: &ChainSpec) -> Result<Self, Error> {

View File

@@ -20,9 +20,8 @@ pub trait Handler {
// Add forks here to exclude them from EF spec testing. Helpful for adding future or // Add forks here to exclude them from EF spec testing. Helpful for adding future or
// unspecified forks. // unspecified forks.
// TODO(electra): Enable Electra once spec tests are available.
fn disabled_forks(&self) -> Vec<ForkName> { fn disabled_forks(&self) -> Vec<ForkName> {
vec![ForkName::Electra] vec![]
} }
fn is_enabled_for_fork(&self, fork_name: ForkName) -> bool { fn is_enabled_for_fork(&self, fork_name: ForkName) -> bool {
@@ -245,6 +244,14 @@ impl<T, E> SszStaticHandler<T, E> {
Self::for_forks(ForkName::list_all()[3..].to_vec()) Self::for_forks(ForkName::list_all()[3..].to_vec())
} }
pub fn deneb_and_later() -> Self {
Self::for_forks(ForkName::list_all()[4..].to_vec())
}
pub fn electra_and_later() -> Self {
Self::for_forks(ForkName::list_all()[5..].to_vec())
}
pub fn pre_electra() -> Self { pub fn pre_electra() -> Self {
Self::for_forks(ForkName::list_all()[0..5].to_vec()) Self::for_forks(ForkName::list_all()[0..5].to_vec())
} }
@@ -577,7 +584,7 @@ impl<E: EthSpec + TypeName> Handler for ForkChoiceHandler<E> {
// No FCU override tests prior to bellatrix. // No FCU override tests prior to bellatrix.
if self.handler_name == "should_override_forkchoice_update" if self.handler_name == "should_override_forkchoice_update"
&& (fork_name == ForkName::Base || fork_name == ForkName::Altair) && fork_name >= ForkName::Bellatrix
{ {
return false; return false;
} }
@@ -613,9 +620,7 @@ impl<E: EthSpec + TypeName> Handler for OptimisticSyncHandler<E> {
} }
fn is_enabled_for_fork(&self, fork_name: ForkName) -> bool { fn is_enabled_for_fork(&self, fork_name: ForkName) -> bool {
fork_name != ForkName::Base fork_name >= ForkName::Bellatrix && cfg!(not(feature = "fake_crypto"))
&& fork_name != ForkName::Altair
&& cfg!(not(feature = "fake_crypto"))
} }
} }
@@ -798,13 +803,12 @@ impl<E: EthSpec + TypeName> Handler for MerkleProofValidityHandler<E> {
"single_merkle_proof".into() "single_merkle_proof".into()
} }
fn is_enabled_for_fork(&self, fork_name: ForkName) -> bool { fn is_enabled_for_fork(&self, _fork_name: ForkName) -> bool {
fork_name != ForkName::Base
// Test is skipped due to some changes in the Capella light client // Test is skipped due to some changes in the Capella light client
// spec. // spec.
// //
// https://github.com/sigp/lighthouse/issues/4022 // https://github.com/sigp/lighthouse/issues/4022
&& fork_name != ForkName::Capella && fork_name != ForkName::Deneb false
} }
} }
@@ -829,10 +833,7 @@ impl<E: EthSpec + TypeName> Handler for KzgInclusionMerkleProofValidityHandler<E
fn is_enabled_for_fork(&self, fork_name: ForkName) -> bool { fn is_enabled_for_fork(&self, fork_name: ForkName) -> bool {
// Enabled in Deneb // Enabled in Deneb
fork_name != ForkName::Base fork_name >= ForkName::Deneb
&& fork_name != ForkName::Altair
&& fork_name != ForkName::Bellatrix
&& fork_name != ForkName::Capella
} }
} }

View File

@@ -14,6 +14,10 @@ fn check_typenum_values<E: EthSpec>() {
E::SlotsPerEth1VotingPeriod::to_u64(), E::SlotsPerEth1VotingPeriod::to_u64(),
E::EpochsPerEth1VotingPeriod::to_u64() * E::SlotsPerEpoch::to_u64() E::EpochsPerEth1VotingPeriod::to_u64() * E::SlotsPerEpoch::to_u64()
); );
assert_eq!(
E::MaxValidatorsPerSlot::to_u64(),
E::MaxCommitteesPerSlot::to_u64() * E::MaxValidatorsPerCommittee::to_u64()
);
} }
#[test] #[test]
@@ -217,7 +221,11 @@ mod ssz_static {
use ef_tests::{Handler, SszStaticHandler, SszStaticTHCHandler, SszStaticWithSpecHandler}; use ef_tests::{Handler, SszStaticHandler, SszStaticTHCHandler, SszStaticWithSpecHandler};
use types::blob_sidecar::BlobIdentifier; use types::blob_sidecar::BlobIdentifier;
use types::historical_summary::HistoricalSummary; use types::historical_summary::HistoricalSummary;
use types::{AttesterSlashingBase, AttesterSlashingElectra, LightClientBootstrapAltair, *}; use types::{
AttesterSlashingBase, AttesterSlashingElectra, Consolidation, DepositReceipt,
ExecutionLayerWithdrawalRequest, LightClientBootstrapAltair, PendingBalanceDeposit,
PendingPartialWithdrawal, *,
};
ssz_static_test!(attestation, Attestation<_>); ssz_static_test!(attestation, Attestation<_>);
ssz_static_test!(attestation_data, AttestationData); ssz_static_test!(attestation_data, AttestationData);
@@ -310,6 +318,10 @@ mod ssz_static {
.run(); .run();
SszStaticHandler::<BeaconBlockBodyDeneb<MainnetEthSpec>, MainnetEthSpec>::deneb_only() SszStaticHandler::<BeaconBlockBodyDeneb<MainnetEthSpec>, MainnetEthSpec>::deneb_only()
.run(); .run();
SszStaticHandler::<BeaconBlockBodyElectra<MinimalEthSpec>, MinimalEthSpec>::electra_only()
.run();
SszStaticHandler::<BeaconBlockBodyElectra<MainnetEthSpec>, MainnetEthSpec>::electra_only()
.run();
} }
// Altair and later // Altair and later
@@ -344,6 +356,10 @@ mod ssz_static {
.run(); .run();
SszStaticHandler::<LightClientBootstrapDeneb<MainnetEthSpec>, MainnetEthSpec>::deneb_only() SszStaticHandler::<LightClientBootstrapDeneb<MainnetEthSpec>, MainnetEthSpec>::deneb_only()
.run(); .run();
SszStaticHandler::<LightClientBootstrapElectra<MinimalEthSpec>, MinimalEthSpec>::electra_only()
.run();
SszStaticHandler::<LightClientBootstrapElectra<MainnetEthSpec>, MainnetEthSpec>::electra_only()
.run();
} }
// LightClientHeader has no internal indicator of which fork it is for, so we test it separately. // LightClientHeader has no internal indicator of which fork it is for, so we test it separately.
@@ -369,35 +385,27 @@ mod ssz_static {
.run(); .run();
SszStaticHandler::<LightClientHeaderDeneb<MainnetEthSpec>, MainnetEthSpec>::deneb_only() SszStaticHandler::<LightClientHeaderDeneb<MainnetEthSpec>, MainnetEthSpec>::deneb_only()
.run(); .run();
SszStaticHandler::<LightClientHeaderElectra<MinimalEthSpec>, MinimalEthSpec>::electra_only(
)
.run();
SszStaticHandler::<LightClientHeaderElectra<MainnetEthSpec>, MainnetEthSpec>::electra_only(
)
.run();
} }
// LightClientOptimisticUpdate has no internal indicator of which fork it is for, so we test it separately. // LightClientOptimisticUpdate has no internal indicator of which fork it is for, so we test it separately.
#[test] #[test]
fn light_client_optimistic_update() { fn light_client_optimistic_update() {
SszStaticHandler::<LightClientOptimisticUpdateAltair<MinimalEthSpec>, MinimalEthSpec>::altair_only( SszStaticHandler::<LightClientOptimisticUpdateAltair<MinimalEthSpec>, MinimalEthSpec>::altair_only().run();
) SszStaticHandler::<LightClientOptimisticUpdateAltair<MainnetEthSpec>, MainnetEthSpec>::altair_only().run();
.run(); SszStaticHandler::<LightClientOptimisticUpdateAltair<MinimalEthSpec>, MinimalEthSpec>::bellatrix_only().run();
SszStaticHandler::<LightClientOptimisticUpdateAltair<MainnetEthSpec>, MainnetEthSpec>::altair_only( SszStaticHandler::<LightClientOptimisticUpdateAltair<MainnetEthSpec>, MainnetEthSpec>::bellatrix_only().run();
) SszStaticHandler::<LightClientOptimisticUpdateCapella<MinimalEthSpec>, MinimalEthSpec>::capella_only().run();
.run(); SszStaticHandler::<LightClientOptimisticUpdateCapella<MainnetEthSpec>, MainnetEthSpec>::capella_only().run();
SszStaticHandler::<LightClientOptimisticUpdateAltair<MinimalEthSpec>, MinimalEthSpec>::bellatrix_only( SszStaticHandler::<LightClientOptimisticUpdateDeneb<MinimalEthSpec>, MinimalEthSpec>::deneb_only().run();
) SszStaticHandler::<LightClientOptimisticUpdateDeneb<MainnetEthSpec>, MainnetEthSpec>::deneb_only().run();
.run(); SszStaticHandler::<LightClientOptimisticUpdateElectra<MinimalEthSpec>, MinimalEthSpec>::electra_only().run();
SszStaticHandler::<LightClientOptimisticUpdateAltair<MainnetEthSpec>, MainnetEthSpec>::bellatrix_only( SszStaticHandler::<LightClientOptimisticUpdateElectra<MainnetEthSpec>, MainnetEthSpec>::electra_only().run();
)
.run();
SszStaticHandler::<LightClientOptimisticUpdateCapella<MinimalEthSpec>, MinimalEthSpec>::capella_only(
)
.run();
SszStaticHandler::<LightClientOptimisticUpdateCapella<MainnetEthSpec>, MainnetEthSpec>::capella_only(
)
.run();
SszStaticHandler::<LightClientOptimisticUpdateDeneb<MinimalEthSpec>, MinimalEthSpec>::deneb_only(
)
.run();
SszStaticHandler::<LightClientOptimisticUpdateDeneb<MainnetEthSpec>, MainnetEthSpec>::deneb_only(
)
.run();
} }
// LightClientFinalityUpdate has no internal indicator of which fork it is for, so we test it separately. // LightClientFinalityUpdate has no internal indicator of which fork it is for, so we test it separately.
@@ -427,6 +435,12 @@ mod ssz_static {
SszStaticHandler::<LightClientFinalityUpdateDeneb<MainnetEthSpec>, MainnetEthSpec>::deneb_only( SszStaticHandler::<LightClientFinalityUpdateDeneb<MainnetEthSpec>, MainnetEthSpec>::deneb_only(
) )
.run(); .run();
SszStaticHandler::<LightClientFinalityUpdateElectra<MinimalEthSpec>, MinimalEthSpec>::electra_only(
)
.run();
SszStaticHandler::<LightClientFinalityUpdateElectra<MainnetEthSpec>, MainnetEthSpec>::electra_only(
)
.run();
} }
// LightClientUpdate has no internal indicator of which fork it is for, so we test it separately. // LightClientUpdate has no internal indicator of which fork it is for, so we test it separately.
@@ -450,6 +464,12 @@ mod ssz_static {
.run(); .run();
SszStaticHandler::<LightClientUpdateDeneb<MainnetEthSpec>, MainnetEthSpec>::deneb_only() SszStaticHandler::<LightClientUpdateDeneb<MainnetEthSpec>, MainnetEthSpec>::deneb_only()
.run(); .run();
SszStaticHandler::<LightClientUpdateElectra<MinimalEthSpec>, MinimalEthSpec>::electra_only(
)
.run();
SszStaticHandler::<LightClientUpdateElectra<MainnetEthSpec>, MainnetEthSpec>::electra_only(
)
.run();
} }
#[test] #[test]
@@ -503,6 +523,10 @@ mod ssz_static {
.run(); .run();
SszStaticHandler::<ExecutionPayloadDeneb<MainnetEthSpec>, MainnetEthSpec>::deneb_only() SszStaticHandler::<ExecutionPayloadDeneb<MainnetEthSpec>, MainnetEthSpec>::deneb_only()
.run(); .run();
SszStaticHandler::<ExecutionPayloadElectra<MinimalEthSpec>, MinimalEthSpec>::electra_only()
.run();
SszStaticHandler::<ExecutionPayloadElectra<MainnetEthSpec>, MainnetEthSpec>::electra_only()
.run();
} }
#[test] #[test]
@@ -519,6 +543,10 @@ mod ssz_static {
::deneb_only().run(); ::deneb_only().run();
SszStaticHandler::<ExecutionPayloadHeaderDeneb<MainnetEthSpec>, MainnetEthSpec> SszStaticHandler::<ExecutionPayloadHeaderDeneb<MainnetEthSpec>, MainnetEthSpec>
::deneb_only().run(); ::deneb_only().run();
SszStaticHandler::<ExecutionPayloadHeaderElectra<MinimalEthSpec>, MinimalEthSpec>
::electra_only().run();
SszStaticHandler::<ExecutionPayloadHeaderElectra<MainnetEthSpec>, MainnetEthSpec>
::electra_only().run();
} }
#[test] #[test]
@@ -541,14 +569,14 @@ mod ssz_static {
#[test] #[test]
fn blob_sidecar() { fn blob_sidecar() {
SszStaticHandler::<BlobSidecar<MinimalEthSpec>, MinimalEthSpec>::deneb_only().run(); SszStaticHandler::<BlobSidecar<MinimalEthSpec>, MinimalEthSpec>::deneb_and_later().run();
SszStaticHandler::<BlobSidecar<MainnetEthSpec>, MainnetEthSpec>::deneb_only().run(); SszStaticHandler::<BlobSidecar<MainnetEthSpec>, MainnetEthSpec>::deneb_and_later().run();
} }
#[test] #[test]
fn blob_identifier() { fn blob_identifier() {
SszStaticHandler::<BlobIdentifier, MinimalEthSpec>::deneb_only().run(); SszStaticHandler::<BlobIdentifier, MinimalEthSpec>::deneb_and_later().run();
SszStaticHandler::<BlobIdentifier, MainnetEthSpec>::deneb_only().run(); SszStaticHandler::<BlobIdentifier, MainnetEthSpec>::deneb_and_later().run();
} }
#[test] #[test]
@@ -556,6 +584,44 @@ mod ssz_static {
SszStaticHandler::<HistoricalSummary, MinimalEthSpec>::capella_and_later().run(); SszStaticHandler::<HistoricalSummary, MinimalEthSpec>::capella_and_later().run();
SszStaticHandler::<HistoricalSummary, MainnetEthSpec>::capella_and_later().run(); SszStaticHandler::<HistoricalSummary, MainnetEthSpec>::capella_and_later().run();
} }
#[test]
fn consolidation() {
SszStaticHandler::<Consolidation, MinimalEthSpec>::electra_and_later().run();
SszStaticHandler::<Consolidation, MainnetEthSpec>::electra_and_later().run();
}
#[test]
fn deposit_receipt() {
SszStaticHandler::<DepositReceipt, MinimalEthSpec>::electra_and_later().run();
SszStaticHandler::<DepositReceipt, MainnetEthSpec>::electra_and_later().run();
}
#[test]
fn execution_layer_withdrawal_request() {
SszStaticHandler::<ExecutionLayerWithdrawalRequest, MinimalEthSpec>::electra_and_later()
.run();
SszStaticHandler::<ExecutionLayerWithdrawalRequest, MainnetEthSpec>::electra_and_later()
.run();
}
#[test]
fn pending_balance_deposit() {
SszStaticHandler::<PendingBalanceDeposit, MinimalEthSpec>::electra_and_later().run();
SszStaticHandler::<PendingBalanceDeposit, MainnetEthSpec>::electra_and_later().run();
}
#[test]
fn pending_consolidation() {
SszStaticHandler::<PendingConsolidation, MinimalEthSpec>::electra_and_later().run();
SszStaticHandler::<PendingConsolidation, MainnetEthSpec>::electra_and_later().run();
}
#[test]
fn pending_partial_withdrawal() {
SszStaticHandler::<PendingPartialWithdrawal, MinimalEthSpec>::electra_and_later().run();
SszStaticHandler::<PendingPartialWithdrawal, MainnetEthSpec>::electra_and_later().run();
}
} }
#[test] #[test]