Skip to content

Commit 2dd3a9c

Browse files
committed
Add tests to PlexConnector
1 parent ff15484 commit 2dd3a9c

1 file changed

Lines changed: 61 additions & 1 deletion

File tree

src/net/plex/plex_connector.rs

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ mod tests {
383383
}
384384

385385
#[tokio::test]
386-
async fn multiple_parallel() {
386+
async fn multiple_listeners_parallel() {
387387
let System {
388388
mut connectors,
389389
listeners,
@@ -438,6 +438,66 @@ mod tests {
438438
}
439439
}
440440

441+
#[tokio::test]
442+
async fn multiple_connectors_parallel() {
443+
let System {
444+
connectors,
445+
mut listeners,
446+
keys,
447+
} = System::setup(5).await;
448+
449+
let connectors = connectors
450+
.into_iter()
451+
.map(|connector| {
452+
PlexConnector::new(
453+
connector,
454+
PlexConnectorSettings {
455+
connections_per_remote: 5,
456+
..Default::default()
457+
},
458+
)
459+
})
460+
.take(4)
461+
.collect::<Vec<_>>();
462+
463+
let mut listener = PlexListener::new(listeners.remove(4), Default::default());
464+
465+
tokio::spawn(async move {
466+
loop {
467+
let (_, mut plex) = listener.accept().await;
468+
469+
tokio::spawn(async move {
470+
let value = plex.receive::<u32>().await.unwrap();
471+
plex.send(&(value + 1)).await.unwrap();
472+
});
473+
}
474+
});
475+
476+
let mut handles = Vec::new();
477+
478+
for connector in connectors {
479+
let connector = Arc::new(connector);
480+
481+
let connector_handles = (0..200).map(|value| {
482+
let connector = connector.clone();
483+
let remote = keys[4];
484+
485+
tokio::spawn(async move {
486+
let mut plex = connector.connect(remote).await.unwrap();
487+
time::sleep(Duration::from_millis(500)).await;
488+
plex.send(&value).await.unwrap();
489+
assert_eq!(plex.receive::<u32>().await.unwrap(), value + 1);
490+
})
491+
});
492+
493+
handles.extend(connector_handles);
494+
}
495+
496+
for handle in handles {
497+
handle.await.unwrap();
498+
}
499+
}
500+
441501
#[tokio::test]
442502
async fn receive_drop() {
443503
let System {

0 commit comments

Comments
 (0)