36 lines
857 B
Rust
36 lines
857 B
Rust
|
|
#![warn(rust_2018_idioms)]
|
||
|
|
#![cfg(feature = "full")]
|
||
|
|
#![cfg(any(
|
||
|
|
target_os = "dragonfly",
|
||
|
|
target_os = "freebsd",
|
||
|
|
target_os = "macos",
|
||
|
|
target_os = "netbsd",
|
||
|
|
target_os = "openbsd",
|
||
|
|
target_os = "illumos"
|
||
|
|
))]
|
||
|
|
#![cfg(not(miri))] // No `sigaction` on Miri
|
||
|
|
|
||
|
|
mod support {
|
||
|
|
pub mod signal;
|
||
|
|
}
|
||
|
|
use support::signal::send_signal;
|
||
|
|
|
||
|
|
use tokio::signal;
|
||
|
|
use tokio::signal::unix::SignalKind;
|
||
|
|
use tokio::time::{timeout, Duration};
|
||
|
|
|
||
|
|
#[tokio::test]
|
||
|
|
async fn siginfo() {
|
||
|
|
let mut sig = signal::unix::signal(SignalKind::info()).expect("installed signal handler");
|
||
|
|
|
||
|
|
tokio::spawn(async {
|
||
|
|
send_signal(libc::SIGINFO);
|
||
|
|
});
|
||
|
|
|
||
|
|
// Add a timeout to ensure the test doesn't hang.
|
||
|
|
timeout(Duration::from_secs(5), sig.recv())
|
||
|
|
.await
|
||
|
|
.expect("received SIGINFO signal in time")
|
||
|
|
.expect("received SIGINFO signal");
|
||
|
|
}
|