Fixing Moar Failing Tests

This commit is contained in:
Mark Mackey 2023-01-05 13:00:44 -06:00
parent 8711db2f3b
commit 2ac609b64e
4 changed files with 19 additions and 40 deletions

View File

@ -120,7 +120,7 @@ run-ef-tests:
test-beacon-chain: $(patsubst %,test-beacon-chain-%,$(FORKS)) test-beacon-chain: $(patsubst %,test-beacon-chain-%,$(FORKS))
test-beacon-chain-%: test-beacon-chain-%:
env FORK_NAME=$* cargo test --release --features fork_from_env -p beacon_chain env FORK_NAME=$* cargo test --release --features fork_from_env,withdrawals-processing -p beacon_chain
# Run the tests in the `operation_pool` crate for all known forks. # Run the tests in the `operation_pool` crate for all known forks.
test-op-pool: $(patsubst %,test-op-pool-%,$(FORKS)) test-op-pool: $(patsubst %,test-op-pool-%,$(FORKS))

View File

@ -120,23 +120,19 @@ fn make_rng() -> Mutex<StdRng> {
Mutex::new(StdRng::seed_from_u64(0x0DDB1A5E5BAD5EEDu64)) Mutex::new(StdRng::seed_from_u64(0x0DDB1A5E5BAD5EEDu64))
} }
pub fn get_fork_from_env() -> ForkName {
let fork_string = std::env::var(FORK_NAME_ENV_VAR).unwrap_or_else(|e| {
panic!(
"{} env var must be defined when using fork_from_env: {:?}",
FORK_NAME_ENV_VAR, e
)
});
ForkName::from_str(fork_string.as_str()).unwrap()
}
/// Return a `ChainSpec` suitable for test usage. /// Return a `ChainSpec` suitable for test usage.
/// ///
/// If the `fork_from_env` feature is enabled, read the fork to use from the FORK_NAME environment /// If the `fork_from_env` feature is enabled, read the fork to use from the FORK_NAME environment
/// variable. Otherwise use the default spec. /// variable. Otherwise use the default spec.
pub fn test_spec<E: EthSpec>() -> ChainSpec { pub fn test_spec<E: EthSpec>() -> ChainSpec {
let mut spec = if cfg!(feature = "fork_from_env") { let mut spec = if cfg!(feature = "fork_from_env") {
let fork = get_fork_from_env(); let fork_name = std::env::var(FORK_NAME_ENV_VAR).unwrap_or_else(|e| {
panic!(
"{} env var must be defined when using fork_from_env: {:?}",
FORK_NAME_ENV_VAR, e
)
});
let fork = ForkName::from_str(fork_name.as_str()).unwrap();
fork.make_genesis_spec(E::default_spec()) fork.make_genesis_spec(E::default_spec())
} else { } else {
E::default_spec() E::default_spec()

View File

@ -852,11 +852,11 @@ impl HttpJsonRpc {
pub async fn supported_apis_v1(&self) -> Result<SupportedApis, Error> { pub async fn supported_apis_v1(&self) -> Result<SupportedApis, Error> {
Ok(SupportedApis { Ok(SupportedApis {
new_payload_v1: true, new_payload_v1: true,
new_payload_v2: cfg!(feature = "withdrawals-processing"), new_payload_v2: cfg!(any(feature = "withdrawals-processing", test)),
forkchoice_updated_v1: true, forkchoice_updated_v1: true,
forkchoice_updated_v2: cfg!(feature = "withdrawals-processing"), forkchoice_updated_v2: cfg!(any(feature = "withdrawals-processing", test)),
get_payload_v1: true, get_payload_v1: true,
get_payload_v2: cfg!(feature = "withdrawals-processing"), get_payload_v2: cfg!(any(feature = "withdrawals-processing", test)),
exchange_transition_configuration_v1: true, exchange_transition_configuration_v1: true,
}) })
} }

View File

@ -8,18 +8,19 @@ mod persistence;
mod reward_cache; mod reward_cache;
mod sync_aggregate_id; mod sync_aggregate_id;
use crate::attestation_storage::{AttestationMap, CheckpointKey};
use crate::sync_aggregate_id::SyncAggregateId;
pub use attestation::AttMaxCover; pub use attestation::AttMaxCover;
pub use attestation_storage::{AttestationRef, SplitAttestation}; pub use attestation_storage::{AttestationRef, SplitAttestation};
use attester_slashing::AttesterSlashingMaxCover;
use max_cover::maximum_cover;
pub use max_cover::MaxCover; pub use max_cover::MaxCover;
use parking_lot::{RwLock, RwLockWriteGuard};
pub use persistence::{ pub use persistence::{
PersistedOperationPool, PersistedOperationPoolV12, PersistedOperationPoolV5, PersistedOperationPool, PersistedOperationPoolV12, PersistedOperationPoolV5,
}; };
pub use reward_cache::RewardCache; pub use reward_cache::RewardCache;
use crate::attestation_storage::{AttestationMap, CheckpointKey};
use crate::sync_aggregate_id::SyncAggregateId;
use attester_slashing::AttesterSlashingMaxCover;
use max_cover::maximum_cover;
use parking_lot::{RwLock, RwLockWriteGuard};
use state_processing::per_block_processing::errors::AttestationValidationError; use state_processing::per_block_processing::errors::AttestationValidationError;
use state_processing::per_block_processing::{ use state_processing::per_block_processing::{
get_slashable_indices_modular, verify_exit, VerifySignatures, get_slashable_indices_modular, verify_exit, VerifySignatures,
@ -766,8 +767,7 @@ mod release_tests {
use super::attestation::earliest_attestation_validators; use super::attestation::earliest_attestation_validators;
use super::*; use super::*;
use beacon_chain::test_utils::{ use beacon_chain::test_utils::{
get_fork_from_env, test_spec, BeaconChainHarness, EphemeralHarnessType, test_spec, BeaconChainHarness, EphemeralHarnessType, RelativeSyncCommittee,
RelativeSyncCommittee,
}; };
use lazy_static::lazy_static; use lazy_static::lazy_static;
use maplit::hashset; use maplit::hashset;
@ -1787,28 +1787,11 @@ mod release_tests {
fn cross_fork_harness<E: EthSpec>() -> (BeaconChainHarness<EphemeralHarnessType<E>>, ChainSpec) fn cross_fork_harness<E: EthSpec>() -> (BeaconChainHarness<EphemeralHarnessType<E>>, ChainSpec)
{ {
let mut spec = test_spec::<E>(); let mut spec = E::default_spec();
if cfg!(feature = "fork_from_env") {
let fork = get_fork_from_env();
match fork {
ForkName::Altair | ForkName::Merge | ForkName::Capella | ForkName::Eip4844 => {}
_ => panic!(
"Unknown fork {}, add it above AND below so this test doesn't panic",
fork
),
}
}
// Give some room to sign surround slashings. // Give some room to sign surround slashings.
// It appears we need to set _every_ fork to some non-zero value
// here. Otherwise if we set FORK_NAME_ENV_VAR to some fork that
// isn't listed here, tests that use this function will panic in
// non-trivial ways
spec.altair_fork_epoch = Some(Epoch::new(3)); spec.altair_fork_epoch = Some(Epoch::new(3));
spec.bellatrix_fork_epoch = Some(Epoch::new(6)); spec.bellatrix_fork_epoch = Some(Epoch::new(6));
spec.capella_fork_epoch = Some(Epoch::new(9));
spec.eip4844_fork_epoch = Some(Epoch::new(12));
// To make exits immediately valid. // To make exits immediately valid.
spec.shard_committee_period = 0; spec.shard_committee_period = 0;