about summary refs log tree commit diff
path: root/src/libstd/timer.rs
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-04-28 14:13:25 -0700
committerBrian Anderson <banderson@mozilla.com>2012-04-28 14:13:36 -0700
commitc01d05f18d57c548338eb56f5eaf31ab07fda24b (patch)
treeab5ecf71cc4859794fd5476eae9a166277656cc6 /src/libstd/timer.rs
parentcaab57586a6e5e9201c265c47c9dcf886499cb45 (diff)
downloadrust-c01d05f18d57c548338eb56f5eaf31ab07fda24b.tar.gz
rust-c01d05f18d57c548338eb56f5eaf31ab07fda24b.zip
std: Add 2 timer stress tests
Diffstat (limited to 'src/libstd/timer.rs')
-rw-r--r--src/libstd/timer.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/libstd/timer.rs b/src/libstd/timer.rs
index 1c646f61d6a..69bcbf2e419 100644
--- a/src/libstd/timer.rs
+++ b/src/libstd/timer.rs
@@ -142,6 +142,47 @@ mod test {
     }
 
     #[test]
+    fn test_gl_timer_sleep_stress1() {
+        iter::repeat(500u) {||
+            sleep(1u);
+        }
+    }
+
+    #[test]
+    fn test_gl_timer_sleep_stress2() {
+        let po = comm::port();
+        let ch = comm::chan(po);
+
+        let repeat = 100u;
+        let spec = {
+
+            [(1u, 100u),
+             (10u, 10u),
+             (100u, 2u)]
+
+        };
+
+        iter::repeat(repeat) {||
+
+            for spec.each {|spec|
+                let (times, maxms) = spec;
+                task::spawn {||
+                    import rand::*;
+                    let rng = rng();
+                    iter::repeat(times) {||
+                        sleep(rng.next() as uint % maxms);
+                    }
+                    comm::send(ch, ());
+                }
+            }
+        }
+
+        iter::repeat(repeat * spec.len()) {||
+            comm::recv(po)
+        }
+    }
+
+    #[test]
     fn test_gl_timer_recv_timeout_before_time_passes() {
         let expected = rand::rng().gen_str(16u);
         let test_po = comm::port::<str>();