xref: /openbmc/sdbusplus/test/async/timer.cpp (revision 435eb1bd6ba1ec0943f599f18c67d7206981002b)
1*435eb1bdSPatrick Williams #include <sdbusplus/async.hpp>
2*435eb1bdSPatrick Williams 
3*435eb1bdSPatrick Williams #include <chrono>
4*435eb1bdSPatrick Williams 
5*435eb1bdSPatrick Williams #include <gtest/gtest.h>
6*435eb1bdSPatrick Williams 
7*435eb1bdSPatrick Williams using namespace std::literals;
8*435eb1bdSPatrick Williams 
9*435eb1bdSPatrick Williams TEST(Timer, DelaySome)
10*435eb1bdSPatrick Williams {
11*435eb1bdSPatrick Williams     static constexpr auto timeout = 500ms;
12*435eb1bdSPatrick Williams 
13*435eb1bdSPatrick Williams     sdbusplus::async::context ctx;
14*435eb1bdSPatrick Williams 
15*435eb1bdSPatrick Williams     auto start = std::chrono::steady_clock::now();
16*435eb1bdSPatrick Williams 
17*435eb1bdSPatrick Williams     ctx.run(sdbusplus::async::sleep_for(ctx, timeout) |
18*435eb1bdSPatrick Williams             std::execution::then([&ctx]() { ctx.request_stop(); }));
19*435eb1bdSPatrick Williams 
20*435eb1bdSPatrick Williams     auto stop = std::chrono::steady_clock::now();
21*435eb1bdSPatrick Williams 
22*435eb1bdSPatrick Williams     EXPECT_GT(stop - start, timeout);
23*435eb1bdSPatrick Williams     EXPECT_LT(stop - start, timeout * 2);
24*435eb1bdSPatrick Williams }
25