summaryrefslogtreecommitdiffstats
path: root/test/watchdog_test.hpp
blob: 50fa8f18f345adb5b14efafbd2cbde5ef84a9459 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <chrono>
#include <memory>
#include <timer_test.hpp>
#include <watchdog.hpp>

using namespace std::chrono;
using namespace std::chrono_literals;

// Test Watchdog functionality
class WdogTest : public TimerTest
{
  public:
    // Gets called as part of each TEST_F construction
    WdogTest() :
        bus(sdbusplus::bus::new_default()),
        wdog(std::make_unique<phosphor::watchdog::Watchdog>(bus, TEST_PATH,
                                                            eventP)),
        defaultInterval(milliseconds(wdog->interval())), defaultDrift(30)
    {
        // Check for successful creation of
        // event handler and bus handler
        EXPECT_GE(rc, 0);

        // Initially the watchdog would be disabled
        EXPECT_FALSE(wdog->enabled());
    }

    // sdbusplus handle
    sdbusplus::bus::bus bus;

    // Watchdog object
    std::unique_ptr<phosphor::watchdog::Watchdog> wdog;

    // This is the default interval as given in Interface definition
    milliseconds defaultInterval;

    // Acceptable drift when we compare the interval to timeRemaining.
    // This is needed since it depends on when do we get scheduled and it
    // has happened that remaining time was off by few msecs.
    milliseconds defaultDrift;

  protected:
    // Dummy name for object path
    // This is just to satisfy the constructor. Does not have
    // a need to check if the objects paths have been created.
    static constexpr auto TEST_PATH = "/test/path";

    // Returns how long it took for the current watchdog timer to be
    // disabled or have its timeRemaining reset.
    seconds waitForWatchdog(seconds timeLimit);
};
OpenPOWER on IntegriCloud