blob: 4c798a7ca62d99a85420b16c8c9b81662647c558 [file] [log] [blame]
#include <chrono>
#include <memory>
#include <sdbusplus/bus.hpp>
#include <sdeventplus/event.hpp>
#include <watchdog.hpp>
#include <gtest/gtest.h>
using namespace std::chrono;
using namespace std::chrono_literals;
// Test Watchdog functionality
class WdogTest : public ::testing::Test
{
public:
// Gets called as part of each TEST_F construction
WdogTest() :
event(sdeventplus::Event::get_default()),
bus(sdbusplus::bus::new_default()),
wdog(std::make_unique<phosphor::watchdog::Watchdog>(bus, TEST_PATH,
event)),
defaultInterval(milliseconds(wdog->interval())), defaultDrift(30)
{
// Initially the watchdog would be disabled
EXPECT_FALSE(wdog->enabled());
}
// sdevent Event handle
sdeventplus::Event event;
// 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);
};