diff options
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( |