blob: 87c64e9e83046e7e6f905ce0add32b6a696e565b [file] [log] [blame]
#include <timer_test.hpp>
#include <chrono>
#include <memory>
#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);
};