Skip to content

Commit 9d55ba7

Browse files
committed
Add tests for sockets tcp properties
1 parent b54723d commit 9d55ba7

1 file changed

Lines changed: 102 additions & 0 deletions

File tree

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
use test_wasm32_wasip3::cli::{export, exports::wasi::cli::run::Guest};
2+
use test_wasm32_wasip3::sockets::wasi::sockets::types::{ErrorCode, IpAddressFamily, TcpSocket};
3+
4+
struct Component;
5+
6+
export!(Component);
7+
8+
const SECOND: u64 = 1_000_000_000;
9+
10+
fn test_properties(family: IpAddressFamily) {
11+
let sock = TcpSocket::create(family).unwrap();
12+
13+
assert!(matches!(
14+
sock.set_listen_backlog_size(0),
15+
Err(ErrorCode::InvalidArgument)
16+
));
17+
assert!(matches!(sock.set_listen_backlog_size(1), Ok(_)));
18+
assert!(matches!(sock.set_listen_backlog_size(u64::MAX), Ok(_)));
19+
20+
assert!(matches!(sock.set_keep_alive_enabled(true), Ok(_)));
21+
assert!(matches!(sock.set_keep_alive_enabled(false), Ok(_)));
22+
23+
assert!(matches!(
24+
sock.set_keep_alive_idle_time(0),
25+
Err(ErrorCode::InvalidArgument)
26+
));
27+
assert!(matches!(sock.set_keep_alive_idle_time(1), Ok(_)));
28+
let idle_time = sock.get_keep_alive_idle_time().unwrap();
29+
assert!(idle_time > 0 && idle_time <= 1 * SECOND);
30+
assert!(matches!(sock.set_keep_alive_idle_time(u64::MAX), Ok(_)));
31+
32+
assert!(matches!(
33+
sock.set_keep_alive_interval(0),
34+
Err(ErrorCode::InvalidArgument)
35+
));
36+
assert!(matches!(sock.set_keep_alive_interval(1), Ok(_)));
37+
let idle_time = sock.get_keep_alive_interval().unwrap();
38+
assert!(idle_time > 0 && idle_time <= 1 * SECOND);
39+
assert!(matches!(sock.set_keep_alive_interval(u64::MAX), Ok(_)));
40+
41+
assert!(matches!(
42+
sock.set_keep_alive_count(0),
43+
Err(ErrorCode::InvalidArgument)
44+
));
45+
assert!(matches!(sock.set_keep_alive_count(1), Ok(_)));
46+
assert!(matches!(sock.set_keep_alive_count(u32::MAX), Ok(_)));
47+
48+
assert!(matches!(
49+
sock.set_hop_limit(0),
50+
Err(ErrorCode::InvalidArgument)
51+
));
52+
assert!(matches!(sock.set_hop_limit(1), Ok(_)));
53+
assert!(matches!(sock.set_hop_limit(u8::MAX), Ok(_)));
54+
55+
assert!(matches!(
56+
sock.set_receive_buffer_size(0),
57+
Err(ErrorCode::InvalidArgument)
58+
));
59+
assert!(matches!(sock.set_receive_buffer_size(1), Ok(_)));
60+
assert!(matches!(sock.set_receive_buffer_size(u64::MAX), Ok(_)));
61+
assert!(matches!(
62+
sock.set_send_buffer_size(0),
63+
Err(ErrorCode::InvalidArgument)
64+
));
65+
assert!(matches!(sock.set_send_buffer_size(1), Ok(_)));
66+
assert!(matches!(sock.set_send_buffer_size(u64::MAX), Ok(_)));
67+
68+
sock.set_keep_alive_enabled(true).unwrap();
69+
assert_eq!(sock.get_keep_alive_enabled().unwrap(), true);
70+
sock.set_keep_alive_enabled(false).unwrap();
71+
assert_eq!(sock.get_keep_alive_enabled().unwrap(), false);
72+
73+
sock.set_keep_alive_idle_time(42 * SECOND).unwrap();
74+
assert_eq!(sock.get_keep_alive_idle_time().unwrap(), 42 * SECOND);
75+
76+
sock.set_keep_alive_interval(42 * SECOND).unwrap();
77+
assert_eq!(sock.get_keep_alive_interval().unwrap(), 42 * SECOND);
78+
79+
sock.set_keep_alive_count(42).unwrap();
80+
assert_eq!(sock.get_keep_alive_count().unwrap(), 42);
81+
82+
sock.set_hop_limit(42).unwrap();
83+
assert_eq!(sock.get_hop_limit().unwrap(), 42);
84+
85+
sock.set_receive_buffer_size(0x10000).unwrap();
86+
assert_eq!(sock.get_receive_buffer_size().unwrap(), 0x10000);
87+
88+
sock.set_send_buffer_size(0x10000).unwrap();
89+
assert_eq!(sock.get_send_buffer_size().unwrap(), 0x10000);
90+
}
91+
92+
impl Guest for Component {
93+
async fn run() -> Result<(), ()> {
94+
test_properties(IpAddressFamily::Ipv4);
95+
test_properties(IpAddressFamily::Ipv6);
96+
Ok(())
97+
}
98+
}
99+
100+
fn main() {
101+
unreachable!()
102+
}

0 commit comments

Comments
 (0)