diff --git a/crates/apollo_integration_tests/src/flow_test_setup.rs b/crates/apollo_integration_tests/src/flow_test_setup.rs index e27eaf3adef..259674470c6 100644 --- a/crates/apollo_integration_tests/src/flow_test_setup.rs +++ b/crates/apollo_integration_tests/src/flow_test_setup.rs @@ -65,6 +65,7 @@ use crate::utils::{ spawn_local_eth_to_strk_oracle, spawn_local_success_recorder, AccumulatedTransactions, + ProposalMarginMillis, }; pub const NUM_OF_SEQUENCERS: usize = 2; @@ -96,6 +97,7 @@ impl FlowTestSetup { block_max_capacity_gas: GasAmount, allow_bootstrap_txs: bool, instance_indices: [u16; 3], + proposal_margin_millis: Option, ) -> Self { let chain_info = ChainInfo::create_for_testing(); let [shared_instance_index, sequencer_0_instance_index, sequencer_1_instance_index] = @@ -107,6 +109,7 @@ impl FlowTestSetup { create_consensus_manager_configs_and_channels( available_ports.get_next_ports(NUM_OF_SEQUENCERS + 1), &chain_info.chain_id, + proposal_margin_millis, ); let [sequencer_0_consensus_manager_config, sequencer_1_consensus_manager_config] = consensus_manager_configs.try_into().unwrap(); @@ -325,6 +328,7 @@ impl FlowSequencerSetup { pub fn create_consensus_manager_configs_and_channels( ports: Vec, chain_id: &ChainId, + proposal_margin_millis: Option, ) -> ( Vec, BroadcastTopicChannels>, @@ -338,6 +342,7 @@ pub fn create_consensus_manager_configs_and_channels( network_configs, n_network_configs, chain_id, + proposal_margin_millis, ); for (i, config) in consensus_manager_configs.iter_mut().enumerate() { diff --git a/crates/apollo_integration_tests/src/integration_test_manager.rs b/crates/apollo_integration_tests/src/integration_test_manager.rs index 7d15d3ff1c7..a8e1b72d9e6 100644 --- a/crates/apollo_integration_tests/src/integration_test_manager.rs +++ b/crates/apollo_integration_tests/src/integration_test_manager.rs @@ -1118,6 +1118,7 @@ async fn get_sequencer_setup_configs( ), component_configs_len, &chain_info.chain_id, + None, ); let node_indices: HashSet = (0..component_configs_len).collect(); diff --git a/crates/apollo_integration_tests/src/utils.rs b/crates/apollo_integration_tests/src/utils.rs index ffde4c83c92..a54e460a944 100644 --- a/crates/apollo_integration_tests/src/utils.rs +++ b/crates/apollo_integration_tests/src/utils.rs @@ -106,6 +106,21 @@ pub type CreateL1ToL2MessagesArgsFn = fn(&mut MultiAccountTransactionGenerator) -> Vec; pub type TestTxHashesFn = fn(&[TransactionHash]) -> Vec; +#[derive(Clone, Copy, Debug)] +pub struct ProposalMarginMillis { + pub build_proposal_margin_millis: Duration, + pub validate_proposal_margin_millis: Duration, +} + +impl ProposalMarginMillis { + pub fn new(build_proposal_margin_millis: u64, validate_proposal_margin_millis: u64) -> Self { + Self { + build_proposal_margin_millis: Duration::from_millis(build_proposal_margin_millis), + validate_proposal_margin_millis: Duration::from_millis(validate_proposal_margin_millis), + } + } +} + pub trait TestScenario { fn create_txs( &self, @@ -344,6 +359,7 @@ pub(crate) fn create_consensus_manager_configs_from_network_configs( network_configs: Vec, n_composed_nodes: usize, chain_id: &ChainId, + proposal_margin_millis: Option, ) -> Vec { let num_validators = u64::try_from(n_composed_nodes).unwrap(); let mut timeouts = TimeoutsConfig::default(); @@ -352,7 +368,21 @@ pub(crate) fn create_consensus_manager_configs_from_network_configs( network_configs .into_iter() // TODO(Matan): Get config from default config file. - .map(|network_config| ConsensusManagerConfig { + .map(|network_config| { + let mut context_config = ContextConfig { + static_config: ContextStaticConfig { + num_validators, + chain_id: chain_id.clone(), + builder_address: ContractAddress::from(4_u128), + ..Default::default() + }, + ..Default::default() + }; + if let Some(build_margin_millis) = proposal_margin_millis { + context_config.static_config.build_proposal_margin_millis = build_margin_millis.build_proposal_margin_millis; + context_config.static_config.validate_proposal_margin_millis = build_margin_millis.validate_proposal_margin_millis; + } + ConsensusManagerConfig { network_config, consensus_manager_config: ConsensusConfig { dynamic_config: ConsensusDynamicConfig { @@ -370,21 +400,13 @@ pub(crate) fn create_consensus_manager_configs_from_network_configs( startup_delay: Duration::from_secs(15), }, }, - context_config: ContextConfig { - static_config: ContextStaticConfig { - num_validators, - chain_id: chain_id.clone(), - builder_address: ContractAddress::from(4_u128), - ..Default::default() - }, - ..Default::default() - }, + context_config, cende_config: CendeConfig { ..Default::default() }, assume_no_malicious_validators: true, ..Default::default() - }) + }}) .collect() } @@ -812,6 +834,7 @@ pub struct EndToEndFlowArgs { pub expecting_full_blocks: bool, pub expecting_reverted_transactions: bool, pub allow_bootstrap_txs: bool, + pub proposal_margin_millis: Option, } impl EndToEndFlowArgs { @@ -828,6 +851,7 @@ impl EndToEndFlowArgs { expecting_full_blocks: false, expecting_reverted_transactions: false, allow_bootstrap_txs: false, + proposal_margin_millis: None, } } @@ -846,6 +870,20 @@ impl EndToEndFlowArgs { pub fn instance_indices(self, instance_indices: [u16; 3]) -> Self { Self { instance_indices, ..self } } + + pub fn proposal_margin_millis( + self, + build_proposal_margin_millis: u64, + validate_proposal_margin_millis: u64, + ) -> Self { + Self { + proposal_margin_millis: Some(ProposalMarginMillis::new( + build_proposal_margin_millis, + validate_proposal_margin_millis, + )), + ..self + } + } } // Note: run integration/flow tests from separate files in `tests/`, which helps cargo ensure @@ -860,6 +898,7 @@ pub async fn end_to_end_flow(args: EndToEndFlowArgs) { expecting_full_blocks, expecting_reverted_transactions, allow_bootstrap_txs, + proposal_margin_millis, } = args; configure_tracing().await; @@ -876,6 +915,7 @@ pub async fn end_to_end_flow(args: EndToEndFlowArgs) { block_max_capacity_gas, allow_bootstrap_txs, instance_indices, + proposal_margin_millis, ) .await; diff --git a/crates/apollo_integration_tests/tests/bootstrap_declare.rs b/crates/apollo_integration_tests/tests/bootstrap_declare.rs index 9e168bfc0b7..d2c54462158 100644 --- a/crates/apollo_integration_tests/tests/bootstrap_declare.rs +++ b/crates/apollo_integration_tests/tests/bootstrap_declare.rs @@ -28,7 +28,8 @@ async fn bootstrap_declare() { create_bootstrap_declare_scenario(), GasAmount(29000000), ) - .allow_bootstrap_txs(), + .allow_bootstrap_txs() + .proposal_margin_millis(100, 1000), ) .await } diff --git a/crates/apollo_integration_tests/tests/declare_tx_flow_test.rs b/crates/apollo_integration_tests/tests/declare_tx_flow_test.rs index 6227cf66001..00925d9f081 100644 --- a/crates/apollo_integration_tests/tests/declare_tx_flow_test.rs +++ b/crates/apollo_integration_tests/tests/declare_tx_flow_test.rs @@ -20,7 +20,8 @@ async fn declare_tx_flow() { create_test_scenarios(), BouncerWeights::default().proving_gas, ) - .instance_indices([0, 1, 2]), + .instance_indices([0, 1, 2]) + .proposal_margin_millis(100, 1000), ) .await } diff --git a/crates/apollo_integration_tests/tests/deploy_account_and_invoke_flow_test.rs b/crates/apollo_integration_tests/tests/deploy_account_and_invoke_flow_test.rs index 1a67eff73cc..85ca6ad6b57 100644 --- a/crates/apollo_integration_tests/tests/deploy_account_and_invoke_flow_test.rs +++ b/crates/apollo_integration_tests/tests/deploy_account_and_invoke_flow_test.rs @@ -22,7 +22,8 @@ async fn deploy_account_and_invoke_flow() { create_test_scenarios(), BouncerWeights::default().proving_gas, ) - .instance_indices([3, 4, 5]), + .instance_indices([3, 4, 5]) + .proposal_margin_millis(100, 1000), ) .await } diff --git a/crates/apollo_integration_tests/tests/funding_txs_flow_test.rs b/crates/apollo_integration_tests/tests/funding_txs_flow_test.rs index 9d4025092ca..de4069ed50a 100644 --- a/crates/apollo_integration_tests/tests/funding_txs_flow_test.rs +++ b/crates/apollo_integration_tests/tests/funding_txs_flow_test.rs @@ -21,7 +21,8 @@ async fn funding_txs_flow() { create_test_scenarios(), BouncerWeights::default().proving_gas, ) - .instance_indices([6, 7, 8]), + .instance_indices([6, 7, 8]) + .proposal_margin_millis(100, 1000), ) .await } diff --git a/crates/apollo_integration_tests/tests/l1_to_l2_message_flow_test.rs b/crates/apollo_integration_tests/tests/l1_to_l2_message_flow_test.rs index 054248b0bc1..c1ac9e7be2d 100644 --- a/crates/apollo_integration_tests/tests/l1_to_l2_message_flow_test.rs +++ b/crates/apollo_integration_tests/tests/l1_to_l2_message_flow_test.rs @@ -18,7 +18,8 @@ async fn l1_to_l2_message_flow() { create_test_scenarios(), BouncerWeights::default().proving_gas, ) - .instance_indices([9, 10, 11]), + .instance_indices([9, 10, 11]) + .proposal_margin_millis(100, 1000), ) .await } diff --git a/crates/apollo_integration_tests/tests/multiple_account_txs_flow_test.rs b/crates/apollo_integration_tests/tests/multiple_account_txs_flow_test.rs index 9e0cb911d03..de2dac55ba0 100644 --- a/crates/apollo_integration_tests/tests/multiple_account_txs_flow_test.rs +++ b/crates/apollo_integration_tests/tests/multiple_account_txs_flow_test.rs @@ -21,7 +21,8 @@ async fn multiple_account_txs_flow() { create_test_scenarios(), BouncerWeights::default().proving_gas, ) - .instance_indices([12, 13, 14]), + .instance_indices([12, 13, 14]) + .proposal_margin_millis(100, 1000), ) .await } diff --git a/crates/apollo_integration_tests/tests/reverted_l1_handler_tx_flow_test.rs b/crates/apollo_integration_tests/tests/reverted_l1_handler_tx_flow_test.rs index fcacfc5bd0d..ec43b123372 100644 --- a/crates/apollo_integration_tests/tests/reverted_l1_handler_tx_flow_test.rs +++ b/crates/apollo_integration_tests/tests/reverted_l1_handler_tx_flow_test.rs @@ -19,7 +19,8 @@ async fn reverted_l1_handler_tx_flow() { create_test_scenarios(), BouncerWeights::default().proving_gas, ) - .expecting_reverted_transactions(), + .expecting_reverted_transactions() + .proposal_margin_millis(100, 1000), ) .await }