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 is expired and the 10*2cd25e64SAlexander Hansen * callback handler gets invoked post 2 seconds 11*2cd25e64SAlexander Hansen */ TEST_F(TimerTest,timerExpiresAfter2seconds)12*2cd25e64SAlexander HansenTEST_F(TimerTest, timerExpiresAfter2seconds) 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 // Waiting 2 seconds is enough here since we have 20*2cd25e64SAlexander Hansen // already spent some usec now 21*2cd25e64SAlexander Hansen int count = 0; 22*2cd25e64SAlexander Hansen while (count < 2 && !timer.isExpired()) 23*2cd25e64SAlexander Hansen { 24*2cd25e64SAlexander Hansen // Returns -0- on timeout and positive number on dispatch 25*2cd25e64SAlexander Hansen auto sleepTime = duration_cast<microseconds>(seconds(1)); 26*2cd25e64SAlexander Hansen if (!sd_event_run(events, sleepTime.count())) 27*2cd25e64SAlexander Hansen { 28*2cd25e64SAlexander Hansen count++; 29*2cd25e64SAlexander Hansen } 30*2cd25e64SAlexander Hansen } 31*2cd25e64SAlexander Hansen EXPECT_EQ(true, timer.isExpired()); 32*2cd25e64SAlexander Hansen EXPECT_EQ(1, count); 33*2cd25e64SAlexander Hansen } 34