diff options
Diffstat (limited to 'tests/fs_file.rs')
-rw-r--r-- | tests/fs_file.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/fs_file.rs b/tests/fs_file.rs index bf2f1d7..1f4760e 100644 --- a/tests/fs_file.rs +++ b/tests/fs_file.rs @@ -22,6 +22,27 @@ async fn basic_read() { assert_eq!(n, HELLO.len()); assert_eq!(&buf[..n], HELLO); + + // Drop the data from the cache to stimulate uncached codepath on Linux (see preadv2 in + // file.rs) + #[cfg(target_os = "linux")] + { + use std::os::unix::io::AsRawFd; + nix::unistd::fsync(tempfile.as_raw_fd()).unwrap(); + nix::fcntl::posix_fadvise( + tempfile.as_raw_fd(), + 0, + 0, + nix::fcntl::PosixFadviseAdvice::POSIX_FADV_DONTNEED, + ) + .unwrap(); + } + + let mut file = File::open(tempfile.path()).await.unwrap(); + let n = file.read(&mut buf).await.unwrap(); + + assert_eq!(n, HELLO.len()); + assert_eq!(&buf[..n], HELLO); } #[tokio::test] |