mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-10 20:19:07 +00:00
base/src: Add Unix StreamChannel Message test
Prior to this CL, the StreamChannel in base/src/sys/unix had no tests for FramingMode::Message. This CL adds a test for that framing mode. Bug: b:231641496 Change-Id: I75e13709d558258eca838c3190aaf0237e39513b Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3793688 Reviewed-by: Noah Gold <nkgold@google.com> Commit-Queue: Clarissa Garvey <clarissagarvey@chromium.org> Tested-by: Clarissa Garvey <clarissagarvey@chromium.org>
This commit is contained in:
parent
0076579e95
commit
00be3d5180
1 changed files with 38 additions and 1 deletions
|
@ -181,7 +181,7 @@ mod test {
|
|||
}
|
||||
|
||||
#[test]
|
||||
fn test_non_blocking_pair() {
|
||||
fn test_non_blocking_pair_byte() {
|
||||
let (mut sender, mut receiver) =
|
||||
StreamChannel::pair(BlockingMode::Nonblocking, FramingMode::Byte).unwrap();
|
||||
|
||||
|
@ -220,6 +220,43 @@ mod test {
|
|||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_non_blocking_pair_message() {
|
||||
let (mut sender, mut receiver) =
|
||||
StreamChannel::pair(BlockingMode::Nonblocking, FramingMode::Message).unwrap();
|
||||
|
||||
sender.write_all(&[75, 77, 54, 82, 76, 65]).unwrap();
|
||||
|
||||
// Wait for the data to arrive.
|
||||
let event_ctx: EventContext<Token> =
|
||||
EventContext::build_with(&[(receiver.get_read_notifier(), Token::ReceivedData)])
|
||||
.unwrap();
|
||||
let events = event_ctx.wait().unwrap();
|
||||
let tokens: Vec<Token> = events
|
||||
.iter()
|
||||
.filter(|e| e.is_readable)
|
||||
.map(|e| e.token)
|
||||
.collect();
|
||||
assert_eq!(tokens, vec! {Token::ReceivedData});
|
||||
|
||||
// Unlike Byte format, Message mode panics if the buffer is smaller than the packet size;
|
||||
// make the buffer the right size.
|
||||
let mut recv_buffer: [u8; 6] = [0; 6];
|
||||
|
||||
let size = receiver.read(&mut recv_buffer).unwrap();
|
||||
assert_eq!(size, 6);
|
||||
assert_eq!(recv_buffer, [75, 77, 54, 82, 76, 65]);
|
||||
|
||||
// Now that we've polled for & received all data, polling again should show no events.
|
||||
assert_eq!(
|
||||
event_ctx
|
||||
.wait_timeout(std::time::Duration::new(0, 0))
|
||||
.unwrap()
|
||||
.len(),
|
||||
0
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_non_blocking_pair_error_no_data() {
|
||||
let (mut sender, mut receiver) =
|
||||
|
|
Loading…
Reference in a new issue