summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/openpower-pels/Makefile.include12
-rw-r--r--test/openpower-pels/pel_rules_test.cpp72
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);
+ }
+}
OpenPOWER on IntegriCloud