blob: b006aa95821391391d81e60077d2a484b8f88077 [file] [log] [blame]
/**
* Copyright © 2019 IBM Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "extensions/openpower-pels/severity.hpp"
#include <gtest/gtest.h>
using namespace openpower::pels;
using LogSeverity = phosphor::logging::Entry::Level;
TEST(SeverityTest, SeverityMapTest)
{
ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Informational), 0x00);
ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Notice), 0x00);
ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Debug), 0x00);
ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Warning), 0x20);
ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Critical), 0x50);
ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Emergency), 0x40);
ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Alert), 0x40);
ASSERT_EQ(convertOBMCSeverityToPEL(LogSeverity::Error), 0x40);
}
TEST(SeverityTest, fixupLogSeverityTest)
{
struct TestParams
{
LogSeverity sevIn;
SeverityType pelSevIn;
std::optional<LogSeverity> sevOut;
};
const std::vector<TestParams> testParams{
// Convert nonInfo sevs to info
{LogSeverity::Error, SeverityType::nonError,
LogSeverity::Informational},
{LogSeverity::Critical, SeverityType::recovered,
LogSeverity::Informational},
{LogSeverity::Warning, SeverityType::nonError,
LogSeverity::Informational},
// Convert info sevs to nonInfo
{LogSeverity::Informational, SeverityType::predictive,
LogSeverity::Warning},
{LogSeverity::Notice, SeverityType::unrecoverable, LogSeverity::Error},
{LogSeverity::Debug, SeverityType::critical, LogSeverity::Critical},
// Convert non-critical to critical
{LogSeverity::Warning, SeverityType::critical, LogSeverity::Critical},
// No change
{LogSeverity::Informational, SeverityType::nonError, std::nullopt},
{LogSeverity::Debug, SeverityType::recovered, std::nullopt},
{LogSeverity::Notice, SeverityType::nonError, std::nullopt},
{LogSeverity::Error, SeverityType::unrecoverable, std::nullopt},
{LogSeverity::Critical, SeverityType::unrecoverable, std::nullopt}};
for (const auto& test : testParams)
{
EXPECT_EQ(fixupLogSeverity(test.sevIn, test.pelSevIn), test.sevOut);
}
}