mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-03 00:31:50 +00:00
Merge branch 'unstable' of https://github.com/sigp/lighthouse into merge-unstable-deneb-aug-24
This commit is contained in:
@@ -28,6 +28,7 @@ use sensitive_url::SensitiveUrl;
|
||||
use slot_clock::SlotClock;
|
||||
use state_processing::per_block_processing::get_expected_withdrawals;
|
||||
use state_processing::per_slot_processing;
|
||||
use state_processing::state_advance::partial_state_advance;
|
||||
use std::convert::TryInto;
|
||||
use std::sync::Arc;
|
||||
use tokio::time::Duration;
|
||||
@@ -4443,6 +4444,72 @@ impl ApiTester {
|
||||
self
|
||||
}
|
||||
|
||||
pub async fn test_get_expected_withdrawals_invalid_state(self) -> Self {
|
||||
let state_id = CoreStateId::Root(Hash256::zero());
|
||||
|
||||
let result = self.client.get_expected_withdrawals(&state_id).await;
|
||||
|
||||
match result {
|
||||
Err(e) => {
|
||||
assert_eq!(e.status().unwrap(), 404);
|
||||
}
|
||||
_ => panic!("query did not fail correctly"),
|
||||
}
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
pub async fn test_get_expected_withdrawals_capella(self) -> Self {
|
||||
let slot = self.chain.slot().unwrap();
|
||||
let state_id = CoreStateId::Slot(slot);
|
||||
|
||||
// calculate the expected withdrawals
|
||||
let (mut state, _, _) = StateId(state_id).state(&self.chain).unwrap();
|
||||
let proposal_slot = state.slot() + 1;
|
||||
let proposal_epoch = proposal_slot.epoch(E::slots_per_epoch());
|
||||
let (state_root, _, _) = StateId(state_id).root(&self.chain).unwrap();
|
||||
if proposal_epoch != state.current_epoch() {
|
||||
let _ = partial_state_advance(
|
||||
&mut state,
|
||||
Some(state_root),
|
||||
proposal_slot,
|
||||
&self.chain.spec,
|
||||
);
|
||||
}
|
||||
let expected_withdrawals = get_expected_withdrawals(&state, &self.chain.spec).unwrap();
|
||||
|
||||
// fetch expected withdrawals from the client
|
||||
let result = self.client.get_expected_withdrawals(&state_id).await;
|
||||
match result {
|
||||
Ok(withdrawal_response) => {
|
||||
assert_eq!(withdrawal_response.execution_optimistic, Some(false));
|
||||
assert_eq!(withdrawal_response.finalized, Some(false));
|
||||
assert_eq!(withdrawal_response.data, expected_withdrawals.to_vec());
|
||||
}
|
||||
Err(e) => {
|
||||
println!("{:?}", e);
|
||||
panic!("query failed incorrectly");
|
||||
}
|
||||
}
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
pub async fn test_get_expected_withdrawals_pre_capella(self) -> Self {
|
||||
let state_id = CoreStateId::Head;
|
||||
|
||||
let result = self.client.get_expected_withdrawals(&state_id).await;
|
||||
|
||||
match result {
|
||||
Err(e) => {
|
||||
assert_eq!(e.status().unwrap(), 400);
|
||||
}
|
||||
_ => panic!("query did not fail correctly"),
|
||||
}
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
pub async fn test_get_events_altair(self) -> Self {
|
||||
let topics = vec![EventTopic::ContributionAndProof];
|
||||
let mut events_future = self
|
||||
@@ -5245,3 +5312,37 @@ async fn optimistic_responses() {
|
||||
.test_check_optimistic_responses()
|
||||
.await;
|
||||
}
|
||||
|
||||
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
||||
async fn expected_withdrawals_invalid_pre_capella() {
|
||||
let mut config = ApiTesterConfig::default();
|
||||
config.spec.altair_fork_epoch = Some(Epoch::new(0));
|
||||
ApiTester::new_from_config(config)
|
||||
.await
|
||||
.test_get_expected_withdrawals_pre_capella()
|
||||
.await;
|
||||
}
|
||||
|
||||
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
||||
async fn expected_withdrawals_invalid_state() {
|
||||
let mut config = ApiTesterConfig::default();
|
||||
config.spec.altair_fork_epoch = Some(Epoch::new(0));
|
||||
config.spec.bellatrix_fork_epoch = Some(Epoch::new(0));
|
||||
config.spec.capella_fork_epoch = Some(Epoch::new(0));
|
||||
ApiTester::new_from_config(config)
|
||||
.await
|
||||
.test_get_expected_withdrawals_invalid_state()
|
||||
.await;
|
||||
}
|
||||
|
||||
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
||||
async fn expected_withdrawals_valid_capella() {
|
||||
let mut config = ApiTesterConfig::default();
|
||||
config.spec.altair_fork_epoch = Some(Epoch::new(0));
|
||||
config.spec.bellatrix_fork_epoch = Some(Epoch::new(0));
|
||||
config.spec.capella_fork_epoch = Some(Epoch::new(0));
|
||||
ApiTester::new_from_config(config)
|
||||
.await
|
||||
.test_get_expected_withdrawals_capella()
|
||||
.await;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user