diff options
author | Matt Spinler <spinler@us.ibm.com> | 2019-12-18 14:02:09 -0600 |
---|---|---|
committer | Matt Spinler <spinler@us.ibm.com> | 2020-02-14 19:15:42 +0000 |
commit | 05c2c6c4f7b8904f27ae10af39b63b53dc2c3136 (patch) | |
tree | d771c9f1819b0986a77e8b3ff44590391525cca9 /test/openpower-pels/pel_manager_test.cpp | |
parent | f682b40dcde8badb7029a063e299e1bdf1501444 (diff) | |
download | phosphor-logging-05c2c6c4f7b8904f27ae10af39b63b53dc2c3136.tar.gz phosphor-logging-05c2c6c4f7b8904f27ae10af39b63b53dc2c3136.zip |
PEL: Create error log for 'bad PEL'
Create an event log (and a PEL) for the case when the host rejects a PEL
because it is malformed. This requires a new message registry entry for
the error.
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: Ibd52921b5d6020f98b457b9ee0b3bb4f0b95e707
Diffstat (limited to 'test/openpower-pels/pel_manager_test.cpp')
-rw-r--r-- | test/openpower-pels/pel_manager_test.cpp | 50 |
1 files changed, 40 insertions, 10 deletions
diff --git a/test/openpower-pels/pel_manager_test.cpp b/test/openpower-pels/pel_manager_test.cpp index 28802f4..5305468 100644 --- a/test/openpower-pels/pel_manager_test.cpp +++ b/test/openpower-pels/pel_manager_test.cpp @@ -26,6 +26,22 @@ using namespace openpower::pels; namespace fs = std::filesystem; +class TestLogger +{ + public: + void log(const std::string& name, phosphor::logging::Entry::Level level, + const EventLogger::ADMap& additionalData) + { + errName = name; + errLevel = level; + ad = additionalData; + } + + std::string errName; + phosphor::logging::Entry::Level errLevel; + EventLogger::ADMap ad; +}; + class ManagerTest : public CleanPELFiles { public: @@ -43,6 +59,7 @@ class ManagerTest : public CleanPELFiles sdbusplus::bus::bus bus = sdbusplus::bus::new_default(); phosphor::logging::internal::Manager logManager; sd_event* sdEvent; + TestLogger logger; }; fs::path makeTempDir() @@ -67,11 +84,6 @@ std::optional<fs::path> findAnyPELInRepo() return std::nullopt; } -void eventLoggerStub(const std::string&, phosphor::logging::Entry::Level, - const EventLogger::ADMap&) -{ -} - // Test that using the RAWPEL=<file> with the Manager::create() call gets // a PEL saved in the repository. TEST_F(ManagerTest, TestCreateWithPEL) @@ -79,8 +91,10 @@ TEST_F(ManagerTest, TestCreateWithPEL) std::unique_ptr<DataInterfaceBase> dataIface = std::make_unique<DataInterface>(bus); - openpower::pels::Manager manager{logManager, std::move(dataIface), - eventLoggerStub}; + openpower::pels::Manager manager{ + logManager, std::move(dataIface), + std::bind(std::mem_fn(&TestLogger::log), &logger, std::placeholders::_1, + std::placeholders::_2, std::placeholders::_3)}; // Create a PEL, write it to a file, and pass that filename into // the create function. @@ -150,8 +164,10 @@ TEST_F(ManagerTest, TestCreateWithMessageRegistry) std::unique_ptr<DataInterfaceBase> dataIface = std::make_unique<DataInterface>(logManager.getBus()); - openpower::pels::Manager manager{logManager, std::move(dataIface), - eventLoggerStub}; + openpower::pels::Manager manager{ + logManager, std::move(dataIface), + std::bind(std::mem_fn(&TestLogger::log), &logger, std::placeholders::_1, + std::placeholders::_2, std::placeholders::_3)}; std::vector<std::string> additionalData; std::vector<std::string> associations; @@ -195,7 +211,10 @@ TEST_F(ManagerTest, TestDBusMethods) std::unique_ptr<DataInterfaceBase> dataIface = std::make_unique<DataInterface>(bus); - Manager manager{logManager, std::move(dataIface), eventLoggerStub}; + Manager manager{logManager, std::move(dataIface), + std::bind(std::mem_fn(&TestLogger::log), &logger, + std::placeholders::_1, std::placeholders::_2, + std::placeholders::_3)}; // Create a PEL, write it to a file, and pass that filename into // the create function so there's one in the repo. @@ -248,6 +267,10 @@ TEST_F(ManagerTest, TestDBusMethods) fclose(fp); + // Run the event loop to close the FD + sdeventplus::Event e{sdEvent}; + e.run(std::chrono::milliseconds(1)); + EXPECT_THROW( manager.getPEL(id + 1), sdbusplus::xyz::openbmc_project::Common::Error::InvalidArgument); @@ -261,6 +284,13 @@ TEST_F(ManagerTest, TestDBusMethods) // hostReject manager.hostReject(id, Manager::RejectionReason::BadPEL); + + // Run the event loop to log the bad PEL event + e.run(std::chrono::milliseconds(1)); + + EXPECT_EQ(logger.errName, "org.open_power.Logging.Error.SentBadPELToHost"); + EXPECT_EQ(id, std::stoi(logger.ad["BAD_ID"], nullptr, 16)); + manager.hostReject(id, Manager::RejectionReason::HostFull); EXPECT_THROW( |