mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-10 12:11:59 +00:00
Fix broken Nethermind integration tests (#4836)
## Issue Addressed CI is currently blocked by persistently failing integration tests. ## Proposed Changes Use latest Nethermind release and apply the appropriate fixes as there have been breaking changes. Also increase the timeout since I had some local timeouts. Co-authored-by: Michael Sproul <michael@sigmaprime.io> Co-authored-by: antondlr <anton@delaruelle.net> Co-authored-by: Jimmy Chen <jchen.tc@gmail.com>
This commit is contained in:
@@ -18,7 +18,9 @@ use types::{
|
||||
Address, ChainSpec, EthSpec, ExecutionBlockHash, ExecutionPayload, ExecutionPayloadHeader,
|
||||
ForkName, FullPayload, Hash256, MainnetEthSpec, PublicKeyBytes, Slot, Uint256,
|
||||
};
|
||||
const EXECUTION_ENGINE_START_TIMEOUT: Duration = Duration::from_secs(30);
|
||||
const EXECUTION_ENGINE_START_TIMEOUT: Duration = Duration::from_secs(60);
|
||||
|
||||
const TEST_FORK: ForkName = ForkName::Capella;
|
||||
|
||||
struct ExecutionPair<E, T: EthSpec> {
|
||||
/// The Lighthouse `ExecutionLayer` struct, connected to the `execution_engine` via HTTP.
|
||||
@@ -110,7 +112,7 @@ impl<E: GenericExecutionEngine> TestRig<E> {
|
||||
let (runtime_shutdown, exit) = exit_future::signal();
|
||||
let (shutdown_tx, _) = futures::channel::mpsc::channel(1);
|
||||
let executor = TaskExecutor::new(Arc::downgrade(&runtime), exit, log.clone(), shutdown_tx);
|
||||
let mut spec = MainnetEthSpec::default_spec();
|
||||
let mut spec = TEST_FORK.make_genesis_spec(MainnetEthSpec::default_spec());
|
||||
spec.terminal_total_difficulty = Uint256::zero();
|
||||
|
||||
let fee_recipient = None;
|
||||
@@ -269,12 +271,11 @@ impl<E: GenericExecutionEngine> TestRig<E> {
|
||||
Slot::new(1), // Insert proposer for the next slot
|
||||
head_root,
|
||||
proposer_index,
|
||||
// TODO: think about how to test different forks
|
||||
PayloadAttributes::new(
|
||||
timestamp,
|
||||
prev_randao,
|
||||
Address::repeat_byte(42),
|
||||
None,
|
||||
Some(vec![]),
|
||||
None,
|
||||
),
|
||||
)
|
||||
@@ -314,8 +315,13 @@ impl<E: GenericExecutionEngine> TestRig<E> {
|
||||
.execution_layer
|
||||
.get_suggested_fee_recipient(proposer_index)
|
||||
.await;
|
||||
let payload_attributes =
|
||||
PayloadAttributes::new(timestamp, prev_randao, suggested_fee_recipient, None, None);
|
||||
let payload_attributes = PayloadAttributes::new(
|
||||
timestamp,
|
||||
prev_randao,
|
||||
suggested_fee_recipient,
|
||||
Some(vec![]),
|
||||
None,
|
||||
);
|
||||
let valid_payload = self
|
||||
.ee_a
|
||||
.execution_layer
|
||||
@@ -324,8 +330,7 @@ impl<E: GenericExecutionEngine> TestRig<E> {
|
||||
&payload_attributes,
|
||||
forkchoice_update_params,
|
||||
builder_params,
|
||||
// FIXME: think about how to test other forks
|
||||
ForkName::Merge,
|
||||
TEST_FORK,
|
||||
&self.spec,
|
||||
)
|
||||
.await
|
||||
@@ -456,8 +461,13 @@ impl<E: GenericExecutionEngine> TestRig<E> {
|
||||
.execution_layer
|
||||
.get_suggested_fee_recipient(proposer_index)
|
||||
.await;
|
||||
let payload_attributes =
|
||||
PayloadAttributes::new(timestamp, prev_randao, suggested_fee_recipient, None, None);
|
||||
let payload_attributes = PayloadAttributes::new(
|
||||
timestamp,
|
||||
prev_randao,
|
||||
suggested_fee_recipient,
|
||||
Some(vec![]),
|
||||
None,
|
||||
);
|
||||
let second_payload = self
|
||||
.ee_a
|
||||
.execution_layer
|
||||
@@ -466,8 +476,7 @@ impl<E: GenericExecutionEngine> TestRig<E> {
|
||||
&payload_attributes,
|
||||
forkchoice_update_params,
|
||||
builder_params,
|
||||
// FIXME: think about how to test other forks
|
||||
ForkName::Merge,
|
||||
TEST_FORK,
|
||||
&self.spec,
|
||||
)
|
||||
.await
|
||||
@@ -498,11 +507,15 @@ impl<E: GenericExecutionEngine> TestRig<E> {
|
||||
*/
|
||||
let head_block_hash = valid_payload.block_hash();
|
||||
let finalized_block_hash = ExecutionBlockHash::zero();
|
||||
// TODO: think about how to handle different forks
|
||||
// To save sending proposer preparation data, just set the fee recipient
|
||||
// to the fee recipient configured for EE A.
|
||||
let payload_attributes =
|
||||
PayloadAttributes::new(timestamp, prev_randao, Address::repeat_byte(42), None, None);
|
||||
let payload_attributes = PayloadAttributes::new(
|
||||
timestamp,
|
||||
prev_randao,
|
||||
Address::repeat_byte(42),
|
||||
Some(vec![]),
|
||||
None,
|
||||
);
|
||||
let slot = Slot::new(42);
|
||||
let head_block_root = Hash256::repeat_byte(100);
|
||||
let validator_index = 0;
|
||||
@@ -536,11 +549,7 @@ impl<E: GenericExecutionEngine> TestRig<E> {
|
||||
.notify_new_payload(second_payload.clone().try_into().unwrap())
|
||||
.await
|
||||
.unwrap();
|
||||
// TODO: we should remove the `Accepted` status here once Geth fixes it
|
||||
assert!(matches!(
|
||||
status,
|
||||
PayloadStatus::Syncing | PayloadStatus::Accepted
|
||||
));
|
||||
assert!(matches!(status, PayloadStatus::Syncing));
|
||||
|
||||
/*
|
||||
* Execution Engine B:
|
||||
@@ -641,11 +650,13 @@ async fn check_payload_reconstruction<E: GenericExecutionEngine>(
|
||||
.get_engine_capabilities(None)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
assert!(
|
||||
// if the engine doesn't have these capabilities, we need to update the client in our tests
|
||||
capabilities.get_payload_bodies_by_hash_v1 && capabilities.get_payload_bodies_by_range_v1,
|
||||
"Testing engine does not support payload bodies methods"
|
||||
);
|
||||
|
||||
let mut bodies = ee
|
||||
.execution_layer
|
||||
.get_payload_bodies_by_hash(vec![payload.block_hash()])
|
||||
|
||||
Reference in New Issue
Block a user