From 47ebc563860f1e5608dbdaf7603921c7676ed75f Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Sat, 14 May 2016 18:56:20 +0200 Subject: [PATCH 1/2] test: assert that all tcp-stress threads get spawned System limits may restrict the number of threads effectively spawned by this test (eg. systemd recently introduced a 512 tasks per unit maximum default). This commit explicitly asserts on the expected number of threads, making failures due to system limits easier to spot. More details at https://bugs.debian.org/822325 Signed-off-by: Luca Bruno --- src/test/run-pass/tcp-stress.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/test/run-pass/tcp-stress.rs b/src/test/run-pass/tcp-stress.rs index 52c920b6f5e..48726f7cac9 100644 --- a/src/test/run-pass/tcp-stress.rs +++ b/src/test/run-pass/tcp-stress.rs @@ -41,9 +41,10 @@ fn main() { }); let (tx, rx) = channel(); + let mut spawned_cnt = 0; for _ in 0..1000 { let tx = tx.clone(); - Builder::new().stack_size(64 * 1024).spawn(move|| { + let res = Builder::new().stack_size(64 * 1024).spawn(move|| { match TcpStream::connect(addr) { Ok(mut stream) => { stream.write(&[1]); @@ -53,13 +54,17 @@ fn main() { } tx.send(()).unwrap(); }); + if let Ok(_) = res { + spawned_cnt += 1; + }; } // Wait for all clients to exit, but don't wait for the server to exit. The // server just runs infinitely. drop(tx); - for _ in 0..1000 { + for _ in 0..spawned_cnt { rx.recv().unwrap(); } + assert_eq!(spawned_cnt, 1000); process::exit(0); } From 22972b8b6f38dbda4b5269afb3fd5223d176aa59 Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Sat, 14 May 2016 18:57:09 +0200 Subject: [PATCH 2/2] test: clear deprecation warnings in tcp-stress Signed-off-by: Luca Bruno --- src/test/run-pass/tcp-stress.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/test/run-pass/tcp-stress.rs b/src/test/run-pass/tcp-stress.rs index 48726f7cac9..dfc86497c96 100644 --- a/src/test/run-pass/tcp-stress.rs +++ b/src/test/run-pass/tcp-stress.rs @@ -18,25 +18,26 @@ use std::io::prelude::*; use std::net::{TcpListener, TcpStream}; use std::process; use std::sync::mpsc::channel; +use std::time::Duration; use std::thread::{self, Builder}; fn main() { // This test has a chance to time out, try to not let it time out thread::spawn(move|| -> () { - thread::sleep_ms(30 * 1000); + thread::sleep(Duration::from_secs(30)); process::exit(1); }); - let mut listener = TcpListener::bind("127.0.0.1:0").unwrap(); + let listener = TcpListener::bind("127.0.0.1:0").unwrap(); let addr = listener.local_addr().unwrap(); thread::spawn(move || -> () { loop { let mut stream = match listener.accept() { Ok(stream) => stream.0, - Err(error) => continue, + Err(_) => continue, }; - stream.read(&mut [0]); - stream.write(&[2]); + let _ = stream.read(&mut [0]); + let _ = stream.write(&[2]); } }); @@ -47,8 +48,8 @@ fn main() { let res = Builder::new().stack_size(64 * 1024).spawn(move|| { match TcpStream::connect(addr) { Ok(mut stream) => { - stream.write(&[1]); - stream.read(&mut [0]); + let _ = stream.write(&[1]); + let _ = stream.read(&mut [0]); }, Err(..) => {} }