mirror of https://github.com/fafhrd91/actix-web
add test for manual drop
This commit is contained in:
parent
aa3bed54b2
commit
fd689be6d8
|
@ -355,3 +355,47 @@ where
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use std::sync::{
|
||||
atomic::{AtomicUsize, Ordering},
|
||||
Arc,
|
||||
};
|
||||
|
||||
use super::*;
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_manual_drop() {
|
||||
let var = Arc::new(AtomicUsize::new(0));
|
||||
|
||||
let var_1 = var.clone();
|
||||
let fut = async move {
|
||||
actix_rt::time::sleep(std::time::Duration::from_millis(500)).await;
|
||||
var_1.fetch_add(1, Ordering::SeqCst);
|
||||
};
|
||||
let (fut, handle) = WakeupOnDrop::new(fut);
|
||||
|
||||
actix_rt::spawn(fut);
|
||||
|
||||
actix_rt::time::sleep(std::time::Duration::from_millis(100)).await;
|
||||
|
||||
handle.wake();
|
||||
drop(handle);
|
||||
|
||||
actix_rt::time::sleep(std::time::Duration::from_millis(500)).await;
|
||||
assert_eq!(var.load(Ordering::SeqCst), 0);
|
||||
|
||||
let var_1 = var.clone();
|
||||
let fut = async move {
|
||||
actix_rt::time::sleep(std::time::Duration::from_millis(500)).await;
|
||||
var_1.fetch_add(1, Ordering::SeqCst);
|
||||
};
|
||||
|
||||
let (fut, _handle) = WakeupOnDrop::new(fut);
|
||||
actix_rt::spawn(fut);
|
||||
|
||||
actix_rt::time::sleep(std::time::Duration::from_millis(600)).await;
|
||||
assert_eq!(var.load(Ordering::SeqCst), 1);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue