Skip to content

Commit 012bd3c

Browse files
committed
chore(msg_sim): add_peer_with_options
1 parent d3d29c7 commit 012bd3c

File tree

4 files changed

+52
-50
lines changed

4 files changed

+52
-50
lines changed

msg-sim/examples/bdp_throughput.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
2424
use futures::StreamExt;
2525
use msg_sim::{
2626
ip::Subnet,
27-
network::{Link, Network, PeerIdExt, PeerOptions},
27+
network::{Link, Network, PeerIdExt},
2828
tc::impairment::LinkImpairment,
2929
};
3030
use msg_socket::{RepSocket, ReqSocket};
@@ -93,8 +93,8 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
9393

9494
let subnet = Subnet::new(IpAddr::V4(Ipv4Addr::new(10, 100, 0, 0)), 16);
9595
let mut network = Network::new(subnet).await?;
96-
let sender = network.add_peer(PeerOptions::default()).await?;
97-
let receiver = network.add_peer(PeerOptions::default()).await?;
96+
let sender = network.add_peer().await?;
97+
let receiver = network.add_peer().await?;
9898

9999
let impairment =
100100
LinkImpairment::default().with_latency_ms(LATENCY_MS).with_bandwidth_mbit_s(BANDWIDTH_MBIT);

msg-sim/examples/sim_multi_region.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
3232

3333
use msg_sim::{
3434
ip::Subnet,
35-
network::{Link, Network, PeerIdExt, PeerOptions},
35+
network::{Link, Network, PeerIdExt},
3636
};
3737
use tracing_subscriber::EnvFilter;
3838

@@ -164,10 +164,10 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
164164
let mut network = Network::new(subnet).await?;
165165

166166
// Add peers
167-
let eu = network.add_peer(PeerOptions::default()).await?;
168-
let us1 = network.add_peer(PeerOptions::default()).await?;
169-
let us2 = network.add_peer(PeerOptions::default()).await?;
170-
let tokyo = network.add_peer(PeerOptions::default()).await?;
167+
let eu = network.add_peer().await?;
168+
let us1 = network.add_peer().await?;
169+
let us2 = network.add_peer().await?;
170+
let tokyo = network.add_peer().await?;
171171

