MCPcopy Create free account
hub / github.com/bytecodealliance/rustix / do_test_unix_msg_unconnected

Function do_test_unix_msg_unconnected

tests/net/unix.rs:266–367  ·  view source on GitHub ↗
(addr: SocketAddrUnix)

Source from the content-addressed store, hash-verified

264/// `sendmsg_addr` instead of `sendmsg`.
265#[cfg(not(any(target_os = "espidf", target_os = "redox", target_os = "wasi")))]
266fn do_test_unix_msg_unconnected(addr: SocketAddrUnix) {
267 use rustix::io::{IoSlice, IoSliceMut};
268 use rustix::net::{recvmsg, sendmsg_addr, RecvFlags, ReturnFlags, SendFlags};
269
270 let server = {
271 let runs: &[i32] = &[3, 184, 187, 0];
272 let data_socket = socket(AddressFamily::UNIX, SocketType::DGRAM, None).unwrap();
273 bind(&data_socket, &addr).unwrap();
274
275 move || {
276 let mut buffer = [0; BUFFER_SIZE];
277 for expected_sum in runs {
278 let mut sum = 0;
279 loop {
280 let result = recvmsg(
281 &data_socket,
282 &mut [IoSliceMut::new(&mut buffer)],
283 &mut Default::default(),
284 RecvFlags::empty(),
285 )
286 .unwrap();
287 let nread = result.bytes;
288
289 assert_ne!(&buffer[..nread], b"exit");
290 assert_eq!(result.flags, ReturnFlags::empty());
291 if &buffer[..nread] == b"sum" {
292 break;
293 }
294
295 sum += i32::from_str(&String::from_utf8_lossy(&buffer[..nread])).unwrap();
296 }
297
298 assert_eq!(sum, *expected_sum);
299 }
300 let result = recvmsg(
301 &data_socket,
302 &mut [IoSliceMut::new(&mut buffer)],
303 &mut Default::default(),
304 RecvFlags::empty(),
305 )
306 .unwrap();
307 let nread = result.bytes;
308
309 assert_eq!(&buffer[..nread], b"exit");
310 assert_eq!(result.flags, ReturnFlags::empty());
311 }
312 };
313
314 let client = move || {
315 let runs: &[&[&str]] = &[&["1", "2"], &["4", "77", "103"], &["5", "78", "104"], &[]];
316
317 for args in runs {
318 let data_socket = socket(AddressFamily::UNIX, SocketType::DGRAM, None).unwrap();
319
320 for arg in *args {
321 sendmsg_addr(
322 &data_socket,
323 &addr,

Callers 2

Calls 7

serverFunction · 0.70
clientFunction · 0.70
socketFunction · 0.50
bindFunction · 0.50
recvmsgFunction · 0.50
sendmsg_addrFunction · 0.50
as_bytesMethod · 0.45

Tested by 2