aboutsummaryrefslogtreecommitdiff
path: root/tests/fs_file.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/fs_file.rs')
-rw-r--r--tests/fs_file.rs21
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]