[][src]Crate awaitility

Awaitility for Rust

Fast, Simple, Straightforward Test utility for async functionalities.

Basic Usage

awaitility::at_most(Duration::from_millis(100)).until(|| {test_something_is_true()});
awaitility::at_least(Duration::from_millis(50)).always(|| {test_something_is_true()});
// ...

Examples

use std::sync::atomic::{AtomicUsize, Ordering};
use std::sync::Arc;
use std::time::Duration;
 
fn at_most_test() {
 let counter = Arc::new(AtomicUsize::new(5));
 let tcounter = counter.clone();
 std::thread::spawn(move || {
   while tcounter.load(Ordering::SeqCst) < 15 {
     tcounter.fetch_add(1, Ordering::SeqCst);
   }
 });
 awaitility::at_most(Duration::from_millis(100)).until(|| counter.load(Ordering::SeqCst) > 10);
}

Config

awaitility::at_most(Duration::from_millis(100))
           .poll_interval(Duration::from_millis(45))
           .describe("Becomes sunny..")
           .until(|| 2 > 1);

Share configured instance

use std::time::Duration;
 
let aw = awaitility::new().poll_interval(Duration::from_millis(45));
aw.at_least(Duration::from_millis(10)).always(|| 2 > 1);
aw.at_least(Duration::from_millis(10)).once(|| 2 > 1);

Further configs made after at_most will not be reflected on instance aw.

Functions

at_least

Create an at-least wait directive with default configs.

at_most

Create an at-most wait directive with default configs.

new

Create an awaitility instance with shared configs.