Skip to content

Commit 1e87f51

Browse files
committed
more pi tests
1 parent 7bab0c5 commit 1e87f51

File tree

1 file changed

+36
-1
lines changed

1 file changed

+36
-1
lines changed

src/pi.rs

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,42 @@ mod tests {
410410
}
411411

412412
#[test]
413-
fn test_condvar_timeout_wait_loop() {
413+
fn test_condvar_timeout_wait_loop_notify_one() {
414+
for _ in 0..ITERS {
415+
let pair = Arc::new((Mutex::new(false), Condvar::new()));
416+
let mut handles = vec![];
417+
418+
for _ in 0..NUM_THREADS {
419+
let pair_clone = Arc::clone(&pair);
420+
handles.push(thread::spawn(move || {
421+
let (lock, cvar) = &*pair_clone;
422+
let mut mx = lock.lock();
423+
if cvar
424+
.wait_for(&mut mx, Duration::from_millis(100))
425+
.timed_out()
426+
{
427+
panic!("timed out");
428+
}
429+
}));
430+
}
431+
432+
thread::sleep(Duration::from_millis(50));
433+
{
434+
let (lock, cvar) = &*pair;
435+
for _ in 0..NUM_THREADS {
436+
let mut started = lock.lock();
437+
*started = true;
438+
cvar.notify_one();
439+
}
440+
}
441+
442+
for handle in handles {
443+
handle.join().unwrap();
444+
}
445+
}
446+
}
447+
#[test]
448+
fn test_condvar_timeout_wait_loop_notify_all() {
414449
for _ in 0..ITERS {
415450
let pair = Arc::new((Mutex::new(false), Condvar::new()));
416451
let mut handles = vec![];

0 commit comments

Comments
 (0)