blob: b6e9fc258521460b24f06574cb7313d2770678e9 [file] [log] [blame]
Alexander Hansen2cd25e62025-10-23 12:35:39 +02001#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 timer value is changed in between
10 * and turn off and make sure that timer does not expire
11 */
12TEST_F(TimerTest, updateTimerAndNeverExpire)
13{
14 using namespace std::chrono;
15
16 auto time = duration_cast<microseconds>(seconds(2));
17 EXPECT_GE(timer.start(time), 0);
18
19 // Now sleep for a second and then set the new timeout value
20 sleep(1);
21
22 // New timeout is 2 seconds from THIS point.
23 time = duration_cast<microseconds>(seconds(2));
24 EXPECT_GE(timer.start(time), 0);
25
26 // Now turn off the timer post a 1 second sleep
27 sleep(1);
28 EXPECT_GE(timer.stop(), 0);
29
30 // Wait 2 seconds and see that timer is expired
31 int count = 0;
32 while (count < 2)
33 {
34 // Returns -0- on timeout
35 auto sleepTime = duration_cast<microseconds>(seconds(1));
36 if (!sd_event_run(events, sleepTime.count()))
37 {
38 count++;
39 }
40 }
41 EXPECT_EQ(false, timer.isExpired());
42
43 // 2 because of one more count that happens prior to exiting
44 EXPECT_EQ(2, count);
45}