]> git.lizzy.rs Git - rust.git/commitdiff
test: Fix the tcp-accept-stress test
authorAlex Crichton <alex@alexcrichton.com>
Sun, 31 Aug 2014 06:43:20 +0000 (23:43 -0700)
committerAlex Crichton <alex@alexcrichton.com>
Sun, 31 Aug 2014 06:43:20 +0000 (23:43 -0700)
It was previously asserted that each thread received at least one connection,
but this is not guaranteed to always be the case due to scheduling. This test
also deadlocked on failure due to a lingering reference to the sending half of
the channel, so that reference is now also eagerly dropped so the test can fail
properly if something bad happens.

Closes #16872

src/test/run-pass/tcp-accept-stress.rs

index 19097c8e26c6a066396e7964592d15eb5e6d5035..372f6a473b2f5bfeac00f329fcb4c46db1b233b1 100644 (file)
@@ -8,8 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-// ignore-macos #16872 spurious deadlock
-
 #![feature(phase)]
 
 #[phase(plugin)]
@@ -49,11 +47,9 @@ fn test() {
         let tx = tx.clone();
         spawn(proc() {
             let mut a = a;
-            let mut mycnt = 0u;
             loop {
                 match a.accept() {
                     Ok(..) => {
-                        mycnt += 1;
                         if cnt.fetch_add(1, atomic::SeqCst) == N * M - 1 {
                             break
                         }
@@ -62,7 +58,6 @@ fn test() {
                     Err(e) => fail!("{}", e),
                 }
             }
-            assert!(mycnt > 0);
             tx.send(());
         });
     }
@@ -77,6 +72,7 @@ fn test() {
             tx.send(());
         });
     }
+    drop(tx);
 
     // wait for senders
     assert_eq!(rx.iter().take(N).count(), N);