xref: /openbmc/telemetry/tests/src/test_detached_timer.cpp (revision 583ba441654657bb4ba9d051b747144a7258c159)
1 #include "dbus_environment.hpp"
2 #include "helpers.hpp"
3 #include "utils/detached_timer.hpp"
4 
5 #include <gmock/gmock.h>
6 
7 namespace utils
8 {
9 
10 using namespace testing;
11 using namespace std::chrono_literals;
12 
13 class TestDetachedTimer : public Test
14 {
15   public:
16     uint32_t value = 0;
17 };
18 
TEST_F(TestDetachedTimer,executesLambdaAfterTimeout)19 TEST_F(TestDetachedTimer, executesLambdaAfterTimeout)
20 {
21     auto setPromise = DbusEnvironment::setPromise("timer");
22 
23     makeDetachedTimer(DbusEnvironment::getIoc(), 100ms, [this, &setPromise] {
24         ++value;
25         setPromise();
26     });
27 
28     auto elapsed = DbusEnvironment::measureTime([] {
29         DbusEnvironment::waitForFuture("timer");
30     });
31 
32     EXPECT_THAT(elapsed, AllOf(Ge(100ms), Lt(200ms)));
33     EXPECT_THAT(value, Eq(1u));
34 }
35 
36 } // namespace utils
37