Skip to content

Commit

Permalink
Add a randomized test for broadcast::Sender::len
Browse files Browse the repository at this point in the history
  • Loading branch information
sfackler committed Jan 11, 2023
1 parent fe350d7 commit 623f4dc
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions tokio/tests/sync_broadcast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ use tokio_test::{
assert_err, assert_ok, assert_pending, assert_ready, assert_ready_err, assert_ready_ok,
};

use rand::Rng;
use std::sync::Arc;

macro_rules! assert_recv {
Expand Down Expand Up @@ -560,3 +561,26 @@ fn sender_len() {
assert_eq!(tx.len(), 4);
assert!(!tx.is_empty());
}

#[test]
fn sender_len_random() {
let (tx, mut rx1) = broadcast::channel(16);
let mut rx2 = tx.subscribe();

for _ in 0..1000 {
match rand::thread_rng().gen_range(0..3) {
0 => {
let _ = rx1.try_recv();
}
1 => {
let _ = rx2.try_recv();
}
_ => {
tx.send(0).unwrap();
}
}

let expected_len = usize::min(usize::max(rx1.len(), rx2.len()), 16);
assert_eq!(tx.len(), expected_len);
}
}

0 comments on commit 623f4dc

Please sign in to comment.