diff options
| author | Brian Anderson <andersrb@gmail.com> | 2012-10-20 19:38:31 -0400 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-10-20 17:17:10 -0700 |
| commit | 781f8cbe4e5f729907d38cb4de8fc407c1bcb23e (patch) | |
| tree | aae21f211946f659f08d5a96dc2f49b8acbcf983 /src | |
| parent | 79e538d32ab33604a8288e7b76c875ff075743d2 (diff) | |
| download | rust-781f8cbe4e5f729907d38cb4de8fc407c1bcb23e.tar.gz rust-781f8cbe4e5f729907d38cb4de8fc407c1bcb23e.zip | |
std: Add test for getpeername
Diffstat (limited to 'src')
| -rw-r--r-- | src/libstd/net_tcp.rs | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/libstd/net_tcp.rs b/src/libstd/net_tcp.rs index 86b3d6ba08f..351b31dcfbc 100644 --- a/src/libstd/net_tcp.rs +++ b/src/libstd/net_tcp.rs @@ -1249,6 +1249,10 @@ mod test { impl_gl_tcp_ipv4_server_and_client(); } #[test] + fn test_gl_tcp_get_peer_name() unsafe { + impl_gl_tcp_ipv4_get_peer_name(); + } + #[test] fn test_gl_tcp_ipv4_client_error_connection_refused() unsafe { impl_gl_tcp_ipv4_client_error_connection_refused(); } @@ -1275,6 +1279,11 @@ mod test { } #[test] #[ignore(cfg(target_os = "linux"))] + fn test_gl_tcp_get_peer_name() unsafe { + impl_gl_tcp_ipv4_get_peer_name(); + } + #[test] + #[ignore(cfg(target_os = "linux"))] fn test_gl_tcp_ipv4_client_error_connection_refused() unsafe { impl_gl_tcp_ipv4_client_error_connection_refused(); } @@ -1342,6 +1351,52 @@ mod test { assert str::contains(actual_req, expected_req); assert str::contains(actual_resp, expected_resp); } + fn impl_gl_tcp_ipv4_get_peer_name() { + let hl_loop = uv::global_loop::get(); + let server_ip = ~"127.0.0.1"; + let server_port = 8889u; + let expected_resp = ~"pong"; + + let server_result_po = core::comm::Port::<~str>(); + let server_result_ch = core::comm::Chan(&server_result_po); + + let cont_po = core::comm::Port::<()>(); + let cont_ch = core::comm::Chan(&cont_po); + // server + do task::spawn_sched(task::ManualThreads(1u)) { + let actual_req = do comm::listen |server_ch| { + run_tcp_test_server( + server_ip, + server_port, + expected_resp, + server_ch, + cont_ch, + hl_loop) + }; + server_result_ch.send(actual_req); + }; + core::comm::recv(cont_po); + // client + log(debug, ~"server started, firing up client.."); + do core::comm::listen |client_ch| { + let server_ip_addr = ip::v4::parse_addr(server_ip); + let iotask = uv::global_loop::get(); + let connect_result = connect(move server_ip_addr, server_port, + iotask); + + let sock = result::unwrap(move connect_result); + + // This is what we are actually testing! + assert net::ip::format_addr(&sock.getpeername()) == ~"127.0.0.1"; + assert net::ip::get_port(&sock.getpeername()) == 8889; + + // Fulfill the protocol the test server expects + let resp_bytes = str::to_bytes(~"ping"); + tcp_write_single(&sock, resp_bytes); + let read_result = sock.read(0u); + client_ch.send(str::from_bytes(read_result.get())); + }; + } fn impl_gl_tcp_ipv4_client_error_connection_refused() { let hl_loop = uv::global_loop::get(); let server_ip = ~"127.0.0.1"; |
