#include "extensions/openpower-pels/paths.hpp" #include #include #include #include /** * @brief Test fixture to remove the pelID file that PELs use. */ class CleanLogID : public ::testing::Test { protected: static void SetUpTestCase() { pelIDFile = openpower::pels::getPELIDFile(); } static void TearDownTestCase() { std::filesystem::remove_all( std::filesystem::path{pelIDFile}.parent_path()); } static std::filesystem::path pelIDFile; }; class CleanPELFiles : public ::testing::Test { protected: void SetUp() override { pelIDFile = openpower::pels::getPELIDFile(); repoPath = openpower::pels::getPELRepoPath(); registryPath = openpower::pels::getPELReadOnlyDataPath(); } void TearDown() override { std::filesystem::remove_all( std::filesystem::path{pelIDFile}.parent_path()); std::filesystem::remove_all(repoPath); std::filesystem::remove_all(registryPath); } static std::filesystem::path pelIDFile; static std::filesystem::path repoPath; static std::filesystem::path registryPath; }; /** * @brief Tells the factory which PEL to create */ enum class TestPELType { pelSimple, privateHeaderSection, userHeaderSection, primarySRCSection, primarySRCSection2Callouts, failingMTMSSection, extendedUserDataSection }; /** * @brief Tells the SRC factory which data to create */ enum class TestSRCType { fruIdentityStructure, pceIdentityStructure, mruStructure, calloutStructureA, calloutStructureB, calloutSection2Callouts }; /** * @brief PEL data factory, for testing * * @param[in] type - the type of data to create * * @return std::vector - the PEL data */ std::vector pelDataFactory(TestPELType type); /** * @brief PEL factory to create a PEL with the specified fields. * * The size is obtained by adding a UserData section of * the size necessary after adding the 5 required sections. * * @param[in] id - The desired PEL ID * @param[in] creatorID - The desired creator ID * @param[in] severity - The desired severity * @param[in] actionFlags - The desired action flags * @param[in] size - The desired size. * Must be: * * 4B aligned * * min 276 (size of the 5 required sections) * * max 16834 * * @return std::vector - The PEL data */ std::vector pelFactory(uint32_t id, char creatorID, uint8_t severity, uint16_t actionFlags, size_t size); /** * @brief SRC data factory, for testing * * Provides pieces of the SRC PEL section, such as a callout. * * @param[in] type - the type of data to create * * @return std::vector - The SRC data */ std::vector srcDataFactory(TestSRCType type); /** * @brief Helper function to read raw PEL data from a file * * @param[in] path - the path to read * * @return std::unique_ptr> - the data from the file */ std::unique_ptr> readPELFile(const std::filesystem::path& path);