From 8abd8e66d60bdf24e05015146fc034f4541569dc Mon Sep 17 00:00:00 2001 From: fakeshadow <24548779@qq.com> Date: Sun, 25 Apr 2021 22:12:40 -0700 Subject: [PATCH] add test for waker --- actix-server/src/waker.rs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/actix-server/src/waker.rs b/actix-server/src/waker.rs index b47cc3fb..7baed05b 100644 --- a/actix-server/src/waker.rs +++ b/actix-server/src/waker.rs @@ -90,3 +90,37 @@ pub(crate) fn waker_channel() -> (WakerTx, WakerRx) { (WakerTx(tx), WakerRx(rx)) } + +#[cfg(test)] +mod test { + use std::task::{Context, Poll}; + + use super::*; + + #[test] + fn test_waker_channel() { + let poll = mio::Poll::new().unwrap(); + + let waker = from_registry(poll.registry()).unwrap(); + + let cx = &mut Context::from_waker(&waker); + + let (tx, mut rx) = waker_channel(); + + assert!(rx.poll_recv(cx).is_pending()); + + tx.wake(super::WakerInterest::Stop); + + match rx.poll_recv(cx) { + Poll::Ready(Some(WakerInterest::Stop)) => {} + _ => panic!("Failed to wake up WakerRx"), + } + + drop(tx); + + match rx.poll_recv(cx) { + Poll::Ready(None) => {} + _ => panic!("Failed to close waker channel"), + } + } +}