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