Use the common timer class

The common timer class from sdbusplus offers all the timer goodness that
we currently use. The unit test is also no longer needed (and has been
added to sdbusplus's version of the timer.hpp implementation).

Change-Id: I278817489433a29ca739f70fdacd8bb897797d66
Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
diff --git a/softoff/Makefile.am b/softoff/Makefile.am
index cf50cdb..ed0c226 100644
--- a/softoff/Makefile.am
+++ b/softoff/Makefile.am
@@ -6,7 +6,6 @@
 #  https://debbugs.gnu.org/cgi/bugreport.cgi?bug=13928
 phosphor_softpoweroff_SOURCES = \
                     softoff.cpp \
-                    ../timer.cpp   \
                     mainapp.cpp \
                     xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.cpp \
                     ../utils.cpp
@@ -35,4 +34,3 @@
 	@mkdir -p `dirname $@`
 	$(SDBUSPLUSPLUS) -r $(top_srcdir) interface server-header xyz.openbmc_project.Ipmi.Internal.SoftPowerOff > $@
 
-SUBDIRS = test
diff --git a/softoff/mainapp.cpp b/softoff/mainapp.cpp
index 3b153a8..f6a52ac 100644
--- a/softoff/mainapp.cpp
+++ b/softoff/mainapp.cpp
@@ -16,12 +16,12 @@
 #include "config.h"
 
 #include "softoff.hpp"
-#include "timer.hpp"
 
 #include <systemd/sd-event.h>
 
 #include <phosphor-logging/elog-errors.hpp>
 #include <phosphor-logging/elog.hpp>
+#include <sdbusplus/timer.hpp>
 #include <xyz/openbmc_project/State/Host/error.hpp>
 
 // Return -1 on any errors to ensure we follow the calling targets OnFailure=
diff --git a/softoff/softoff.cpp b/softoff/softoff.cpp
index 921536f..803efc0 100644
--- a/softoff/softoff.cpp
+++ b/softoff/softoff.cpp
@@ -103,7 +103,7 @@
 // Starts a timer
 int SoftPowerOff::startTimer(const std::chrono::microseconds& usec)
 {
-    return timer.startTimer(usec);
+    return timer.start(usec);
 }
 
 // Host Response handler
@@ -115,7 +115,7 @@
     {
         // Disable the timer since Host has quiesced and we are
         // done with soft power off part
-        auto r = timer.setTimer(SD_EVENT_OFF);
+        auto r = timer.stop();
         if (r < 0)
         {
             log<level::ERR>("Failure to STOP the timer",
diff --git a/softoff/softoff.hpp b/softoff/softoff.hpp
index b7555e3..1c9341b 100644
--- a/softoff/softoff.hpp
+++ b/softoff/softoff.hpp
@@ -2,11 +2,10 @@
 
 #include "config.h"
 
-#include "timer.hpp"
-
 #include <functional>
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/server/object.hpp>
+#include <sdbusplus/timer.hpp>
 #include <xyz/openbmc_project/Control/Host/server.hpp>
 #include <xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.hpp>
 namespace phosphor
diff --git a/softoff/test/Makefile.am b/softoff/test/Makefile.am
deleted file mode 100644
index afdb620..0000000
--- a/softoff/test/Makefile.am
+++ /dev/null
@@ -1,12 +0,0 @@
-AM_CPPFLAGS = -I$(top_srcdir)/softoff
-
-# Run all 'check' test programs
-TESTS = $(check_PROGRAMS)
-
-# # Build/add utest to test suite
-check_PROGRAMS = utest
-utest_CPPFLAGS = -Igtest $(GTEST_CPPFLAGS) $(AM_CPPFLAGS)
-utest_CXXFLAGS = $(PTHREAD_CFLAGS)
-utest_LDFLAGS = -lgtest_main -lgtest $(PTHREAD_LIBS) $(OESDK_TESTCASE_FLAGS) $(SYSTEMD_LIBS) ${SDBUSPLUS_LIBS}
-utest_SOURCES = utest.cpp
-utest_LDADD = $(top_builddir)/timer.o
diff --git a/softoff/test/utest.cpp b/softoff/test/utest.cpp
deleted file mode 100644
index 0dd99ae..0000000
--- a/softoff/test/utest.cpp
+++ /dev/null
@@ -1,263 +0,0 @@
-#include "timer.hpp"
-
-#include <chrono>
-#include <iostream>
-
-#include <gtest/gtest.h>
-
-using namespace phosphor::ipmi;
-
-class TimerTest : public ::testing::Test
-{
-  public:
-    // systemd event handler
-    sd_event* events;
-
-    // Need this so that events can be initialized.
-    int rc;
-
-    // Source of event
-    sd_event_source* eventSource = nullptr;
-
-    // Add a Timer Object
-    Timer timer;
-
-    // Gets called as part of each TEST_F construction
-    TimerTest() : rc(sd_event_default(&events)), timer(events)
-    {
-        // Check for successful creation of
-        // event handler and timer object.
-        EXPECT_GE(rc, 0);
-    }
-
-    // Gets called as part of each TEST_F destruction
-    ~TimerTest()
-    {
-        events = sd_event_unref(events);
-    }
-};
-
-class TimerTestCallBack : public ::testing::Test
-{
-  public:
-    // systemd event handler
-    sd_event* events;
-
-    // Need this so that events can be initialized.
-    int rc;
-
-    // Source of event
-    sd_event_source* eventSource = nullptr;
-
-    // Add a Timer Object
-    std::unique_ptr<Timer> timer = nullptr;
-
-    // Indicates optional call back fun was called
-    bool callBackDone = false;
-
-    void callBack()
-    {
-        callBackDone = true;
-    }
-
-    // Gets called as part of each TEST_F construction
-    TimerTestCallBack() : rc(sd_event_default(&events))
-
-    {
-        // Check for successful creation of
-        // event handler and timer object.
-        EXPECT_GE(rc, 0);
-
-        std::function<void()> func(
-            std::bind(&TimerTestCallBack::callBack, this));
-        timer = std::make_unique<Timer>(events, func);
-    }
-
-    // Gets called as part of each TEST_F destruction
-    ~TimerTestCallBack()
-    {
-        events = sd_event_unref(events);
-    }
-};
-
-/** @brief Makes sure that timer is expired and the
- *  callback handler gets invoked post 2 seconds
- */
-TEST_F(TimerTest, timerExpiresAfter2seconds)
-{
-    using namespace std::chrono;
-
-    auto time = duration_cast<microseconds>(seconds(2));
-    EXPECT_GE(timer.startTimer(time), 0);
-
-    // Waiting 2 seconds is enough here since we have
-    // already spent some usec now
-    int count = 0;
-    while (count < 2 && !timer.isExpired())
-    {
-        // Returns -0- on timeout and positive number on dispatch
-        auto sleepTime = duration_cast<microseconds>(seconds(1));
-        if (!sd_event_run(events, sleepTime.count()))
-        {
-            count++;
-        }
-    }
-    EXPECT_EQ(true, timer.isExpired());
-    EXPECT_EQ(1, count);
-}
-
-/** @brief Makes sure that timer is not expired
- */
-TEST_F(TimerTest, timerNotExpiredAfter2Seconds)
-{
-    using namespace std::chrono;
-
-    auto time = duration_cast<microseconds>(seconds(2));
-    EXPECT_GE(timer.startTimer(time), 0);
-
-    // Now turn off the timer post a 1 second sleep
-    sleep(1);
-    EXPECT_GE(timer.setTimer(SD_EVENT_OFF), 0);
-
-    // Wait 2 seconds and see that timer is not expired
-    int count = 0;
-    while (count < 2)
-    {
-        // Returns -0- on timeout
-        auto sleepTime = duration_cast<microseconds>(seconds(1));
-        if (!sd_event_run(events, sleepTime.count()))
-        {
-            count++;
-        }
-    }
-    EXPECT_EQ(false, timer.isExpired());
-
-    // 2 because of one more count that happens prior to exiting
-    EXPECT_EQ(2, count);
-}
-
-/** @brief Makes sure that timer value is changed in between
- *  and that the new timer expires
- */
-TEST_F(TimerTest, updateTimerAndExpectExpire)
-{
-    using namespace std::chrono;
-
-    auto time = duration_cast<microseconds>(seconds(2));
-    EXPECT_GE(timer.startTimer(time), 0);
-
-    // Now sleep for a second and then set the new timeout value
-    sleep(1);
-
-    // New timeout is 3 seconds from THIS point.
-    time = duration_cast<microseconds>(seconds(3));
-    EXPECT_GE(timer.startTimer(time), 0);
-
-    // Wait 3 seconds and see that timer is expired
-    int count = 0;
-    while (count < 3 && !timer.isExpired())
-    {
-        // Returns -0- on timeout
-        auto sleepTime = duration_cast<microseconds>(seconds(1));
-        if (!sd_event_run(events, sleepTime.count()))
-        {
-            count++;
-        }
-    }
-    EXPECT_EQ(true, timer.isExpired());
-    EXPECT_EQ(2, count);
-}
-
-/** @brief Makes sure that timer value is changed in between
- *  and turn off and make sure that timer does not expire
- */
-TEST_F(TimerTest, updateTimerAndNeverExpire)
-{
-    using namespace std::chrono;
-
-    auto time = duration_cast<microseconds>(seconds(2));
-    EXPECT_GE(timer.startTimer(time), 0);
-
-    // Now sleep for a second and then set the new timeout value
-    sleep(1);
-
-    // New timeout is 2 seconds from THIS point.
-    time = duration_cast<microseconds>(seconds(2));
-    EXPECT_GE(timer.startTimer(time), 0);
-
-    // Now turn off the timer post a 1 second sleep
-    sleep(1);
-    EXPECT_GE(timer.setTimer(SD_EVENT_OFF), 0);
-
-    // Wait 2 seconds and see that timer is expired
-    int count = 0;
-    while (count < 2)
-    {
-        // Returns -0- on timeout
-        auto sleepTime = duration_cast<microseconds>(seconds(1));
-        if (!sd_event_run(events, sleepTime.count()))
-        {
-            count++;
-        }
-    }
-    EXPECT_EQ(false, timer.isExpired());
-
-    // 2 because of one more count that happens prior to exiting
-    EXPECT_EQ(2, count);
-}
-
-/** @brief Makes sure that optional callback is called */
-TEST_F(TimerTestCallBack, optionalFuncCallBackDone)
-{
-    using namespace std::chrono;
-
-    auto time = duration_cast<microseconds>(seconds(2));
-    EXPECT_GE(timer->startTimer(time), 0);
-
-    // Waiting 2 seconds is enough here since we have
-    // already spent some usec now
-    int count = 0;
-    while (count < 2 && !timer->isExpired())
-    {
-        // Returns -0- on timeout and positive number on dispatch
-        auto sleepTime = duration_cast<microseconds>(seconds(1));
-        if (!sd_event_run(events, sleepTime.count()))
-        {
-            count++;
-        }
-    }
-    EXPECT_EQ(true, timer->isExpired());
-    EXPECT_EQ(true, callBackDone);
-    EXPECT_EQ(1, count);
-}
-
-/** @brief Makes sure that timer is not expired
- */
-TEST_F(TimerTestCallBack, timerNotExpiredAfter2SecondsNoOptionalCallBack)
-{
-    using namespace std::chrono;
-
-    auto time = duration_cast<microseconds>(seconds(2));
-    EXPECT_GE(timer->startTimer(time), 0);
-
-    // Now turn off the timer post a 1 second sleep
-    sleep(1);
-    EXPECT_GE(timer->setTimer(SD_EVENT_OFF), 0);
-
-    // Wait 2 seconds and see that timer is not expired
-    int count = 0;
-    while (count < 2)
-    {
-        // Returns -0- on timeout
-        auto sleepTime = duration_cast<microseconds>(seconds(1));
-        if (!sd_event_run(events, sleepTime.count()))
-        {
-            count++;
-        }
-    }
-    EXPECT_EQ(false, timer->isExpired());
-    EXPECT_EQ(false, callBackDone);
-
-    // 2 because of one more count that happens prior to exiting
-    EXPECT_EQ(2, count);
-}