Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions crates/apollo_integration_tests/src/flow_test_setup.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -96,6 +97,7 @@ impl FlowTestSetup {
block_max_capacity_gas: GasAmount,
allow_bootstrap_txs: bool,
instance_indices: [u16; 3],
proposal_margin_millis: Option<ProposalMarginMillis>,
) -> Self {
let chain_info = ChainInfo::create_for_testing();
let [shared_instance_index, sequencer_0_instance_index, sequencer_1_instance_index] =
Expand All @@ -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();
Expand Down Expand Up @@ -325,6 +328,7 @@ impl FlowSequencerSetup {
pub fn create_consensus_manager_configs_and_channels(
ports: Vec<u16>,
chain_id: &ChainId,
proposal_margin_millis: Option<ProposalMarginMillis>,
) -> (
Vec<ConsensusManagerConfig>,
BroadcastTopicChannels<StreamMessage<ProposalPart, HeightAndRound>>,
Expand All @@ -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() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1118,6 +1118,7 @@ async fn get_sequencer_setup_configs(
),
component_configs_len,
&chain_info.chain_id,
None,
);

let node_indices: HashSet<usize> = (0..component_configs_len).collect();
Expand Down
62 changes: 51 additions & 11 deletions crates/apollo_integration_tests/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,21 @@ pub type CreateL1ToL2MessagesArgsFn =
fn(&mut MultiAccountTransactionGenerator) -> Vec<L1HandlerTransaction>;
pub type TestTxHashesFn = fn(&[TransactionHash]) -> Vec<TransactionHash>;

#[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,
Expand Down Expand Up @@ -344,6 +359,7 @@ pub(crate) fn create_consensus_manager_configs_from_network_configs(
network_configs: Vec<NetworkConfig>,
n_composed_nodes: usize,
chain_id: &ChainId,
proposal_margin_millis: Option<ProposalMarginMillis>,
) -> Vec<ConsensusManagerConfig> {
let num_validators = u64::try_from(n_composed_nodes).unwrap();
let mut timeouts = TimeoutsConfig::default();
Expand All @@ -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 {
Expand All @@ -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()
}

Expand Down Expand Up @@ -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<ProposalMarginMillis>,
}

impl EndToEndFlowArgs {
Expand All @@ -828,6 +851,7 @@ impl EndToEndFlowArgs {
expecting_full_blocks: false,
expecting_reverted_transactions: false,
allow_bootstrap_txs: false,
proposal_margin_millis: None,
}
}

Expand All @@ -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
Expand All @@ -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;

Expand All @@ -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;

Expand Down
3 changes: 2 additions & 1 deletion crates/apollo_integration_tests/tests/bootstrap_declare.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
Loading