From 85ae61498353289b79b95cba8acdffc7addbafce Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 22 Feb 2017 21:12:52 -0800 Subject: [PATCH] Add a test that dropping a client doesn't break the server (#115) --- src/macros.rs | 29 +++++++++++++++++++++++++++++ src/server.rs | 1 + 2 files changed, 30 insertions(+) diff --git a/src/macros.rs b/src/macros.rs index 5a44745..3cd7be6 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -1110,6 +1110,35 @@ mod functional_test { Server.listen(addr, &reactor.handle(), server::Options::default()).unwrap(); } + #[test] + fn drop_client() { + use {client, server}; + use client::future::ClientExt; + use util::FirstSocketAddr; + use super::{FutureClient, FutureServiceExt}; + + let _ = env_logger::init(); + let mut reactor = reactor::Core::new().unwrap(); + let (addr, server) = Server.listen("localhost:0".first_socket_addr(), + &reactor.handle(), + server::Options::default()) + .unwrap(); + reactor.handle().spawn(server); + + let client = FutureClient::connect(addr, + client::Options::default() + .handle(reactor.handle())); + let client = unwrap!(reactor.run(client)); + assert_eq!(reactor.run(client.add(1, 2)).unwrap(), 3); + drop(client); + + let client = FutureClient::connect(addr, + client::Options::default() + .handle(reactor.handle())); + let client = unwrap!(reactor.run(client)); + assert_eq!(reactor.run(client.add(1, 2)).unwrap(), 3); + } + #[cfg(feature = "tls")] #[test] fn tcp_and_tls() { diff --git a/src/server.rs b/src/server.rs index ee72c86..4aa4c67 100644 --- a/src/server.rs +++ b/src/server.rs @@ -211,6 +211,7 @@ fn listen_with(new_service: S, { let listener = listener(&addr, handle)?; let addr = listener.local_addr()?; + debug!("Listening on {}.", addr); let handle = handle.clone();