From 8da95ac9c60c5a3090bd4e584f70aa1718aabcec Mon Sep 17 00:00:00 2001 From: realbigsean Date: Thu, 8 Jun 2023 09:21:04 -0400 Subject: [PATCH] Fix ef tests --- .../execution_layer/src/engine_api/http.rs | 25 ++++++++-------- testing/ef_tests/check_all_files_accessed.py | 3 +- testing/ef_tests/src/cases/operations.rs | 30 +++++++++++++++---- testing/ef_tests/tests/tests.rs | 8 ++--- 4 files changed, 43 insertions(+), 23 deletions(-) diff --git a/beacon_node/execution_layer/src/engine_api/http.rs b/beacon_node/execution_layer/src/engine_api/http.rs index 0ae4a82ecc..31b21a8dad 100644 --- a/beacon_node/execution_layer/src/engine_api/http.rs +++ b/beacon_node/execution_layer/src/engine_api/http.rs @@ -1105,19 +1105,18 @@ impl HttpJsonRpc { execution_payload: ExecutionPayload, versioned_hashes_opt: Option>, ) -> Result { - let engine_capabilities = self.get_engine_capabilities(None).await?; - if engine_capabilities.new_payload_v3 { - let Some(versioned_hashes) = versioned_hashes_opt else { - return Err(Error::IncorrectStateVariant); - }; - self.new_payload_v3(execution_payload, versioned_hashes) - .await - } else if engine_capabilities.new_payload_v2 { - self.new_payload_v2(execution_payload).await - } else if engine_capabilities.new_payload_v1 { - self.new_payload_v1(execution_payload).await - } else { - Err(Error::RequiredMethodUnsupported("engine_newPayload")) + // TODO(sean): opting to just use one struct one endpoint approach for simplicity, + // also this is in the pipeline:https://github.com/ethereum/execution-apis/pull/418/files + match execution_payload { + ExecutionPayload::Merge(_) => self.new_payload_v1(execution_payload).await, + ExecutionPayload::Capella(_) => self.new_payload_v2(execution_payload).await, + ExecutionPayload::Deneb(_) => { + let Some(versioned_hashes) = versioned_hashes_opt else { + return Err(Error::IncorrectStateVariant); + }; + self.new_payload_v3(execution_payload, versioned_hashes) + .await + } } } diff --git a/testing/ef_tests/check_all_files_accessed.py b/testing/ef_tests/check_all_files_accessed.py index 60db5125fc..a111b45b70 100755 --- a/testing/ef_tests/check_all_files_accessed.py +++ b/testing/ef_tests/check_all_files_accessed.py @@ -54,7 +54,8 @@ excluded_paths = [ # FIXME(sean) "tests/mainnet/capella/light_client/single_merkle_proof/BeaconBlockBody/*", "tests/mainnet/deneb/light_client/single_merkle_proof/BeaconBlockBody/*", - "tests/general/deneb/kzg" + "tests/general/deneb/kzg", + "tests/.*/eip6110" ] diff --git a/testing/ef_tests/src/cases/operations.rs b/testing/ef_tests/src/cases/operations.rs index abd511ede7..002558d6b4 100644 --- a/testing/ef_tests/src/cases/operations.rs +++ b/testing/ef_tests/src/cases/operations.rs @@ -20,9 +20,10 @@ use state_processing::{ use std::fmt::Debug; use std::path::Path; use types::{ - map_fork_name, map_fork_name_with, Attestation, AttesterSlashing, BeaconBlock, BeaconBlockBody, - BeaconState, BlindedPayload, ChainSpec, Deposit, EthSpec, ExecutionPayload, ForkName, - FullPayload, ProposerSlashing, SignedBlsToExecutionChange, SignedVoluntaryExit, SyncAggregate, + Attestation, AttesterSlashing, BeaconBlock, BeaconBlockBody, BeaconBlockBodyCapella, + BeaconBlockBodyDeneb, BeaconBlockBodyMerge, BeaconState, BlindedPayload, ChainSpec, Deposit, + EthSpec, ExecutionPayload, ForkName, FullPayload, ProposerSlashing, SignedBlsToExecutionChange, + SignedVoluntaryExit, SyncAggregate, }; #[derive(Debug, Clone, Default, Deserialize)] @@ -275,7 +276,12 @@ impl Operation for BeaconBlockBody> { fn decode(path: &Path, fork_name: ForkName, _spec: &ChainSpec) -> Result { ssz_decode_file_with(path, |bytes| { - Ok(map_fork_name!(fork_name, Self, <_>::from_ssz_bytes(bytes)?)) + Ok(match fork_name { + ForkName::Merge => BeaconBlockBody::Merge(<_>::from_ssz_bytes(bytes)?), + ForkName::Capella => BeaconBlockBody::Capella(<_>::from_ssz_bytes(bytes)?), + ForkName::Deneb => BeaconBlockBody::Deneb(<_>::from_ssz_bytes(bytes)?), + _ => panic!(), + }) }) } @@ -311,7 +317,21 @@ impl Operation for BeaconBlockBody> { fn decode(path: &Path, fork_name: ForkName, _spec: &ChainSpec) -> Result { ssz_decode_file_with(path, |bytes| { - Ok(map_fork_name!(fork_name, Self, <_>::from_ssz_bytes(bytes)?)) + Ok(match fork_name { + ForkName::Merge => { + let inner = >>::from_ssz_bytes(bytes)?; + BeaconBlockBody::Merge(inner.clone_as_blinded()) + } + ForkName::Capella => { + let inner = >>::from_ssz_bytes(bytes)?; + BeaconBlockBody::Capella(inner.clone_as_blinded()) + } + ForkName::Deneb => { + let inner = >>::from_ssz_bytes(bytes)?; + BeaconBlockBody::Deneb(inner.clone_as_blinded()) + } + _ => panic!(), + }) }) } diff --git a/testing/ef_tests/tests/tests.rs b/testing/ef_tests/tests/tests.rs index 7d9d8d9085..d2d30b596c 100644 --- a/testing/ef_tests/tests/tests.rs +++ b/testing/ef_tests/tests/tests.rs @@ -72,14 +72,14 @@ fn operations_sync_aggregate() { #[test] fn operations_execution_payload_full() { - OperationsHandler::>::default().run(); - OperationsHandler::>::default().run(); + OperationsHandler::>>::default().run(); + OperationsHandler::>>::default().run(); } #[test] fn operations_execution_payload_blinded() { - OperationsHandler::>::default().run(); - OperationsHandler::>::default().run(); + OperationsHandler::>>::default().run(); + OperationsHandler::>>::default().run(); } #[test]