summaryrefslogtreecommitdiff
path: root/test/sys/test_uio.rs
diff options
context:
space:
mode:
Diffstat (limited to 'test/sys/test_uio.rs')
-rw-r--r--test/sys/test_uio.rs98
1 files changed, 62 insertions, 36 deletions
diff --git a/test/sys/test_uio.rs b/test/sys/test_uio.rs
index fc2dfabe..f46b1940 100644
--- a/test/sys/test_uio.rs
+++ b/test/sys/test_uio.rs
@@ -1,18 +1,18 @@
use nix::sys::uio::*;
use nix::unistd::*;
-use rand::{thread_rng, Rng};
use rand::distributions::Alphanumeric;
-use std::{cmp, iter};
-use std::fs::{OpenOptions};
+use rand::{thread_rng, Rng};
+use std::fs::OpenOptions;
use std::io::IoSlice;
use std::os::unix::io::AsRawFd;
+use std::{cmp, iter};
#[cfg(not(target_os = "redox"))]
use std::io::IoSliceMut;
+use tempfile::tempdir;
#[cfg(not(target_os = "redox"))]
use tempfile::tempfile;
-use tempfile::tempdir;
#[test]
fn test_writev() {
@@ -31,8 +31,12 @@ fn test_writev() {
let mut consumed = 0;
while consumed < to_write.len() {
let left = to_write.len() - consumed;
- let slice_len = if left <= 64 { left } else { thread_rng().gen_range(64..cmp::min(256, left)) };
- let b = &to_write[consumed..consumed+slice_len];
+ let slice_len = if left <= 64 {
+ left
+ } else {
+ thread_rng().gen_range(64..cmp::min(256, left))
+ };
+ let b = &to_write[consumed..consumed + slice_len];
iovecs.push(IoSlice::new(b));
consumed += slice_len;
}
@@ -65,7 +69,7 @@ fn test_writev() {
#[test]
#[cfg(not(target_os = "redox"))]
fn test_readv() {
- let s:String = thread_rng()
+ let s: String = thread_rng()
.sample_iter(&Alphanumeric)
.map(char::from)
.take(128)
@@ -75,7 +79,11 @@ fn test_readv() {
let mut allocated = 0;
while allocated < to_write.len() {
let left = to_write.len() - allocated;
- let vec_len = if left <= 64 { left } else { thread_rng().gen_range(64..cmp::min(256, left)) };
+ let vec_len = if left <= 64 {
+ left
+ } else {
+ thread_rng().gen_range(64..cmp::min(256, left))
+ };
let v: Vec<u8> = iter::repeat(0u8).take(vec_len).collect();
storage.push(v);
allocated += vec_len;
@@ -117,12 +125,12 @@ fn test_pwrite() {
use std::io::Read;
let mut file = tempfile().unwrap();
- let buf = [1u8;8];
+ let buf = [1u8; 8];
assert_eq!(Ok(8), pwrite(file.as_raw_fd(), &buf, 8));
let mut file_content = Vec::new();
file.read_to_end(&mut file_content).unwrap();
- let mut expected = vec![0u8;8];
- expected.extend(vec![1;8]);
+ let mut expected = vec![0u8; 8];
+ expected.extend(vec![1; 8]);
assert_eq!(file_content, expected);
}
@@ -133,12 +141,17 @@ fn test_pread() {
let tempdir = tempdir().unwrap();
let path = tempdir.path().join("pread_test_file");
- let mut file = OpenOptions::new().write(true).read(true).create(true)
- .truncate(true).open(path).unwrap();
+ let mut file = OpenOptions::new()
+ .write(true)
+ .read(true)
+ .create(true)
+ .truncate(true)
+ .open(path)
+ .unwrap();
let file_content: Vec<u8> = (0..64).collect();
file.write_all(&file_content).unwrap();
- let mut buf = [0u8;16];
+ let mut buf = [0u8; 16];
assert_eq!(Ok(16), pread(file.as_raw_fd(), &mut buf, 16));
let expected: Vec<_> = (16..32).collect();
assert_eq!(&buf[..], &expected[..]);
@@ -150,7 +163,7 @@ fn test_pwritev() {
use std::io::Read;
let to_write: Vec<u8> = (0..128).collect();
- let expected: Vec<u8> = [vec![0;100], to_write.clone()].concat();
+ let expected: Vec<u8> = [vec![0; 100], to_write.clone()].concat();
let iovecs = [
IoSlice::new(&to_write[0..17]),
@@ -162,8 +175,13 @@ fn test_pwritev() {
// pwritev them into a temporary file
let path = tempdir.path().join("pwritev_test_file");
- let mut file = OpenOptions::new().write(true).read(true).create(true)
- .truncate(true).open(path).unwrap();
+ let mut file = OpenOptions::new()
+ .write(true)
+ .read(true)
+ .create(true)
+ .truncate(true)
+ .open(path)
+ .unwrap();
let written = pwritev(file.as_raw_fd(), &iovecs, 100).ok().unwrap();
assert_eq!(written, to_write.len());
@@ -186,20 +204,23 @@ fn test_preadv() {
let path = tempdir.path().join("preadv_test_file");
- let mut file = OpenOptions::new().read(true).write(true).create(true)
- .truncate(true).open(path).unwrap();
+ let mut file = OpenOptions::new()
+ .read(true)
+ .write(true)
+ .create(true)
+ .truncate(true)
+ .open(path)
+ .unwrap();
file.write_all(&to_write).unwrap();
- let mut buffers: Vec<Vec<u8>> = vec![
- vec![0; 24],
- vec![0; 1],
- vec![0; 75],
- ];
+ let mut buffers: Vec<Vec<u8>> = vec![vec![0; 24], vec![0; 1], vec![0; 75]];
{
// Borrow the buffers into IoVecs and preadv into them
- let mut iovecs: Vec<_> = buffers.iter_mut().map(
- |buf| IoSliceMut::new(&mut buf[..])).collect();
+ let mut iovecs: Vec<_> = buffers
+ .iter_mut()
+ .map(|buf| IoSliceMut::new(&mut buf[..]))
+ .collect();
assert_eq!(Ok(100), preadv(file.as_raw_fd(), &mut iovecs, 100));
}
@@ -208,14 +229,15 @@ fn test_preadv() {
}
#[test]
-#[cfg(all(target_os = "linux", not(target_env = "uclibc")))] // uclibc doesn't implement process_vm_readv
+#[cfg(all(target_os = "linux", not(target_env = "uclibc")))]
+// uclibc doesn't implement process_vm_readv
// qemu-user doesn't implement process_vm_readv/writev on most arches
#[cfg_attr(qemu, ignore)]
fn test_process_vm_readv() {
- use nix::unistd::ForkResult::*;
+ use crate::*;
use nix::sys::signal::*;
use nix::sys::wait::*;
- use crate::*;
+ use nix::unistd::ForkResult::*;
require_capability!("test_process_vm_readv", CAP_SYS_PTRACE);
let _m = crate::FORK_MTX.lock();
@@ -225,7 +247,7 @@ fn test_process_vm_readv() {
let mut vector = vec![1u8, 2, 3, 4, 5];
let (r, w) = pipe().unwrap();
- match unsafe{fork()}.expect("Error: Fork Failed") {
+ match unsafe { fork() }.expect("Error: Fork Failed") {
Parent { child } => {
close(w).unwrap();
// wait for child
@@ -236,16 +258,18 @@ fn test_process_vm_readv() {
let remote_iov = RemoteIoVec { base: ptr, len: 5 };
let mut buf = vec![0u8; 5];
- let ret = process_vm_readv(child,
- &mut [IoSliceMut::new(&mut buf)],
- &[remote_iov]);
+ let ret = process_vm_readv(
+ child,
+ &mut [IoSliceMut::new(&mut buf)],
+ &[remote_iov],
+ );
kill(child, SIGTERM).unwrap();
waitpid(child, None).unwrap();
assert_eq!(Ok(5), ret);
assert_eq!(20u8, buf.iter().sum());
- },
+ }
Child => {
let _ = close(r);
for i in &mut vector {
@@ -253,7 +277,9 @@ fn test_process_vm_readv() {
}
let _ = write(w, b"\0");
let _ = close(w);
- loop { pause(); }
- },
+ loop {
+ pause();
+ }
+ }
}
}