xref: /openbmc/phosphor-logging/test/openpower-pels/severity_test.cpp (revision 40fb54935ce7367636a7156039396ee91cc4d5e2)
1 // SPDX-License-Identifier: Apache-2.0
2 // SPDX-FileCopyrightText: Copyright 2019 IBM Corporation
3 
4 #include "extensions/openpower-pels/severity.hpp"
5 
6 #include <gtest/gtest.h>
7 
8 using namespace openpower::pels;
9 using LogSeverity = phosphor::logging::Entry::Level;
10 
TEST(SeverityTest,SeverityMapTest)11 TEST(SeverityTest, SeverityMapTest)
12 {
13     ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Informational), 0x00);
14     ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Notice), 0x00);
15     ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Debug), 0x00);
16     ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Warning), 0x20);
17     ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Critical), 0x50);
18     ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Emergency), 0x40);
19     ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Alert), 0x40);
20     ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Error), 0x40);
21 }
22 
TEST(SeverityTest,fixupLogSeverityTest)23 TEST(SeverityTest, fixupLogSeverityTest)
24 {
25     struct TestParams
26     {
27         LogSeverity sevIn;
28         SeverityType pelSevIn;
29         std::optional<LogSeverity> sevOut;
30     };
31 
32     const std::vector<TestParams> testParams{
33         // Convert nonInfo sevs to info
34         {LogSeverity::Error, SeverityType::nonError,
35          LogSeverity::Informational},
36         {LogSeverity::Critical, SeverityType::recovered,
37          LogSeverity::Informational},
38         {LogSeverity::Warning, SeverityType::nonError,
39          LogSeverity::Informational},
40 
41         // Convert info sevs to nonInfo
42         {LogSeverity::Informational, SeverityType::predictive,
43          LogSeverity::Warning},
44         {LogSeverity::Notice, SeverityType::unrecoverable, LogSeverity::Error},
45         {LogSeverity::Debug, SeverityType::critical, LogSeverity::Critical},
46 
47         // Convert non-critical to critical
48         {LogSeverity::Warning, SeverityType::critical, LogSeverity::Critical},
49 
50         // No change
51         {LogSeverity::Informational, SeverityType::nonError, std::nullopt},
52         {LogSeverity::Debug, SeverityType::recovered, std::nullopt},
53         {LogSeverity::Notice, SeverityType::nonError, std::nullopt},
54         {LogSeverity::Error, SeverityType::unrecoverable, std::nullopt},
55         {LogSeverity::Critical, SeverityType::unrecoverable, std::nullopt}};
56 
57     for (const auto& test : testParams)
58     {
59         EXPECT_EQ(fixupLogSeverity(test.sevIn, test.pelSevIn), test.sevOut);
60     }
61 }
62