172172
println!("Peers:");
173173
for id in [eu, us1, us2, tokyo] {

msg-sim/examples/tcp_tuning.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,7 @@ fn main() {}
1414
async fn main() -> Result<(), Box<dyn std::error::Error>> {
1515
use std::net::{IpAddr, Ipv4Addr};
1616

17-
use msg_sim::{
18-
ip::Subnet,
19-
network::{Network, PeerOptions},
20-
};
17+
use msg_sim::{ip::Subnet, network::Network};
2118
use tracing_subscriber::EnvFilter;
2219

2320
const TCP_RMEM: &str = "/proc/sys/net/ipv4/tcp_rmem";
@@ -45,7 +42,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
4542
// Create network with one peer
4643
let subnet = Subnet::new(IpAddr::V4(Ipv4Addr::new(10, 0, 0, 0)), 24);
4744
let mut network = Network::new(subnet).await?;
48-
let peer = network.add_peer(PeerOptions::default()).await?;
45+
let peer = network.add_peer().await?;
4946

5047
// Tune TCP buffers in peer's namespace (min, default, max)
5148
let tuned_buffers = "4096 1048576 16777216"; // 4KB / 1MB / 16MB

msg-sim/src/network.rs

Lines changed: 42 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ pub type Result<T> = std::result::Result<T, Error>;
333333
/// # Example
334334
///
335335
/// ```no_run
336-
/// use msg_sim::network::{Network, Link, HubOptions, PeerOptions};
336+
/// use msg_sim::network::{Network, Link, PeerOptions};
337337
/// use msg_sim::tc::impairment::LinkImpairment;
338338
/// use msg_sim::ip::Subnet;
339339
/// use std::net::Ipv4Addr;
@@ -345,9 +345,9 @@ pub type Result<T> = std::result::Result<T, Error>;
345345
/// let mut network = Network::new(subnet).await.unwrap();
346346
///
347347
/// // Add some peers
348-
/// let peer_1 = network.add_peer(PeerOptions::default()).await.unwrap();
349-
/// let peer_2 = network.add_peer(PeerOptions::default()).await.unwrap();
350-
/// let peer_3 = network.add_peer(PeerOptions::default()).await.unwrap();
348+
/// let peer_1 = network.add_peer().await.unwrap();
349+
/// let peer_2 = network.add_peer().await.unwrap();
350+
/// let peer_3 = network.add_peer().await.unwrap();
351351
///
352352
/// // Configure different impairments for different paths
353353
/// network.apply_impairment(
@@ -464,7 +464,7 @@ impl Network {
464464
/// 1. A new network namespace for the peer
465465
/// 2. A veth pair connecting the peer to the hub bridge
466466
/// 3. IP address assignment based on the subnet and peer ID
467-
pub async fn add_peer(&mut self, options: PeerOptions) -> Result<PeerId> {
467+
pub async fn add_peer_with_options(&mut self, options: PeerOptions) -> Result<PeerId> {
468468
let peer_id = PEER_ID_NEXT.load(Ordering::Relaxed);
469469
let namespace_name = peer_id.namespace_name();
470470
let veth_name = Arc::new(peer_id.veth_name());
@@ -589,6 +589,11 @@ impl Network {
589589
Ok(peer_id)
590590
}
591591

592+
/// See [`Self::add_peer_with_options`].
593+
pub async fn add_peer(&mut self) -> Result<PeerId> {
594+
self.add_peer_with_options(PeerOptions::default()).await
595+
}
596+
592597
/// Run a task in a peer's network namespace.
593598
///
594599
/// The provided closure receives a mutable reference to the namespace's context,
@@ -608,7 +613,7 @@ impl Network {
608613
///
609614
/// ```no_run
610615
/// use msg_sim::ip::Subnet;
611-
/// use msg_sim::network::{Network, HubOptions, PeerOptions};
616+
/// use msg_sim::network::{Network, PeerOptions};
612617
/// use std::net::Ipv4Addr;
613618
/// use tokio::net::TcpListener;
614619
///
@@ -617,7 +622,7 @@ impl Network {
617622
/// let subnet = Subnet::new(Ipv4Addr::new(12, 0, 0, 0).into(), 16);
618623
/// let mut network = Network::new(subnet).await.unwrap();
619624
///
620-
/// let peer_id = network.add_peer(PeerOptions::default()).await.unwrap();
625+
/// let peer_id = network.add_peer().await.unwrap();
621626
/// network
622627
/// .run_in_namespace(peer_id, |_ctx| {
623628
/// Box::pin(async move {
@@ -678,7 +683,7 @@ impl Network {
678683
/// ```no_run
679684
/// use msg_sim::{
680685
/// ip::Subnet,
681-
/// network::{Link, Network, HubOptions, PeerOptions},
686+
/// network::{Link, Network, PeerOptions},
682687
/// tc::impairment::LinkImpairment
683688
/// };
684689
///
@@ -689,8 +694,8 @@ impl Network {
689694
/// let subnet = Subnet::new(Ipv4Addr::new(12, 0, 0, 0).into(), 16);
690695
/// let mut network = Network::new(subnet).await.unwrap();
691696
///
692-
/// let peer_1 = network.add_peer(PeerOptions::default()).await.unwrap();
693-
/// let peer_2 = network.add_peer(PeerOptions::default()).await.unwrap();
697+
/// let peer_1 = network.add_peer().await.unwrap();
698+
/// let peer_2 = network.add_peer().await.unwrap();
694699
///
695700
/// // Simulate a slow, lossy link from peer 1 to peer 2
696701
/// network.apply_impairment(
@@ -837,8 +842,8 @@ mod msg_sim_network {
837842
let subnet = Subnet::new(Ipv4Addr::new(12, 0, 0, 0).into(), 16);
838843
let mut network = Network::new(subnet).await.unwrap();
839844

840-
let _peer_id = network.add_peer(PeerOptions::default()).await.unwrap();
841-
let _peer_id = network.add_peer(PeerOptions::default()).await.unwrap();
845+
let _peer_id = network.add_peer().await.unwrap();
846+
let _peer_id = network.add_peer().await.unwrap();
842847
}
843848

844849
/// Test basic request/reply communication between two peers.
@@ -849,8 +854,8 @@ mod msg_sim_network {
849854
let subnet = Subnet::new(Ipv4Addr::new(13, 0, 0, 0).into(), 16);
850855
let mut network = Network::new(subnet).await.unwrap();
851856

852-
let peer_1 = network.add_peer(PeerOptions::default()).await.unwrap();
853-
let peer_2 = network.add_peer(PeerOptions::default()).await.unwrap();
857+
let peer_1 = network.add_peer().await.unwrap();
858+
let peer_2 = network.add_peer().await.unwrap();
854859

855860
let address_2 = peer_2.veth_address(subnet);
856861
let port_2 = 12345;
@@ -895,9 +900,9 @@ mod msg_sim_network {
895900
let subnet = Subnet::new(Ipv4Addr::new(12, 0, 0, 0).into(), 16);
896901
let mut network = Network::new(subnet).await.unwrap();
897902

898-
let peer_1 = network.add_peer(PeerOptions::default()).await.unwrap();
899-
let peer_2 = network.add_peer(PeerOptions::default()).await.unwrap();
900-
let _peer_3 = network.add_peer(PeerOptions::default()).await.unwrap();
903+
let peer_1 = network.add_peer().await.unwrap();
904+
let peer_2 = network.add_peer().await.unwrap();
905+
let _peer_3 = network.add_peer().await.unwrap();
901906

902907
let impairment = LinkImpairment {
903908
loss: 50.0,
@@ -917,8 +922,8 @@ mod msg_sim_network {
917922
let subnet = Subnet::new(Ipv4Addr::new(14, 0, 0, 0).into(), 16);
918923
let mut network = Network::new(subnet).await.unwrap();
919924

920-
let peer_1 = network.add_peer(PeerOptions::default()).await.unwrap();
921-
let peer_2 = network.add_peer(PeerOptions::default()).await.unwrap();
925+
let peer_1 = network.add_peer().await.unwrap();
926+
let peer_2 = network.add_peer().await.unwrap();
922927

923928
// Apply 1 second latency from peer 1 to peer 2
924929
let sec_in_us = 1_000_000;
@@ -977,9 +982,9 @@ mod msg_sim_network {
977982
let subnet = Subnet::new(Ipv4Addr::new(15, 0, 0, 0).into(), 16);
978983
let mut network = Network::new(subnet).await.unwrap();
979984

980-
let peer_1 = network.add_peer(PeerOptions::default()).await.unwrap();
981-
let peer_2 = network.add_peer(PeerOptions::default()).await.unwrap();
982-
let peer_3 = network.add_peer(PeerOptions::default()).await.unwrap();
985+
let peer_1 = network.add_peer().await.unwrap();
986+
let peer_2 = network.add_peer().await.unwrap();
987+
let peer_3 = network.add_peer().await.unwrap();
983988

984989
// Peer 1 → Peer 2: 100ms latency
985990
let fast_latency_us = 100_000;
@@ -1085,8 +1090,8 @@ mod msg_sim_network {
10851090
let subnet = Subnet::new(Ipv4Addr::new(16, 0, 0, 0).into(), 16);
10861091
let mut network = Network::new(subnet).await.unwrap();
10871092

1088-
let peer_1 = network.add_peer(PeerOptions::default()).await.unwrap();
1089-
let peer_2 = network.add_peer(PeerOptions::default()).await.unwrap();
1093+
let peer_1 = network.add_peer().await.unwrap();
1094+
let peer_2 = network.add_peer().await.unwrap();
10901095

10911096
// Apply bandwidth limit: 1 Mbit/s from peer 1 to peer 2
10921097
let bandwidth_mbit = 1.0;
@@ -1159,8 +1164,8 @@ mod msg_sim_network {
11591164
let subnet = Subnet::new(Ipv4Addr::new(17, 0, 0, 0).into(), 16);
11601165
let mut network = Network::new(subnet).await.unwrap();
11611166

1162-
let peer_1 = network.add_peer(PeerOptions::default()).await.unwrap();
1163-
let peer_2 = network.add_peer(PeerOptions::default()).await.unwrap();
1167+
let peer_1 = network.add_peer().await.unwrap();
1168+
let peer_2 = network.add_peer().await.unwrap();
11641169

11651170
// Apply both bandwidth limit and latency
11661171
let latency_us = 100_000; // 100ms
@@ -1230,8 +1235,8 @@ mod msg_sim_network {
12301235
let subnet = Subnet::new(Ipv4Addr::new(18, 0, 0, 0).into(), 16);
12311236
let mut network = Network::new(subnet).await.unwrap();
12321237

1233-
let peer_1 = network.add_peer(PeerOptions::default()).await.unwrap();
1234-
let peer_2 = network.add_peer(PeerOptions::default()).await.unwrap();
1238+
let peer_1 = network.add_peer().await.unwrap();
1239+
let peer_2 = network.add_peer().await.unwrap();
12351240

12361241
// First application: 100ms latency
12371242
let impairment_1 = LinkImpairment { latency: 100_000, ..Default::default() };
@@ -1261,8 +1266,8 @@ mod msg_sim_network {
12611266
let subnet = Subnet::new(Ipv4Addr::new(19, 0, 0, 0).into(), 16);
12621267
let mut network = Network::new(subnet).await.unwrap();
12631268

1264-
let peer_1 = network.add_peer(PeerOptions::default()).await.unwrap();
1265-
let peer_2 = network.add_peer(PeerOptions::default()).await.unwrap();
1269+
let peer_1 = network.add_peer().await.unwrap();
1270+
let peer_2 = network.add_peer().await.unwrap();
12661271

12671272
// Different impairments in each direction
12681273
let impairment_1_to_2 = LinkImpairment { latency: 50_000, ..Default::default() };
@@ -1286,8 +1291,8 @@ mod msg_sim_network {
12861291
let subnet = Subnet::new(Ipv4Addr::new(20, 0, 0, 0).into(), 16);
12871292
let mut network = Network::new(subnet).await.unwrap();
12881293

1289-
let peer_1 = network.add_peer(PeerOptions::default()).await.unwrap();
1290-
let peer_2 = network.add_peer(PeerOptions::default()).await.unwrap();
1294+
let peer_1 = network.add_peer().await.unwrap();
1295+
let peer_2 = network.add_peer().await.unwrap();
12911296

12921297
// Apply bandwidth limit with custom burst
12931298
network
@@ -1320,9 +1325,9 @@ mod msg_sim_network {
13201325
let subnet = Subnet::new(Ipv4Addr::new(24, 0, 0, 0).into(), 16);
13211326
let mut network = Network::new(subnet).await.unwrap();
13221327

1323-
let peer_1 = network.add_peer(PeerOptions::default()).await.unwrap();
1324-
let peer_2 = network.add_peer(PeerOptions::default()).await.unwrap();
1325-
let peer_3 = network.add_peer(PeerOptions::default()).await.unwrap();
1328+
let peer_1 = network.add_peer().await.unwrap();
1329+
let peer_2 = network.add_peer().await.unwrap();
1330+
let peer_3 = network.add_peer().await.unwrap();
13261331

13271332
// First netem WITH duplicate - works
13281333
let with_dup = LinkImpairment { latency: 20_000, duplicate: 0.02, ..Default::default() };
@@ -1351,8 +1356,8 @@ mod msg_sim_network {
13511356
let subnet = Subnet::new(Ipv4Addr::new(21, 0, 0, 0).into(), 16);
13521357
let mut network = Network::new(subnet).await.unwrap();
13531358

1354-
let peer_1 = network.add_peer(PeerOptions::default()).await.unwrap();
1355-
let peer_2 = network.add_peer(PeerOptions::default()).await.unwrap();
1359+
let peer_1 = network.add_peer().await.unwrap();
1360+
let peer_2 = network.add_peer().await.unwrap();
13561361

13571362
// Apply 100% packet duplication from peer 1 to peer 2
13581363
// This should cause every packet to be sent twice

0 commit comments

Comments
 (0)