rollup merge of #20704: alexcrichton/hopefully-make-tests-less-spurious
These tests have all been failing spuroiusly on Windows from time to time, and one suspicion is that the shilc thread outliving the main thread somehow causes the problem. Switch all the tests over to using Thread::scoped instead of Thread::spawn to see if it helps the issue. cc #19120
This commit is contained in:
commit
b21a0cee19
8 changed files with 21 additions and 21 deletions
|
@ -66,7 +66,7 @@ pub fn main() {
|
||||||
assert_eq!(receiver.recv().ok(), None);
|
assert_eq!(receiver.recv().ok(), None);
|
||||||
|
|
||||||
let (sender, receiver) = channel();
|
let (sender, receiver) = channel();
|
||||||
let _t = Thread::spawn(move|| {
|
let _t = Thread::scoped(move|| {
|
||||||
let v = Foo::FailingVariant { on_drop: SendOnDrop { sender: sender } };
|
let v = Foo::FailingVariant { on_drop: SendOnDrop { sender: sender } };
|
||||||
});
|
});
|
||||||
assert_eq!(receiver.recv().unwrap(), Message::Dropped);
|
assert_eq!(receiver.recv().unwrap(), Message::Dropped);
|
||||||
|
@ -74,7 +74,7 @@ pub fn main() {
|
||||||
|
|
||||||
let (sender, receiver) = channel();
|
let (sender, receiver) = channel();
|
||||||
let _t = {
|
let _t = {
|
||||||
Thread::spawn(move|| {
|
Thread::scoped(move|| {
|
||||||
let mut v = Foo::NestedVariant(box 42u, SendOnDrop {
|
let mut v = Foo::NestedVariant(box 42u, SendOnDrop {
|
||||||
sender: sender.clone()
|
sender: sender.clone()
|
||||||
}, sender.clone());
|
}, sender.clone());
|
||||||
|
|
|
@ -42,7 +42,7 @@ fn count(n: libc::uintptr_t) -> libc::uintptr_t {
|
||||||
|
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
range(0u, 100).map(|_| {
|
range(0u, 100).map(|_| {
|
||||||
Thread::spawn(move|| {
|
Thread::scoped(move|| {
|
||||||
assert_eq!(count(5), 16);
|
assert_eq!(count(5), 16);
|
||||||
})
|
})
|
||||||
}).collect::<Vec<_>>();
|
}).collect::<Vec<_>>();
|
||||||
|
|
|
@ -39,7 +39,7 @@ fn count(n: libc::uintptr_t) -> libc::uintptr_t {
|
||||||
|
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
range(0, 10u).map(|i| {
|
range(0, 10u).map(|i| {
|
||||||
Thread::spawn(move|| {
|
Thread::scoped(move|| {
|
||||||
let result = count(5);
|
let result = count(5);
|
||||||
println!("result = {}", result);
|
println!("result = {}", result);
|
||||||
assert_eq!(result, 16);
|
assert_eq!(result, 16);
|
||||||
|
|
|
@ -15,7 +15,7 @@ use std::time::Duration;
|
||||||
|
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
let (tx, rx) = channel();
|
let (tx, rx) = channel();
|
||||||
let _t = Thread::spawn(move||{
|
let _t = Thread::scoped(move||{
|
||||||
let mut timer = Timer::new().unwrap();
|
let mut timer = Timer::new().unwrap();
|
||||||
timer.sleep(Duration::milliseconds(10));
|
timer.sleep(Duration::milliseconds(10));
|
||||||
tx.send(()).unwrap();
|
tx.send(()).unwrap();
|
||||||
|
|
|
@ -34,11 +34,11 @@ fn test() {
|
||||||
|
|
||||||
let (srv_tx, srv_rx) = channel();
|
let (srv_tx, srv_rx) = channel();
|
||||||
let (cli_tx, cli_rx) = channel();
|
let (cli_tx, cli_rx) = channel();
|
||||||
for _ in range(0, N) {
|
let _t = range(0, N).map(|_| {
|
||||||
let a = a.clone();
|
let a = a.clone();
|
||||||
let cnt = cnt.clone();
|
let cnt = cnt.clone();
|
||||||
let srv_tx = srv_tx.clone();
|
let srv_tx = srv_tx.clone();
|
||||||
Thread::spawn(move|| {
|
Thread::scoped(move|| {
|
||||||
let mut a = a;
|
let mut a = a;
|
||||||
loop {
|
loop {
|
||||||
match a.accept() {
|
match a.accept() {
|
||||||
|
@ -52,18 +52,18 @@ fn test() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
srv_tx.send(());
|
srv_tx.send(());
|
||||||
});
|
})
|
||||||
}
|
}).collect::<Vec<_>>();
|
||||||
|
|
||||||
for _ in range(0, N) {
|
let _t = range(0, N).map(|_| {
|
||||||
let cli_tx = cli_tx.clone();
|
let cli_tx = cli_tx.clone();
|
||||||
Thread::spawn(move|| {
|
Thread::scoped(move|| {
|
||||||
for _ in range(0, M) {
|
for _ in range(0, M) {
|
||||||
let _s = TcpStream::connect(addr).unwrap();
|
let _s = TcpStream::connect(addr).unwrap();
|
||||||
}
|
}
|
||||||
cli_tx.send(());
|
cli_tx.send(());
|
||||||
});
|
})
|
||||||
}
|
}).collect::<Vec<_>>();
|
||||||
drop((cli_tx, srv_tx));
|
drop((cli_tx, srv_tx));
|
||||||
|
|
||||||
// wait for senders
|
// wait for senders
|
||||||
|
|
|
@ -13,7 +13,7 @@ use std::thread::Thread;
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
let mut i = 10;
|
let mut i = 10;
|
||||||
while i > 0 {
|
while i > 0 {
|
||||||
Thread::spawn({let i = i; move|| child(i)});
|
Thread::scoped({let i = i; move|| child(i)});
|
||||||
i = i - 1;
|
i = i - 1;
|
||||||
}
|
}
|
||||||
println!("main thread exiting");
|
println!("main thread exiting");
|
||||||
|
|
|
@ -19,13 +19,13 @@ pub fn main() {
|
||||||
let (tx, rx) = channel();
|
let (tx, rx) = channel();
|
||||||
let n = 100u;
|
let n = 100u;
|
||||||
let mut expected = 0u;
|
let mut expected = 0u;
|
||||||
for i in range(0u, n) {
|
let _t = range(0u, n).map(|i| {
|
||||||
let tx = tx.clone();
|
|
||||||
Thread::spawn(move|| {
|
|
||||||
child(&tx, i)
|
|
||||||
});
|
|
||||||
expected += i;
|
expected += i;
|
||||||
}
|
let tx = tx.clone();
|
||||||
|
Thread::scoped(move|| {
|
||||||
|
child(&tx, i)
|
||||||
|
})
|
||||||
|
}).collect::<Vec<_>>();
|
||||||
|
|
||||||
let mut actual = 0u;
|
let mut actual = 0u;
|
||||||
for _ in range(0u, n) {
|
for _ in range(0u, n) {
|
||||||
|
|
|
@ -37,7 +37,7 @@ fn f(tx: Sender<bool>) {
|
||||||
|
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
let (tx, rx) = channel();
|
let (tx, rx) = channel();
|
||||||
let _t = Thread::spawn(move|| f(tx.clone()));
|
let _t = Thread::scoped(move|| f(tx.clone()));
|
||||||
println!("hiiiiiiiii");
|
println!("hiiiiiiiii");
|
||||||
assert!(rx.recv().unwrap());
|
assert!(rx.recv().unwrap());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue