Skip to content

Commit

Permalink
chore(starknet_integration_tests): add available ports to mempool p2p…
Browse files Browse the repository at this point in the history
… flow test

commit-id:7fdfc0fb
  • Loading branch information
Itay-Tsabary-Starkware committed Dec 18, 2024
1 parent 2f8fefd commit d59273e
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 12 deletions.
12 changes: 6 additions & 6 deletions crates/papyrus_network/src/network_manager/test_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ use libp2p::core::multiaddr::Protocol;
use libp2p::gossipsub::SubscriptionError;
use libp2p::identity::Keypair;
use libp2p::{Multiaddr, PeerId};
use papyrus_common::tcp::find_n_free_ports;
use starknet_sequencer_infra::test_utils::AvailablePorts;

use super::{
Expand Down Expand Up @@ -149,8 +148,11 @@ where
Ok(TestSubscriberChannels { subscriber_channels, mock_network })
}

pub fn create_connected_network_configs(n: usize) -> Vec<NetworkConfig> {
let mut ports = find_n_free_ports(n);
pub fn create_connected_network_configs(
n: usize,
available_ports: &mut AvailablePorts,
) -> Vec<NetworkConfig> {
let mut ports = available_ports.get_next_ports(n);
let port0 = ports.remove(0);

let secret_key0 = [1u8; 32];
Expand Down Expand Up @@ -178,8 +180,6 @@ pub fn create_connected_network_configs(n: usize) -> Vec<NetworkConfig> {
configs
}

// TODO(Tsabary): remove #[allow(unused_variables)].
#[allow(unused_variables)]
pub fn create_network_configs_connected_to_broadcast_channels<T>(
n_configs: usize,
topic: Topic,
Expand All @@ -191,7 +191,7 @@ where
{
const BUFFER_SIZE: usize = 1000;

let mut channels_configs = create_connected_network_configs(n_configs + 1);
let mut channels_configs = create_connected_network_configs(n_configs + 1, available_ports);
let broadcast_channels = channels_configs.remove(0);

let mut channels_network_manager = NetworkManager::new(broadcast_channels, None);
Expand Down
7 changes: 5 additions & 2 deletions crates/starknet_integration_tests/src/flow_test_setup.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,11 @@ impl FlowTestSetup {
let [sequencer_0_consensus_manager_config, sequencer_1_consensus_manager_config]: [ConsensusManagerConfig;
2] = consensus_manager_configs.try_into().unwrap();

let mempool_p2p_configs =
create_mempool_p2p_configs(SEQUENCER_INDICES.len(), chain_info.chain_id.clone());
let mempool_p2p_configs = create_mempool_p2p_configs(
SEQUENCER_INDICES.len(),
chain_info.chain_id.clone(),
&mut available_ports,
);
let [sequencer_0_mempool_p2p_config, sequencer_1_mempool_p2p_config]: [MempoolP2pConfig;
2] = mempool_p2p_configs.try_into().unwrap();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,11 @@ impl IntegrationTestSetup {
SEQUENCER_INDICES.len(),
&mut available_ports,
);
let mut mempool_p2p_configs =
create_mempool_p2p_configs(SEQUENCER_INDICES.len(), chain_info.chain_id.clone());
let mut mempool_p2p_configs = create_mempool_p2p_configs(
SEQUENCER_INDICES.len(),
chain_info.chain_id.clone(),
&mut available_ports,
);

// Derive the configuration for the sequencer node.
let (config, required_params) = create_config(
Expand Down
2 changes: 2 additions & 0 deletions crates/starknet_integration_tests/src/test_identifiers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@
pub enum TestIdentifier {
EndToEndIntegrationTest,
EndToEndFlowTest,
MempoolP2PFlowTest,
}

impl From<TestIdentifier> for u16 {
fn from(variant: TestIdentifier) -> Self {
match variant {
TestIdentifier::EndToEndIntegrationTest => 0,
TestIdentifier::EndToEndFlowTest => 1,
TestIdentifier::MempoolP2PFlowTest => 1,
}
}
}
8 changes: 6 additions & 2 deletions crates/starknet_integration_tests/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,12 @@ pub fn test_rpc_state_reader_config(rpc_server_addr: SocketAddr) -> RpcStateRead
RpcStateReaderConfig::from_url(format!("http://{rpc_server_addr:?}/rpc/{RPC_SPEC_VERSION}"))
}

pub fn create_mempool_p2p_configs(n_mempools: usize, chain_id: ChainId) -> Vec<MempoolP2pConfig> {
create_connected_network_configs(n_mempools)
pub fn create_mempool_p2p_configs(
n_mempools: usize,
chain_id: ChainId,
available_ports: &mut AvailablePorts,
) -> Vec<MempoolP2pConfig> {
create_connected_network_configs(n_mempools, available_ports)
.into_iter()
.map(|mut network_config| {
network_config.chain_id = chain_id.clone();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ use starknet_api::transaction::TransactionHash;
use starknet_http_server::config::HttpServerConfig;
use starknet_http_server::test_utils::HttpTestClient;
use starknet_integration_tests::state_reader::{spawn_test_rpc_state_reader, StorageTestSetup};
use starknet_integration_tests::test_identifiers::TestIdentifier;
use starknet_integration_tests::utils::{
create_batcher_config,
create_chain_info,
Expand All @@ -32,6 +33,7 @@ use starknet_mempool_p2p::config::MempoolP2pConfig;
use starknet_mempool_p2p::MEMPOOL_TOPIC;
use starknet_monitoring_endpoint::config::MonitoringEndpointConfig;
use starknet_monitoring_endpoint::test_utils::IsAliveClient;
use starknet_sequencer_infra::test_utils::AvailablePorts;
use starknet_sequencer_node::config::component_config::ComponentConfig;
use starknet_sequencer_node::config::component_execution_config::{
ActiveComponentExecutionConfig,
Expand All @@ -56,6 +58,8 @@ async fn setup(
let chain_info = create_chain_info();
let storage_for_test = StorageTestSetup::new(accounts, &chain_info);

let mut available_ports = AvailablePorts::new(TestIdentifier::MempoolP2PFlowTest.into(), 0);

// Spawn a papyrus rpc server for a papyrus storage reader.
let rpc_server_addr = spawn_test_rpc_state_reader(
storage_for_test.rpc_storage_reader,
Expand Down Expand Up @@ -88,6 +92,7 @@ async fn setup(
create_network_configs_connected_to_broadcast_channels::<RpcTransactionWrapper>(
1,
Topic::new(MEMPOOL_TOPIC),
&mut available_ports,
);
let network_config = network_configs.pop().unwrap();
let mempool_p2p_config = MempoolP2pConfig { network_config, ..Default::default() };
Expand Down
4 changes: 4 additions & 0 deletions crates/starknet_sequencer_infra/src/test_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ impl AvailablePorts {
port
}

pub fn get_next_ports(&mut self, n: usize) -> Vec<u16> {
(0..n).map(|_| self.get_next_port()).collect()
}

pub fn get_next_local_host_socket(&mut self) -> SocketAddr {
SocketAddr::new(IpAddr::from(Ipv4Addr::LOCALHOST), self.get_next_port())
}
Expand Down

0 comments on commit d59273e

Please sign in to comment.