1 #include "extensions/openpower-pels/pel_rules.hpp" 2 3 #include <gtest/gtest.h> 4 5 using namespace openpower::pels; 6 7 struct CheckParams 8 { 9 // pel_rules::check() inputs 10 uint16_t actionFlags; 11 uint8_t eventType; 12 uint8_t severity; 13 14 // pel_rules::check() expected outputs 15 uint16_t expectedActionFlags; 16 uint8_t expectedEventType; 17 }; 18 19 const uint8_t sevInfo = 0x00; 20 const uint8_t sevRecovered = 0x10; 21 const uint8_t sevPredictive = 0x20; 22 const uint8_t sevUnrecov = 0x40; 23 const uint8_t sevCrit = 0x50; 24 const uint8_t sevDiagnostic = 0x60; 25 const uint8_t sevSymptom = 0x70; 26 27 const uint8_t typeNA = 0x00; 28 const uint8_t typeMisc = 0x01; 29 const uint8_t typeTracing = 0x02; 30 const uint8_t typeDumpNotif = 0x08; 31 32 TEST(PELRulesTest, TestCheckRules) 33 { 34 // Impossible to cover all combinations, but 35 // do some interesting ones. 36 std::vector<CheckParams> testParams{ 37 // Informational errors w/ empty action flags 38 // and different event types. 39 {0, typeNA, sevInfo, 0x6000, typeMisc}, 40 {0, typeMisc, sevInfo, 0x6000, typeMisc}, 41 {0, typeTracing, sevInfo, 0x6000, typeTracing}, 42 {0, typeDumpNotif, sevInfo, 0x2000, typeDumpNotif}, 43 44 // Informational errors with wrong action flags 45 {0x8900, typeNA, sevInfo, 0x6000, typeMisc}, 46 47 // Informational errors with extra valid action flags 48 {0x00C0, typeMisc, sevInfo, 0x60C0, typeMisc}, 49 50 // Informational - don't report 51 {0x1000, typeMisc, sevInfo, 0x5000, typeMisc}, 52 53 // Recovered will report as hidden 54 {0, typeNA, sevRecovered, 0x6000, typeNA}, 55 56 // The 5 error severities will have: 57 // service action, report, call home 58 {0, typeNA, sevPredictive, 0xA800, typeNA}, 59 {0, typeNA, sevUnrecov, 0xA800, typeNA}, 60 {0, typeNA, sevCrit, 0xA800, typeNA}, 61 {0, typeNA, sevDiagnostic, 0xA800, typeNA}, 62 {0, typeNA, sevSymptom, 0xA800, typeNA}}; 63 64 for (const auto& entry : testParams) 65 { 66 auto [actionFlags, type] = pel_rules::check( 67 entry.actionFlags, entry.eventType, entry.severity); 68 69 EXPECT_EQ(actionFlags, entry.expectedActionFlags); 70 EXPECT_EQ(type, entry.expectedEventType); 71 } 72 } 73