From 1181af741589db873676f177ed85d6bc04884aa1 Mon Sep 17 00:00:00 2001 From: Vernon Mauery Date: Mon, 8 Oct 2018 12:05:00 -0700 Subject: 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 --- softoff/Makefile.am | 2 - softoff/mainapp.cpp | 2 +- softoff/softoff.cpp | 4 +- softoff/softoff.hpp | 3 +- softoff/test/Makefile.am | 12 --- softoff/test/utest.cpp | 263 ----------------------------------------------- 6 files changed, 4 insertions(+), 282 deletions(-) delete mode 100644 softoff/test/Makefile.am delete mode 100644 softoff/test/utest.cpp (limited to 'softoff') 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 @@ sbin_PROGRAMS = phosphor-softpoweroff # 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 @@ xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.hpp: ${top_srcdir}/xyz/ope @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 #include #include +#include #include // 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 @@ void SoftPowerOff::hostControlEvent(sdbusplus::message::message& msg) // 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 @@ auto SoftPowerOff::responseReceived(HostResponse response) -> HostResponse { // 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("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 #include #include +#include #include #include 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 -#include - -#include - -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 = 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 func( - std::bind(&TimerTestCallBack::callBack, this)); - timer = std::make_unique(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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); -} -- cgit v1.2.1