1// Test dropping an AioCb that hasn't yet finished.
2// This must happen in its own process, because on OSX this test seems to hose
3// the AIO subsystem and causes subsequent tests to fail
4#[test]
5#[should_panic(expected = "Dropped an in-progress AioCb")]
6#[cfg(all(
7 not(target_env = "musl"),
8 not(target_env = "uclibc"),
9 any(
10 target_os = "linux",
11 target_os = "ios",
12 target_os = "macos",
13 target_os = "freebsd",
14 target_os = "netbsd"
15 )
16))]
17fn test_drop() {
18 use nix::sys::aio::*;
19 use nix::sys::signal::*;
20 use std::os::unix::io::AsRawFd;
21 use tempfile::tempfile;
22
23 const WBUF: &[u8] = b"CDEF";
24
25 let f = tempfile().unwrap();
26 f.set_len(6).unwrap();
27 let mut aiocb = Box::pin(AioWrite::new(
28 f.as_raw_fd(),
29 2, //offset
30 WBUF,
31 0, //priority
32 SigevNotify::SigevNone,
33 ));
34 aiocb.as_mut().submit().unwrap();
35}
36