Skip to content

Commit

Permalink
Merge of #5588
Browse files Browse the repository at this point in the history
  • Loading branch information
mergify[bot] authored Apr 17, 2024
2 parents 49617f3 + 429efe2 commit 0a0cb6b
Show file tree
Hide file tree
Showing 9 changed files with 46 additions and 52 deletions.
12 changes: 4 additions & 8 deletions beacon_node/beacon_chain/src/test_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -419,21 +419,17 @@ where
self
}

pub fn execution_layer_from_urls(mut self, urls: &[&str]) -> Self {
pub fn execution_layer_from_url(mut self, url: &str) -> Self {
assert!(
self.execution_layer.is_none(),
"execution layer already defined"
);

let urls: Vec<SensitiveUrl> = urls
.iter()
.map(|s| SensitiveUrl::parse(s))
.collect::<Result<_, _>>()
.unwrap();
let url = SensitiveUrl::parse(url).ok();

let config = execution_layer::Config {
execution_endpoints: urls,
secret_files: vec![],
execution_endpoint: url,
secret_file: None,
suggested_fee_recipient: Some(Address::repeat_byte(42)),
..Default::default()
};
Expand Down
22 changes: 8 additions & 14 deletions beacon_node/execution_layer/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -355,14 +355,14 @@ struct Inner<E: EthSpec> {

#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct Config {
/// Endpoint urls for EL nodes that are running the engine api.
pub execution_endpoints: Vec<SensitiveUrl>,
/// Endpoint url for EL nodes that are running the engine api.
pub execution_endpoint: Option<SensitiveUrl>,
/// Endpoint urls for services providing the builder api.
pub builder_url: Option<SensitiveUrl>,
/// User agent to send with requests to the builder API.
pub builder_user_agent: Option<String>,
/// JWT secrets for the above endpoints running the engine api.
pub secret_files: Vec<PathBuf>,
/// JWT secret for the above endpoint running the engine api.
pub secret_file: Option<PathBuf>,
/// The default fee recipient to use on the beacon node if none if provided from
/// the validator client during block preparation.
pub suggested_fee_recipient: Option<Address>,
Expand All @@ -386,27 +386,21 @@ impl<E: EthSpec> ExecutionLayer<E> {
/// Instantiate `Self` with an Execution engine specified in `Config`, using JSON-RPC via HTTP.
pub fn from_config(config: Config, executor: TaskExecutor, log: Logger) -> Result<Self, Error> {
let Config {
execution_endpoints: urls,
execution_endpoint: url,
builder_url,
builder_user_agent,
secret_files,
secret_file,
suggested_fee_recipient,
jwt_id,
jwt_version,
default_datadir,
execution_timeout_multiplier,
} = config;

if urls.len() > 1 {
warn!(log, "Only the first execution engine url will be used");
}
let execution_url = urls.into_iter().next().ok_or(Error::NoEngine)?;
let execution_url = url.ok_or(Error::NoEngine)?;

// Use the default jwt secret path if not provided via cli.
let secret_file = secret_files
.into_iter()
.next()
.unwrap_or_else(|| default_datadir.join(DEFAULT_JWT_FILE));
let secret_file = secret_file.unwrap_or_else(|| default_datadir.join(DEFAULT_JWT_FILE));

let jwt_key = if secret_file.exists() {
// Read secret from file if it already exists
Expand Down
4 changes: 2 additions & 2 deletions beacon_node/execution_layer/src/test_utils/mock_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -229,8 +229,8 @@ impl<E: EthSpec> MockBuilder<E> {

// This EL should not talk to a builder
let config = Config {
execution_endpoints: vec![mock_el_url],
secret_files: vec![path],
execution_endpoint: Some(mock_el_url),
secret_file: Some(path),
suggested_fee_recipient: None,
..Default::default()
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,8 @@ impl<E: EthSpec> MockExecutionLayer<E> {
std::fs::write(&path, hex::encode(DEFAULT_JWT_SECRET)).unwrap();

let config = Config {
execution_endpoints: vec![url],
secret_files: vec![path],
execution_endpoint: Some(url),
secret_file: Some(path),
suggested_fee_recipient: Some(Address::repeat_byte(42)),
..Default::default()
};
Expand Down
4 changes: 2 additions & 2 deletions beacon_node/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -348,8 +348,8 @@ pub fn get_config<E: EthSpec>(
}

// Set config values from parse values.
el_config.secret_files = vec![secret_file.clone()];
el_config.execution_endpoints = vec![execution_endpoint.clone()];
el_config.secret_file = Some(secret_file.clone());
el_config.execution_endpoint = Some(execution_endpoint.clone());
el_config.suggested_fee_recipient =
clap_utils::parse_optional(cli_args, "suggested-fee-recipient")?;
el_config.jwt_id = clap_utils::parse_optional(cli_args, "execution-jwt-id")?;
Expand Down
20 changes: 13 additions & 7 deletions lighthouse/tests/beacon_node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -445,13 +445,16 @@ fn run_merge_execution_endpoints_flag_test(flag: &str) {
.run_with_zero_port()
.with_config(|config| {
let config = config.execution_layer.as_ref().unwrap();
assert_eq!(config.execution_endpoints.len(), 1);
assert_eq!(config.execution_endpoint.is_some(), true);
assert_eq!(
config.execution_endpoints[0],
config.execution_endpoint.as_ref().unwrap().clone(),
SensitiveUrl::parse(&urls[0]).unwrap()
);
// Only the first secret file should be used.
assert_eq!(config.secret_files, vec![jwts[0].clone()]);
assert_eq!(
config.secret_file.as_ref().unwrap().clone(),
jwts[0].clone()
);
});
}
#[test]
Expand All @@ -464,11 +467,11 @@ fn run_execution_jwt_secret_key_is_persisted() {
.with_config(|config| {
let config = config.execution_layer.as_ref().unwrap();
assert_eq!(
config.execution_endpoints[0].full.to_string(),
config.execution_endpoint.as_ref().unwrap().full.to_string(),
"http://localhost:8551/"
);
let mut file_jwt_secret_key = String::new();
File::open(config.secret_files[0].clone())
File::open(config.secret_file.as_ref().unwrap())
.expect("could not open jwt_secret_key file")
.read_to_string(&mut file_jwt_secret_key)
.expect("could not read from file");
Expand Down Expand Up @@ -515,10 +518,13 @@ fn merge_jwt_secrets_flag() {
.with_config(|config| {
let config = config.execution_layer.as_ref().unwrap();
assert_eq!(
config.execution_endpoints[0].full.to_string(),
config.execution_endpoint.as_ref().unwrap().full.to_string(),
"http://localhost:8551/"
);
assert_eq!(config.secret_files[0], dir.path().join("jwt-file"));
assert_eq!(
config.secret_file.as_ref().unwrap().clone(),
dir.path().join("jwt-file")
);
});
}
#[test]
Expand Down
12 changes: 6 additions & 6 deletions testing/execution_engine_integration/src/test_rig.rs
Original file line number Diff line number Diff line change
Expand Up @@ -121,11 +121,11 @@ impl<Engine: GenericExecutionEngine> TestRig<Engine> {

let ee_a = {
let execution_engine = ExecutionEngine::new(generic_engine.clone());
let urls = vec![execution_engine.http_auth_url()];
let url = Some(execution_engine.http_auth_url());

let config = execution_layer::Config {
execution_endpoints: urls,
secret_files: vec![],
execution_endpoint: url,
secret_file: None,
suggested_fee_recipient: Some(Address::repeat_byte(42)),
default_datadir: execution_engine.datadir(),
..Default::default()
Expand All @@ -140,11 +140,11 @@ impl<Engine: GenericExecutionEngine> TestRig<Engine> {

let ee_b = {
let execution_engine = ExecutionEngine::new(generic_engine);
let urls = vec![execution_engine.http_auth_url()];
let url = Some(execution_engine.http_auth_url());

let config = execution_layer::Config {
execution_endpoints: urls,
secret_files: vec![],
execution_endpoint: url,
secret_file: None,
suggested_fee_recipient: fee_recipient,
default_datadir: execution_engine.datadir(),
..Default::default()
Expand Down
8 changes: 3 additions & 5 deletions testing/simulator/src/eth1_sim.rs
Original file line number Diff line number Diff line change
Expand Up @@ -395,11 +395,9 @@ async fn create_local_network<E: EthSpec>(

if post_merge_sim {
let el_config = execution_layer::Config {
execution_endpoints: vec![SensitiveUrl::parse(&format!(
"http://localhost:{}",
EXECUTION_PORT
))
.unwrap()],
execution_endpoint: Some(
SensitiveUrl::parse(&format!("http://localhost:{}", EXECUTION_PORT)).unwrap(),
),
..Default::default()
};

Expand Down
12 changes: 6 additions & 6 deletions testing/simulator/src/local_network.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,9 +85,9 @@ impl<E: EthSpec> LocalNetwork<E> {
mock_execution_config,
);
el_config.default_datadir = execution_node.datadir.path().to_path_buf();
el_config.secret_files = vec![execution_node.datadir.path().join("jwt.hex")];
el_config.execution_endpoints =
vec![SensitiveUrl::parse(&execution_node.server.url()).unwrap()];
el_config.secret_file = Some(execution_node.datadir.path().join("jwt.hex"));
el_config.execution_endpoint =
Some(SensitiveUrl::parse(&execution_node.server.url()).unwrap());
vec![execution_node]
} else {
vec![]
Expand Down Expand Up @@ -180,9 +180,9 @@ impl<E: EthSpec> LocalNetwork<E> {
config,
);
el_config.default_datadir = execution_node.datadir.path().to_path_buf();
el_config.secret_files = vec![execution_node.datadir.path().join("jwt.hex")];
el_config.execution_endpoints =
vec![SensitiveUrl::parse(&execution_node.server.url()).unwrap()];
el_config.secret_file = Some(execution_node.datadir.path().join("jwt.hex"));
el_config.execution_endpoint =
Some(SensitiveUrl::parse(&execution_node.server.url()).unwrap());
self.execution_nodes.write().push(execution_node);
}

Expand Down

0 comments on commit 0a0cb6b

Please sign in to comment.