xref: /openbmc/sdbusplus/test/timer/suite.hpp (revision 2cd25e64299ecc20e2258727e836a31b7ce6fad3)
1*2cd25e64SAlexander Hansen #pragma once
2*2cd25e64SAlexander Hansen 
3*2cd25e64SAlexander Hansen #include <sdbusplus/timer.hpp>
4*2cd25e64SAlexander Hansen 
5*2cd25e64SAlexander Hansen #include <gtest/gtest.h>
6*2cd25e64SAlexander Hansen 
7*2cd25e64SAlexander Hansen using sdbusplus::Timer;
8*2cd25e64SAlexander Hansen 
9*2cd25e64SAlexander Hansen class TimerTest : public ::testing::Test
10*2cd25e64SAlexander Hansen {
11*2cd25e64SAlexander Hansen   public:
12*2cd25e64SAlexander Hansen     // systemd event handler
13*2cd25e64SAlexander Hansen     sd_event* events = nullptr;
14*2cd25e64SAlexander Hansen 
15*2cd25e64SAlexander Hansen     // Need this so that events can be initialized.
16*2cd25e64SAlexander Hansen     int rc;
17*2cd25e64SAlexander Hansen 
18*2cd25e64SAlexander Hansen     // Source of event
19*2cd25e64SAlexander Hansen     sd_event_source* eventSource = nullptr;
20*2cd25e64SAlexander Hansen 
21*2cd25e64SAlexander Hansen     // Add a Timer Object
22*2cd25e64SAlexander Hansen     Timer timer;
23*2cd25e64SAlexander Hansen 
24*2cd25e64SAlexander Hansen     // Gets called as part of each TEST_F construction
TimerTest()25*2cd25e64SAlexander Hansen     TimerTest() : rc(sd_event_default(&events)), timer(events)
26*2cd25e64SAlexander Hansen     {
27*2cd25e64SAlexander Hansen         // Check for successful creation of
28*2cd25e64SAlexander Hansen         // event handler and timer object.
29*2cd25e64SAlexander Hansen         EXPECT_GE(rc, 0);
30*2cd25e64SAlexander Hansen     }
31*2cd25e64SAlexander Hansen 
32*2cd25e64SAlexander Hansen     // Gets called as part of each TEST_F destruction
~TimerTest()33*2cd25e64SAlexander Hansen     ~TimerTest() override
34*2cd25e64SAlexander Hansen     {
35*2cd25e64SAlexander Hansen         events = sd_event_unref(events);
36*2cd25e64SAlexander Hansen     }
37*2cd25e64SAlexander Hansen };
38*2cd25e64SAlexander Hansen 
39*2cd25e64SAlexander Hansen class TimerTestCallBack : public ::testing::Test
40*2cd25e64SAlexander Hansen {
41*2cd25e64SAlexander Hansen   public:
42*2cd25e64SAlexander Hansen     // systemd event handler
43*2cd25e64SAlexander Hansen     sd_event* events;
44*2cd25e64SAlexander Hansen 
45*2cd25e64SAlexander Hansen     // Need this so that events can be initialized.
46*2cd25e64SAlexander Hansen     int rc;
47*2cd25e64SAlexander Hansen 
48*2cd25e64SAlexander Hansen     // Source of event
49*2cd25e64SAlexander Hansen     sd_event_source* eventSource = nullptr;
50*2cd25e64SAlexander Hansen 
51*2cd25e64SAlexander Hansen     // Add a Timer Object
52*2cd25e64SAlexander Hansen     std::unique_ptr<Timer> timer = nullptr;
53*2cd25e64SAlexander Hansen 
54*2cd25e64SAlexander Hansen     // Indicates optional call back fun was called
55*2cd25e64SAlexander Hansen     bool callBackDone = false;
56*2cd25e64SAlexander Hansen 
callBack()57*2cd25e64SAlexander Hansen     void callBack()
58*2cd25e64SAlexander Hansen     {
59*2cd25e64SAlexander Hansen         callBackDone = true;
60*2cd25e64SAlexander Hansen     }
61*2cd25e64SAlexander Hansen 
62*2cd25e64SAlexander Hansen     // Gets called as part of each TEST_F construction
TimerTestCallBack()63*2cd25e64SAlexander Hansen     TimerTestCallBack() : rc(sd_event_default(&events))
64*2cd25e64SAlexander Hansen 
65*2cd25e64SAlexander Hansen     {
66*2cd25e64SAlexander Hansen         // Check for successful creation of
67*2cd25e64SAlexander Hansen         // event handler and timer object.
68*2cd25e64SAlexander Hansen         EXPECT_GE(rc, 0);
69*2cd25e64SAlexander Hansen 
70*2cd25e64SAlexander Hansen         std::function<void()> func(
71*2cd25e64SAlexander Hansen             std::bind(&TimerTestCallBack::callBack, this));
72*2cd25e64SAlexander Hansen         timer = std::make_unique<Timer>(events, func);
73*2cd25e64SAlexander Hansen     }
74*2cd25e64SAlexander Hansen 
75*2cd25e64SAlexander Hansen     // Gets called as part of each TEST_F destruction
~TimerTestCallBack()76*2cd25e64SAlexander Hansen     ~TimerTestCallBack() override
77*2cd25e64SAlexander Hansen     {
78*2cd25e64SAlexander Hansen         events = sd_event_unref(events);
79*2cd25e64SAlexander Hansen     }
80*2cd25e64SAlexander Hansen };
81