// SPDX-License-Identifier: LGPL-3.0-or-later // Copyright © 2020-2021 Florian Fischer #include <liburing.h> #include <cassert> // for assert #include <cerrno> // for ETIME #include <chrono> // for microseconds, duration_cast, operator- #include <compare> // for operator>=, strong_ordering #include <cstdint> // for int32_t #include <cstdlib> // for exit, EXIT_SUCCESS #include "io/Future.hpp" // for AlarmFuture using emper::io::AlarmFuture; void emperTest() { struct __kernel_timespec ts = {.tv_sec = 1, .tv_nsec = 0}; AlarmFuture alarm(ts); auto start = std::chrono::high_resolution_clock::now(); int32_t res = alarm.submitAndWait(); auto end = std::chrono::high_resolution_clock::now(); // timeouts return -ETIME if they trigger assert(res == -ETIME); assert(std::chrono::duration_cast<std::chrono::microseconds>(end - start) >= std::chrono::seconds(1)); exit(EXIT_SUCCESS); }