Sha256: c9bd0d018b59de227af966f3288e154b53c30d68afee0dd8280fdf8a16cd4335

Contents?: true

Size: 1.46 KB

Versions: 5

Compression:

Stored size: 1.46 KB

Contents

use nix::sys::time::{TimeSpec, TimeValLike};
use nix::sys::timerfd::{ClockId, Expiration, TimerFd, TimerFlags, TimerSetTimeFlags};
use std::time::Instant;

#[test]
pub fn test_timerfd_oneshot() {
    let timer = TimerFd::new(ClockId::CLOCK_MONOTONIC, TimerFlags::empty()).unwrap();

    let before = Instant::now();

    timer
        .set(
            Expiration::OneShot(TimeSpec::seconds(1)),
            TimerSetTimeFlags::empty(),
        )
        .unwrap();

    timer.wait().unwrap();

    let millis = before.elapsed().as_millis();
    assert!(millis > 900);
}

#[test]
pub fn test_timerfd_interval() {
    let timer = TimerFd::new(ClockId::CLOCK_MONOTONIC, TimerFlags::empty()).unwrap();

    let before = Instant::now();
    timer
        .set(
            Expiration::IntervalDelayed(TimeSpec::seconds(1), TimeSpec::seconds(2)),
            TimerSetTimeFlags::empty(),
        )
        .unwrap();

    timer.wait().unwrap();

    let start_delay = before.elapsed().as_millis();
    assert!(start_delay > 900);

    timer.wait().unwrap();

    let interval_delay = before.elapsed().as_millis();
    assert!(interval_delay > 2900);
}

#[test]
pub fn test_timerfd_unset() {
    let timer = TimerFd::new(ClockId::CLOCK_MONOTONIC, TimerFlags::empty()).unwrap();

    timer
        .set(
            Expiration::OneShot(TimeSpec::seconds(1)),
            TimerSetTimeFlags::empty(),
        )
        .unwrap();

    timer.unset().unwrap();

    assert!(timer.get().unwrap().is_none());
}

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
wasmtime-6.0.1 ./ext/cargo-vendor/nix-0.23.2/test/sys/test_timerfd.rs
wasmtime-6.0.0 ./ext/cargo-vendor/nix-0.23.2/test/sys/test_timerfd.rs
wasmtime-5.0.0 ./ext/cargo-vendor/nix-0.23.2/test/sys/test_timerfd.rs
wasmtime-0.4.1 ./ext/cargo-vendor/nix-0.23.2/test/sys/test_timerfd.rs
wasmtime-0.4.0 ./ext/cargo-vendor/nix-0.23.2/test/sys/test_timerfd.rs