From f2e0cd342ee11ab1a2e480b67a1a91d3b277932b Mon Sep 17 00:00:00 2001 From: Emil Fresk Date: Mon, 30 Jan 2023 21:24:12 +0100 Subject: Added testing to rtic-arbiter --- rtic-arbiter/src/lib.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'rtic-arbiter/src/lib.rs') diff --git a/rtic-arbiter/src/lib.rs b/rtic-arbiter/src/lib.rs index 487c64c..519ce2c 100644 --- a/rtic-arbiter/src/lib.rs +++ b/rtic-arbiter/src/lib.rs @@ -36,6 +36,9 @@ pub struct Arbiter { taken: AtomicBool, } +unsafe impl Send for Arbiter {} +unsafe impl Sync for Arbiter {} + impl Arbiter { /// Create a new arbiter. pub const fn new(inner: T) -> Self { @@ -171,5 +174,25 @@ extern crate std; #[cfg(test)] mod tests { - // use super::*; + use super::*; + + #[tokio::test] + async fn stress_channel() { + const NUM_RUNS: usize = 100_000; + + static ARB: Arbiter = Arbiter::new(0); + let mut v = std::vec::Vec::new(); + + for _ in 0..NUM_RUNS { + v.push(tokio::spawn(async move { + *ARB.access().await += 1; + })); + } + + for v in v { + v.await.unwrap(); + } + + assert_eq!(*ARB.access().await, NUM_RUNS) + } } -- cgit v1.2.3