From e57cb2b5629ee46bd703cab828a71761234d6ff3 Mon Sep 17 00:00:00 2001 From: Alex Sayers Date: Thu, 24 Apr 2025 10:23:33 +0900 Subject: [PATCH 1/3] test_udp_recvmsg_multishot: Be more explicit about expected CQEs --- io-uring-test/src/tests/net.rs | 51 +++++++++++++++++----------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/io-uring-test/src/tests/net.rs b/io-uring-test/src/tests/net.rs index 3488a36..c965a07 100644 --- a/io-uring-test/src/tests/net.rs +++ b/io-uring-test/src/tests/net.rs @@ -1644,27 +1644,14 @@ pub fn test_udp_recvmsg_multishot = ring.completion().map(Into::into).collect(); - assert_eq!(cqes.len(), 5); - for cqe in cqes { - let is_more = io_uring::cqueue::more(cqe.flags()); - match cqe.user_data().u64_() { - // send notifications - 55 => { - assert!(cqe.result().unwrap() > 0); - assert!(!is_more); - } - // SendMsgZc with two notification - 66 => { - if cqe.result().is_ok_and(|x| x > 0) { - assert!(is_more); - } else { - assert!(!is_more); - } - } - // RecvMsgMulti - 77 => { - assert!(cqe.result().unwrap() > 0); - assert!(is_more); + let mut pretty_cqes = cqes + .into_iter() + .map(|cqe| { + let is_final = !io_uring::cqueue::more(cqe.flags()); + let user_data = cqe.user_data().u64_(); + let is_err = cqe.result().is_err(); + if user_data == 77 { + // RecvMsgMulti let buf_id = io_uring::cqueue::buffer_select(cqe.flags()).unwrap(); let tmp_buf = &buffers[buf_id as usize]; let msg = types::RecvMsgOut::parse(tmp_buf, &msghdr).unwrap(); @@ -1682,11 +1669,23 @@ pub fn test_udp_recvmsg_multishot { - unreachable!() - } - } - } + (user_data, is_err, is_final) + }) + .collect::>(); + pretty_cqes.sort(); + assert_eq!( + pretty_cqes, + [ + // send notifications + (55, false, true), + // SendMsgZc with two notification + (66, false, false), + (66, false, true), + (66, true, true), + // RecvMsgMulti + (77, false, false), + ] + ); Ok(()) } From 421e5f223cb6d35dfb6dff0d2f8043af3b31e708 Mon Sep 17 00:00:00 2001 From: Alex Sayers Date: Thu, 24 Apr 2025 10:24:05 +0900 Subject: [PATCH 2/3] test_udp_recvmsg_multishot: Register the correct number of buffers --- io-uring-test/src/tests/net.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/io-uring-test/src/tests/net.rs b/io-uring-test/src/tests/net.rs index c965a07..c9cf6e5 100644 --- a/io-uring-test/src/tests/net.rs +++ b/io-uring-test/src/tests/net.rs @@ -1564,7 +1564,7 @@ pub fn test_udp_recvmsg_multishot Date: Thu, 24 Apr 2025 10:24:40 +0900 Subject: [PATCH 3/3] test_udp_recvmsg_multishot: Fix the expected CQEs --- io-uring-test/src/tests/net.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/io-uring-test/src/tests/net.rs b/io-uring-test/src/tests/net.rs index c9cf6e5..690cd3a 100644 --- a/io-uring-test/src/tests/net.rs +++ b/io-uring-test/src/tests/net.rs @@ -1642,7 +1642,7 @@ pub fn test_udp_recvmsg_multishot = ring.completion().map(Into::into).collect(); let mut pretty_cqes = cqes .into_iter() @@ -1650,7 +1650,7 @@ pub fn test_udp_recvmsg_multishot