mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-17 11:52:42 +00:00
Fix tree-states tests (#5277)
* Fix beta compiler lints * Fix fork choice tests * Fix op_pool tests --------- Co-authored-by: dapplion <35266934+dapplion@users.noreply.github.com>
This commit is contained in:
@@ -18,6 +18,8 @@ pub use persistence::{
|
||||
PersistedOperationPoolV15, PersistedOperationPoolV5,
|
||||
};
|
||||
pub use reward_cache::RewardCache;
|
||||
use state_processing::epoch_cache::is_epoch_cache_initialized;
|
||||
use types::EpochCacheError;
|
||||
|
||||
use crate::attestation_storage::{AttestationMap, CheckpointKey};
|
||||
use crate::bls_to_execution_changes::BlsToExecutionChanges;
|
||||
@@ -75,6 +77,8 @@ pub enum OpPoolError {
|
||||
RewardCacheValidatorUnknown(BeaconStateError),
|
||||
RewardCacheOutOfBounds,
|
||||
IncorrectOpPoolVariant,
|
||||
EpochCacheNotInitialized,
|
||||
EpochCacheError(EpochCacheError),
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
@@ -252,6 +256,17 @@ impl<T: EthSpec> OperationPool<T> {
|
||||
curr_epoch_validity_filter: impl for<'a> FnMut(&AttestationRef<'a, T>) -> bool + Send,
|
||||
spec: &ChainSpec,
|
||||
) -> Result<Vec<Attestation<T>>, OpPoolError> {
|
||||
if let BeaconState::Base(_) = state {
|
||||
// Ok
|
||||
} else {
|
||||
// epoch cache must be initialized to fetch base_reward values in the max_cover score
|
||||
// function. Currently max_cover ignores items on errors. If epoch cache is not
|
||||
// initialized, this function returns Ok([]).
|
||||
if !is_epoch_cache_initialized(state).map_err(OpPoolError::EpochCacheError)? {
|
||||
return Err(OpPoolError::EpochCacheNotInitialized);
|
||||
}
|
||||
};
|
||||
|
||||
// Attestations for the current fork, which may be from the current or previous epoch.
|
||||
let (prev_epoch_key, curr_epoch_key) = CheckpointKey::keys_for_state(state);
|
||||
let all_attestations = self.attestations.read();
|
||||
@@ -773,6 +788,7 @@ mod release_tests {
|
||||
};
|
||||
use lazy_static::lazy_static;
|
||||
use maplit::hashset;
|
||||
use state_processing::epoch_cache::initialize_epoch_cache;
|
||||
use state_processing::{common::get_attesting_indices_from_state, VerifyOperation};
|
||||
use std::collections::BTreeSet;
|
||||
use types::consts::altair::SYNC_COMMITTEE_SUBNET_COUNT;
|
||||
@@ -814,6 +830,15 @@ mod release_tests {
|
||||
(harness, spec)
|
||||
}
|
||||
|
||||
fn get_current_state_initialize_epoch_cache<E: EthSpec>(
|
||||
harness: &BeaconChainHarness<EphemeralHarnessType<E>>,
|
||||
spec: &ChainSpec,
|
||||
) -> BeaconState<E> {
|
||||
let mut state = harness.get_current_state();
|
||||
initialize_epoch_cache(&mut state, spec).unwrap();
|
||||
state
|
||||
}
|
||||
|
||||
/// Test state for sync contribution-related tests.
|
||||
async fn sync_contribution_test_state<E: EthSpec>(
|
||||
num_committees: usize,
|
||||
@@ -847,7 +872,7 @@ mod release_tests {
|
||||
return;
|
||||
}
|
||||
|
||||
let mut state = harness.get_current_state();
|
||||
let mut state = get_current_state_initialize_epoch_cache(&harness, &spec);
|
||||
let slot = state.slot();
|
||||
let committees = state
|
||||
.get_beacon_committees_at_slot(slot)
|
||||
@@ -929,7 +954,7 @@ mod release_tests {
|
||||
let (harness, ref spec) = attestation_test_state::<MainnetEthSpec>(1);
|
||||
|
||||
let op_pool = OperationPool::<MainnetEthSpec>::new();
|
||||
let mut state = harness.get_current_state();
|
||||
let mut state = get_current_state_initialize_epoch_cache(&harness, &spec);
|
||||
|
||||
let slot = state.slot();
|
||||
let committees = state
|
||||
@@ -1004,7 +1029,7 @@ mod release_tests {
|
||||
fn attestation_duplicate() {
|
||||
let (harness, ref spec) = attestation_test_state::<MainnetEthSpec>(1);
|
||||
|
||||
let state = harness.get_current_state();
|
||||
let state = get_current_state_initialize_epoch_cache(&harness, &spec);
|
||||
|
||||
let op_pool = OperationPool::<MainnetEthSpec>::new();
|
||||
|
||||
@@ -1044,7 +1069,7 @@ mod release_tests {
|
||||
fn attestation_pairwise_overlapping() {
|
||||
let (harness, ref spec) = attestation_test_state::<MainnetEthSpec>(1);
|
||||
|
||||
let state = harness.get_current_state();
|
||||
let state = get_current_state_initialize_epoch_cache(&harness, &spec);
|
||||
|
||||
let op_pool = OperationPool::<MainnetEthSpec>::new();
|
||||
|
||||
@@ -1142,7 +1167,7 @@ mod release_tests {
|
||||
|
||||
let (harness, ref spec) = attestation_test_state::<MainnetEthSpec>(num_committees);
|
||||
|
||||
let mut state = harness.get_current_state();
|
||||
let mut state = get_current_state_initialize_epoch_cache(&harness, &spec);
|
||||
|
||||
let op_pool = OperationPool::<MainnetEthSpec>::new();
|
||||
|
||||
@@ -1232,7 +1257,7 @@ mod release_tests {
|
||||
|
||||
let (harness, ref spec) = attestation_test_state::<MainnetEthSpec>(num_committees);
|
||||
|
||||
let mut state = harness.get_current_state();
|
||||
let mut state = get_current_state_initialize_epoch_cache(&harness, &spec);
|
||||
let op_pool = OperationPool::<MainnetEthSpec>::new();
|
||||
|
||||
let slot = state.slot();
|
||||
|
||||
Reference in New Issue
Block a user