summaryrefslogtreecommitdiff
path: root/test/sys
diff options
context:
space:
mode:
authorAlan Somers <asomers@gmail.com>2018-03-06 19:28:16 -0700
committerAlan Somers <asomers@gmail.com>2018-03-22 16:53:12 -0600
commit4729935dec575d1d0353f3cdf7e318b4157d2cc3 (patch)
tree8659f8ab53d92bd4899ce27dd987398eb400626f /test/sys
parent6703bc8a654f4a4cff352a1959c08217f878adb0 (diff)
downloadnix-4729935dec575d1d0353f3cdf7e318b4157d2cc3.zip
Replace AioCb::from_bytes with more generic from_boxed_slice
Supporting the bytes crate was unnecessarily specific. This change replaces from_bytes and from_bytes_mut with from_boxed_slice and from_boxed_mut_slice, which can work with anything that implements Borrow<[u8]> and BorrowMut<[u8]>, respectively.
Diffstat (limited to 'test/sys')
-rw-r--r--test/sys/test_aio.rs50
1 files changed, 11 insertions, 39 deletions
diff --git a/test/sys/test_aio.rs b/test/sys/test_aio.rs
index f11c7ef9..0f7d71e5 100644
--- a/test/sys/test_aio.rs
+++ b/test/sys/test_aio.rs
@@ -323,20 +323,21 @@ fn test_write() {
assert!(rbuf == EXPECT);
}
-// Tests `AioCb::from_bytes`
+// Tests `AioCb::from_boxed_slice` with `Bytes`
#[test]
#[cfg_attr(all(target_env = "musl", target_arch = "x86_64"), ignore)]
fn test_write_bytes() {
const INITIAL: &[u8] = b"abcdef123456";
- let wbuf = Bytes::from(&b"CDEF"[..]);
+ let wbuf = Box::new(Bytes::from(&b"CDEF"[..]));
let mut rbuf = Vec::new();
const EXPECT: &[u8] = b"abCDEF123456";
+ let expected_len = wbuf.len();
let mut f = tempfile().unwrap();
f.write_all(INITIAL).unwrap();
- let mut aiocb = AioCb::from_bytes( f.as_raw_fd(),
+ let mut aiocb = AioCb::from_boxed_slice( f.as_raw_fd(),
2, //offset
- wbuf.clone(),
+ wbuf,
0, //priority
SigevNotify::SigevNone,
LioOpcode::LIO_NOP);
@@ -344,7 +345,7 @@ fn test_write_bytes() {
let err = poll_aio(&mut aiocb);
assert!(err == Ok(()));
- assert!(aiocb.aio_return().unwrap() as usize == wbuf.len());
+ assert!(aiocb.aio_return().unwrap() as usize == expected_len);
f.seek(SeekFrom::Start(0)).unwrap();
let len = f.read_to_end(&mut rbuf).unwrap();
@@ -352,46 +353,17 @@ fn test_write_bytes() {
assert!(rbuf == EXPECT);
}
-// Tests `AioCb::from_bytes_mut`
-#[test]
-#[cfg_attr(all(target_env = "musl", target_arch = "x86_64"), ignore)]
-fn test_read_bytes_mut_big() {
- const INITIAL: &[u8] = b"abcdefgh12345678abcdefgh12345678abcdefgh12345678abcdefgh12345678abcdefgh12345678";
- // rbuf needs to be larger than 32 bytes (64 on 32-bit systems) so
- // BytesMut::clone is implemented by reference.
- let rbuf = BytesMut::from(vec![0; 70]);
- const EXPECT: &[u8] = b"cdefgh12345678abcdefgh12345678abcdefgh12345678abcdefgh12345678abcdefgh";
- let mut f = tempfile().unwrap();
- f.write_all(INITIAL).unwrap();
-
- let mut aiocb = AioCb::from_bytes_mut( f.as_raw_fd(),
- 2, //offset
- rbuf,
- 0, //priority
- SigevNotify::SigevNone,
- LioOpcode::LIO_NOP);
- aiocb.read().unwrap();
-
- let err = poll_aio(&mut aiocb);
- assert_eq!(err, Ok(()));
- assert_eq!(aiocb.aio_return().unwrap() as usize, EXPECT.len());
- let buffer = aiocb.into_buffer();
- assert_eq!(buffer.bytes_mut().unwrap(), EXPECT);
-}
-
-// Tests reallocation in `AioCb::from_bytes_mut`
+// Tests `AioCb::from_boxed_mut_slice` with `BytesMut`
#[test]
#[cfg_attr(all(target_env = "musl", target_arch = "x86_64"), ignore)]
fn test_read_bytes_mut_small() {
const INITIAL: &[u8] = b"abcdef";
- // rbuf needs to be no more than 32 bytes (64 on 32-bit systems) so
- // BytesMut::clone is implemented inline.
- let rbuf = BytesMut::from(vec![0; 4]);
+ let rbuf = Box::new(BytesMut::from(vec![0; 4]));
const EXPECT: &[u8] = b"cdef";
let mut f = tempfile().unwrap();
f.write_all(INITIAL).unwrap();
- let mut aiocb = AioCb::from_bytes_mut( f.as_raw_fd(),
+ let mut aiocb = AioCb::from_boxed_mut_slice( f.as_raw_fd(),
2, //offset
rbuf,
0, //priority
@@ -402,8 +374,8 @@ fn test_read_bytes_mut_small() {
let err = poll_aio(&mut aiocb);
assert_eq!(err, Ok(()));
assert_eq!(aiocb.aio_return().unwrap() as usize, EXPECT.len());
- let buffer = aiocb.into_buffer();
- assert_eq!(buffer.bytes_mut().unwrap(), EXPECT);
+ let buffer = aiocb.boxed_mut_slice().unwrap();
+ assert_eq!(buffer.borrow(), EXPECT);
}
// Tests `AioCb::from_ptr`