]>
git.proxmox.com Git - rustc.git/blob - vendor/tokio/tests/tcp_socket.rs
1 #![warn(rust_2018_idioms)]
2 #![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support bind
4 use std
::time
::Duration
;
5 use tokio
::net
::TcpSocket
;
6 use tokio_test
::assert_ok
;
9 async
fn basic_usage_v4() {
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
));
15 let srv
= assert_ok
!(srv
.listen(128));
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
);
23 let _
= assert_ok
!(srv
.accept().await
);
27 #[cfg(not(tokio_no_ipv6))]
28 async
fn basic_usage_v6() {
30 let addr
= assert_ok
!("[::1]:0".parse());
31 let srv
= assert_ok
!(TcpSocket
::new_v6());
32 assert_ok
!(srv
.bind(addr
));
34 let srv
= assert_ok
!(srv
.listen(128));
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
);
42 let _
= assert_ok
!(srv
.accept().await
);
46 async
fn bind_before_connect() {
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
));
52 let srv
= assert_ok
!(srv
.listen(128));
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
);
61 let _
= assert_ok
!(srv
.accept().await
);
65 async
fn basic_linger() {
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
));
71 assert
!(srv
.linger().unwrap().is_none());
73 srv
.set_linger(Some(Duration
::new(0, 0))).unwrap();
74 assert_eq
!(srv
.linger().unwrap(), Some(Duration
::new(0, 0)));