2019-08-10 00:07:57 +09:00
|
|
|
#![warn(rust_2018_idioms)]
|
2019-08-07 20:02:13 -07:00
|
|
|
#![cfg(feature = "default")]
|
2017-12-05 08:40:02 -08:00
|
|
|
|
|
|
|
|
use tokio::net::TcpListener;
|
2019-10-21 16:20:06 -07:00
|
|
|
use tokio_net::driver::{self, Reactor};
|
2019-08-07 20:02:13 -07:00
|
|
|
use tokio_test::{assert_err, assert_pending, assert_ready, task};
|
2017-12-05 08:40:02 -08:00
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn tcp_doesnt_block() {
|
2019-08-07 20:02:13 -07:00
|
|
|
let reactor = Reactor::new().unwrap();
|
|
|
|
|
let handle = reactor.handle();
|
2019-10-21 16:20:06 -07:00
|
|
|
|
|
|
|
|
// Set the current reactor for this thread
|
|
|
|
|
let _reactor_guard = driver::set_default(&handle);
|
|
|
|
|
|
2019-08-07 20:02:13 -07:00
|
|
|
let listener = std::net::TcpListener::bind("127.0.0.1:0").unwrap();
|
2019-10-21 16:20:06 -07:00
|
|
|
let mut listener = TcpListener::from_std(listener).unwrap();
|
2019-08-07 20:02:13 -07:00
|
|
|
drop(reactor);
|
|
|
|
|
|
|
|
|
|
let mut task = task::spawn(async move {
|
|
|
|
|
assert_err!(listener.accept().await);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
assert_ready!(task.poll());
|
2017-12-05 08:40:02 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn drop_wakes() {
|
2019-08-07 20:02:13 -07:00
|
|
|
let reactor = Reactor::new().unwrap();
|
|
|
|
|
let handle = reactor.handle();
|
2019-10-21 16:20:06 -07:00
|
|
|
|
|
|
|
|
// Set the current reactor for this thread
|
|
|
|
|
let _reactor_guard = driver::set_default(&handle);
|
|
|
|
|
|
2019-08-07 20:02:13 -07:00
|
|
|
let listener = std::net::TcpListener::bind("127.0.0.1:0").unwrap();
|
2019-10-21 16:20:06 -07:00
|
|
|
let mut listener = TcpListener::from_std(listener).unwrap();
|
2019-08-07 20:02:13 -07:00
|
|
|
|
|
|
|
|
let mut task = task::spawn(async move {
|
|
|
|
|
assert_err!(listener.accept().await);
|
2017-12-05 08:40:02 -08:00
|
|
|
});
|
2019-08-07 20:02:13 -07:00
|
|
|
|
|
|
|
|
assert_pending!(task.poll());
|
|
|
|
|
|
|
|
|
|
drop(reactor);
|
|
|
|
|
|
|
|
|
|
assert!(task.is_woken());
|
|
|
|
|
assert_ready!(task.poll());
|
2017-12-05 08:40:02 -08:00
|
|
|
}
|