1 #![warn(rust_2018_idioms)] 2 #![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi doesn't support bind 3 // No `socket` on miri. 4 5 use std::time::Duration; 6 use tokio::net::TcpSocket; 7 use tokio_test::assert_ok; 8 9 #[tokio::test] basic_usage_v4()10async fn basic_usage_v4() { 11 // Create server 12 let addr = assert_ok!("127.0.0.1:0".parse()); 13 let srv = assert_ok!(TcpSocket::new_v4()); 14 assert_ok!(srv.bind(addr)); 15 16 let srv = assert_ok!(srv.listen(128)); 17 18 // Create client & connect 19 let addr = srv.local_addr().unwrap(); 20 let cli = assert_ok!(TcpSocket::new_v4()); 21 let _cli = assert_ok!(cli.connect(addr).await); 22 23 // Accept 24 let _ = assert_ok!(srv.accept().await); 25 } 26 27 #[tokio::test] basic_usage_v6()28async fn basic_usage_v6() { 29 // Create server 30 let addr = assert_ok!("[::1]:0".parse()); 31 let srv = assert_ok!(TcpSocket::new_v6()); 32 assert_ok!(srv.bind(addr)); 33 34 let srv = assert_ok!(srv.listen(128)); 35 36 // Create client & connect 37 let addr = srv.local_addr().unwrap(); 38 let cli = assert_ok!(TcpSocket::new_v6()); 39 let _cli = assert_ok!(cli.connect(addr).await); 40 41 // Accept 42 let _ = assert_ok!(srv.accept().await); 43 } 44 45 #[tokio::test] bind_before_connect()46async fn bind_before_connect() { 47 // Create server 48 let any_addr = assert_ok!("127.0.0.1:0".parse()); 49 let srv = assert_ok!(TcpSocket::new_v4()); 50 assert_ok!(srv.bind(any_addr)); 51 52 let srv = assert_ok!(srv.listen(128)); 53 54 // Create client & connect 55 let addr = srv.local_addr().unwrap(); 56 let cli = assert_ok!(TcpSocket::new_v4()); 57 assert_ok!(cli.bind(any_addr)); 58 let _cli = assert_ok!(cli.connect(addr).await); 59 60 // Accept 61 let _ = assert_ok!(srv.accept().await); 62 } 63 64 #[tokio::test] basic_linger()65async fn basic_linger() { 66 // Create server 67 let addr = assert_ok!("127.0.0.1:0".parse()); 68 let srv = assert_ok!(TcpSocket::new_v4()); 69 assert_ok!(srv.bind(addr)); 70 71 assert!(srv.linger().unwrap().is_none()); 72 73 srv.set_linger(Some(Duration::new(0, 0))).unwrap(); 74 assert_eq!(srv.linger().unwrap(), Some(Duration::new(0, 0))); 75 } 76