1 /** 2 * Copyright © 2019 IBM Corporation 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 #include "extensions/openpower-pels/severity.hpp" 17 18 #include <gtest/gtest.h> 19 20 using namespace openpower::pels; 21 using LogSeverity = phosphor::logging::Entry::Level; 22 23 TEST(SeverityTest, SeverityMapTest) 24 { 25 ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Informational), 0x00); 26 ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Notice), 0x00); 27 ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Debug), 0x00); 28 ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Warning), 0x20); 29 ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Critical), 0x50); 30 ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Emergency), 0x40); 31 ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Alert), 0x40); 32 ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Error), 0x40); 33 } 34 35 TEST(SeverityTest, fixupLogSeverityTest) 36 { 37 struct TestParams 38 { 39 LogSeverity sevIn; 40 SeverityType pelSevIn; 41 std::optional<LogSeverity> sevOut; 42 }; 43 44 const std::vector<TestParams> testParams{ 45 // Convert nonInfo sevs to info 46 {LogSeverity::Error, SeverityType::nonError, 47 LogSeverity::Informational}, 48 {LogSeverity::Critical, SeverityType::recovered, 49 LogSeverity::Informational}, 50 {LogSeverity::Warning, SeverityType::nonError, 51 LogSeverity::Informational}, 52 53 // Convert info sevs to nonInfo 54 {LogSeverity::Informational, SeverityType::predictive, 55 LogSeverity::Warning}, 56 {LogSeverity::Notice, SeverityType::unrecoverable, LogSeverity::Error}, 57 {LogSeverity::Debug, SeverityType::critical, LogSeverity::Critical}, 58 59 // Convert non-critical to critical 60 {LogSeverity::Warning, SeverityType::critical, LogSeverity::Critical}, 61 62 // No change 63 {LogSeverity::Informational, SeverityType::nonError, std::nullopt}, 64 {LogSeverity::Debug, SeverityType::recovered, std::nullopt}, 65 {LogSeverity::Notice, SeverityType::nonError, std::nullopt}, 66 {LogSeverity::Error, SeverityType::unrecoverable, std::nullopt}, 67 {LogSeverity::Critical, SeverityType::unrecoverable, std::nullopt}}; 68 69 for (const auto& test : testParams) 70 { 71 EXPECT_EQ(fixupLogSeverity(test.sevIn, test.pelSevIn), test.sevOut); 72 } 73 } 74