diff options
Diffstat (limited to 'tokio/tests/time_timeout.rs')
-rw-r--r-- | tokio/tests/time_timeout.rs | 71 |
1 files changed, 7 insertions, 64 deletions
diff --git a/tokio/tests/time_timeout.rs b/tokio/tests/time_timeout.rs index fe3298af..408f794e 100644 --- a/tokio/tests/time_timeout.rs +++ b/tokio/tests/time_timeout.rs @@ -1,7 +1,7 @@ #![warn(rust_2018_idioms)] use tokio::sync::oneshot; -use tokio::time::{self, Instant, Timeout}; +use tokio::time::{self, timeout, timeout_at, Instant}; use tokio_test::*; use futures::future::pending; @@ -10,7 +10,7 @@ use std::time::Duration; #[tokio::test] async fn simultaneous_deadline_future_completion() { // Create a future that is immediately ready - let mut fut = task::spawn(Timeout::new_at(async {}, Instant::now())); + let mut fut = task::spawn(timeout_at(Instant::now(), async {})); // Ready! assert_ready_ok!(fut.poll()); @@ -19,7 +19,7 @@ async fn simultaneous_deadline_future_completion() { #[tokio::test] async fn completed_future_past_deadline() { // Wrap it with a deadline - let mut fut = task::spawn(Timeout::new_at(async {}, Instant::now() - ms(1000))); + let mut fut = task::spawn(timeout_at(Instant::now() - ms(1000), async {})); // Ready! assert_ready_ok!(fut.poll()); @@ -33,7 +33,7 @@ async fn future_and_deadline_in_future() { let (tx, rx) = oneshot::channel(); // Wrap it with a deadline - let mut fut = task::spawn(Timeout::new_at(rx, Instant::now() + ms(100))); + let mut fut = task::spawn(timeout_at(Instant::now() + ms(100), rx)); assert_pending!(fut.poll()); @@ -57,7 +57,7 @@ async fn future_and_timeout_in_future() { let (tx, rx) = oneshot::channel(); // Wrap it with a deadline - let mut fut = task::spawn(Timeout::new(rx, ms(100))); + let mut fut = task::spawn(timeout(ms(100), rx)); // Ready! assert_pending!(fut.poll()); @@ -80,7 +80,7 @@ async fn deadline_now_elapses() { time::pause(); // Wrap it with a deadline - let mut fut = task::spawn(Timeout::new_at(pending::<()>(), Instant::now())); + let mut fut = task::spawn(timeout_at(Instant::now(), pending::<()>())); // Factor in jitter // TODO: don't require this @@ -94,7 +94,7 @@ async fn deadline_future_elapses() { time::pause(); // Wrap it with a deadline - let mut fut = task::spawn(Timeout::new_at(pending::<()>(), Instant::now() + ms(300))); + let mut fut = task::spawn(timeout_at(Instant::now() + ms(300), pending::<()>())); assert_pending!(fut.poll()); @@ -104,63 +104,6 @@ async fn deadline_future_elapses() { assert_ready_err!(fut.poll()); } -#[tokio::test] -async fn stream_and_timeout_in_future() { - use tokio::sync::mpsc; - - time::pause(); - - // Not yet complete - let (mut tx, rx) = mpsc::unbounded_channel(); - - // Wrap it with a deadline - let mut stream = task::spawn(Timeout::new(rx, ms(100))); - - // Not ready - assert_pending!(stream.poll_next()); - - // Turn the timer, it runs for the elapsed time - time::advance(ms(90)).await; - - assert_pending!(stream.poll_next()); - - // Complete the future - tx.try_send(()).unwrap(); - - let item = assert_ready!(stream.poll_next()); - assert!(item.is_some()); -} - -#[tokio::test] -async fn idle_stream_timesout_periodically() { - use tokio::sync::mpsc; - - time::pause(); - - // Not yet complete - let (_tx, rx) = mpsc::unbounded_channel::<()>(); - - // Wrap it with a deadline - let mut stream = task::spawn(Timeout::new(rx, ms(100))); - - // Not ready - assert_pending!(stream.poll_next()); - - // Turn the timer, it runs for the elapsed time - time::advance(ms(101)).await; - - let v = assert_ready!(stream.poll_next()).unwrap(); - assert_err!(v); - - // Stream's timeout should reset - assert_pending!(stream.poll_next()); - - // Turn the timer, it runs for the elapsed time - time::advance(ms(101)).await; - let v = assert_ready!(stream.poll_next()).unwrap(); - assert_err!(v); -} - fn ms(n: u64) -> Duration { Duration::from_millis(n) } |