1*2cd25e64SAlexander Hansen #include "suite.hpp" 2*2cd25e64SAlexander Hansen 3*2cd25e64SAlexander Hansen #include <sdbusplus/timer.hpp> 4*2cd25e64SAlexander Hansen 5*2cd25e64SAlexander Hansen #include <chrono> 6*2cd25e64SAlexander Hansen 7*2cd25e64SAlexander Hansen #include <gtest/gtest.h> 8*2cd25e64SAlexander Hansen 9*2cd25e64SAlexander Hansen /** @brief Makes sure that timer value is changed in between 10*2cd25e64SAlexander Hansen * and turn off and make sure that timer does not expire 11*2cd25e64SAlexander Hansen */ TEST_F(TimerTest,updateTimerAndNeverExpire)12*2cd25e64SAlexander HansenTEST_F(TimerTest, updateTimerAndNeverExpire) 13*2cd25e64SAlexander Hansen { 14*2cd25e64SAlexander Hansen using namespace std::chrono; 15*2cd25e64SAlexander Hansen 16*2cd25e64SAlexander Hansen auto time = duration_cast<microseconds>(seconds(2)); 17*2cd25e64SAlexander Hansen EXPECT_GE(timer.start(time), 0); 18*2cd25e64SAlexander Hansen 19*2cd25e64SAlexander Hansen // Now sleep for a second and then set the new timeout value 20*2cd25e64SAlexander Hansen sleep(1); 21*2cd25e64SAlexander Hansen 22*2cd25e64SAlexander Hansen // New timeout is 2 seconds from THIS point. 23*2cd25e64SAlexander Hansen time = duration_cast<microseconds>(seconds(2)); 24*2cd25e64SAlexander Hansen EXPECT_GE(timer.start(time), 0); 25*2cd25e64SAlexander Hansen 26*2cd25e64SAlexander Hansen // Now turn off the timer post a 1 second sleep 27*2cd25e64SAlexander Hansen sleep(1); 28*2cd25e64SAlexander Hansen EXPECT_GE(timer.stop(), 0); 29*2cd25e64SAlexander Hansen 30*2cd25e64SAlexander Hansen // Wait 2 seconds and see that timer is expired 31*2cd25e64SAlexander Hansen int count = 0; 32*2cd25e64SAlexander Hansen while (count < 2) 33*2cd25e64SAlexander Hansen { 34*2cd25e64SAlexander Hansen // Returns -0- on timeout 35*2cd25e64SAlexander Hansen auto sleepTime = duration_cast<microseconds>(seconds(1)); 36*2cd25e64SAlexander Hansen if (!sd_event_run(events, sleepTime.count())) 37*2cd25e64SAlexander Hansen { 38*2cd25e64SAlexander Hansen count++; 39*2cd25e64SAlexander Hansen } 40*2cd25e64SAlexander Hansen } 41*2cd25e64SAlexander Hansen EXPECT_EQ(false, timer.isExpired()); 42*2cd25e64SAlexander Hansen 43*2cd25e64SAlexander Hansen // 2 because of one more count that happens prior to exiting 44*2cd25e64SAlexander Hansen EXPECT_EQ(2, count); 45*2cd25e64SAlexander Hansen } 46