xref: /openbmc/sdbusplus/test/timer/timer_callback_done.cpp (revision 2cd25e64299ecc20e2258727e836a31b7ce6fad3)
1 #include "suite.hpp"
2 
3 #include <sdbusplus/timer.hpp>
4 
5 #include <chrono>
6 
7 #include <gtest/gtest.h>
8 
9 /** @brief Makes sure that optional callback is called */
TEST_F(TimerTestCallBack,optionalFuncCallBackDone)10 TEST_F(TimerTestCallBack, optionalFuncCallBackDone)
11 {
12     using namespace std::chrono;
13 
14     auto time = duration_cast<microseconds>(seconds(2));
15     EXPECT_GE(timer->start(time), 0);
16 
17     // Waiting 2 seconds is enough here since we have
18     // already spent some usec now
19     int count = 0;
20     while (count < 2 && !timer->isExpired())
21     {
22         // Returns -0- on timeout and positive number on dispatch
23         auto sleepTime = duration_cast<microseconds>(seconds(1));
24         if (!sd_event_run(events, sleepTime.count()))
25         {
26             count++;
27         }
28     }
29     EXPECT_EQ(true, timer->isExpired());
30     EXPECT_EQ(true, callBackDone);
31     EXPECT_EQ(1, count);
32 }
33