summaryrefslogtreecommitdiffstats
path: root/test/openpower-pels
diff options
context:
space:
mode:
Diffstat (limited to 'test/openpower-pels')
-rw-r--r--test/openpower-pels/pel_manager_test.cpp50
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(
OpenPOWER on IntegriCloud