diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/openpower-pels/Makefile.include | 12 | ||||
-rw-r--r-- | test/openpower-pels/pel_rules_test.cpp | 72 |
2 files changed, 83 insertions, 1 deletions
diff --git a/test/openpower-pels/Makefile.include b/test/openpower-pels/Makefile.include index 312a7e0..7f3a589 100644 --- a/test/openpower-pels/Makefile.include +++ b/test/openpower-pels/Makefile.include @@ -11,9 +11,10 @@ check_PROGRAMS += \ mru_test \ mtms_test \ pce_identity_test \ + pel_manager_test \ + pel_rules_test \ pel_test \ pel_values_test \ - pel_manager_test \ private_header_test \ real_pel_test \ registry_test \ @@ -41,6 +42,7 @@ pel_objects = \ $(top_builddir)/extensions/openpower-pels/mru.o \ $(top_builddir)/extensions/openpower-pels/pce_identity.o \ $(top_builddir)/extensions/openpower-pels/pel.o \ + $(top_builddir)/extensions/openpower-pels/pel_rules.o \ $(top_builddir)/extensions/openpower-pels/pel_values.o \ $(top_builddir)/extensions/openpower-pels/private_header.o \ $(top_builddir)/extensions/openpower-pels/registry.o \ @@ -284,3 +286,11 @@ src_test_LDADD = \ $(top_builddir)/extensions/openpower-pels/pce_identity.o \ $(top_builddir)/extensions/openpower-pels/src.o src_test_LDFLAGS = $(test_ldflags) + +pel_rules_test_SOURCES = %reldir%/pel_rules_test.cpp +pel_rules_test_CPPFLAGS = $(test_cppflags) +pel_rules_test_CXXFLAGS = $(test_cxxflags) +pel_rules_test_LDADD = \ + $(test_ldflags) \ + $(top_builddir)/extensions/openpower-pels/pel_rules.o +pel_rules_test_LDFLAGS = $(test_ldflags) diff --git a/test/openpower-pels/pel_rules_test.cpp b/test/openpower-pels/pel_rules_test.cpp new file mode 100644 index 0000000..38e5b58 --- /dev/null +++ b/test/openpower-pels/pel_rules_test.cpp @@ -0,0 +1,72 @@ +#include "extensions/openpower-pels/pel_rules.hpp" + +#include <gtest/gtest.h> + +using namespace openpower::pels; + +struct CheckParams +{ + // pel_rules::check() inputs + uint16_t actionFlags; + uint8_t eventType; + uint8_t severity; + + // pel_rules::check() expected outputs + uint16_t expectedActionFlags; + uint8_t expectedEventType; +}; + +const uint8_t sevInfo = 0x00; +const uint8_t sevRecovered = 0x10; +const uint8_t sevPredictive = 0x20; +const uint8_t sevUnrecov = 0x40; +const uint8_t sevCrit = 0x50; +const uint8_t sevDiagnostic = 0x60; +const uint8_t sevSymptom = 0x70; + +const uint8_t typeNA = 0x00; +const uint8_t typeMisc = 0x01; +const uint8_t typeTracing = 0x02; +const uint8_t typeDumpNotif = 0x08; + +TEST(PELRulesTest, TestCheckRules) +{ + // Impossible to cover all combinations, but + // do some interesting ones. + std::vector<CheckParams> testParams{ + // Informational errors w/ empty action flags + // and different event types. + {0, typeNA, sevInfo, 0x6000, typeMisc}, + {0, typeMisc, sevInfo, 0x6000, typeMisc}, + {0, typeTracing, sevInfo, 0x6000, typeTracing}, + {0, typeDumpNotif, sevInfo, 0x2000, typeDumpNotif}, + + // Informational errors with wrong action flags + {0x8900, typeNA, sevInfo, 0x6000, typeMisc}, + + // Informational errors with extra valid action flags + {0x00C0, typeMisc, sevInfo, 0x60C0, typeMisc}, + + // Informational - don't report + {0x1000, typeMisc, sevInfo, 0x5000, typeMisc}, + + // Recovered will report as hidden + {0, typeNA, sevRecovered, 0x6000, typeNA}, + + // The 5 error severities will have: + // service action, report, call home + {0, typeNA, sevPredictive, 0xA800, typeNA}, + {0, typeNA, sevUnrecov, 0xA800, typeNA}, + {0, typeNA, sevCrit, 0xA800, typeNA}, + {0, typeNA, sevDiagnostic, 0xA800, typeNA}, + {0, typeNA, sevSymptom, 0xA800, typeNA}}; + + for (const auto& entry : testParams) + { + auto [actionFlags, type] = pel_rules::check( + entry.actionFlags, entry.eventType, entry.severity); + + EXPECT_EQ(actionFlags, entry.expectedActionFlags); + EXPECT_EQ(type, entry.expectedEventType); + } +} |