summaryrefslogtreecommitdiffstats
path: root/test/openpower-pels/pel_utils.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/openpower-pels/pel_utils.hpp')
-rw-r--r--test/openpower-pels/pel_utils.hpp106
1 files changed, 106 insertions, 0 deletions
diff --git a/test/openpower-pels/pel_utils.hpp b/test/openpower-pels/pel_utils.hpp
new file mode 100644
index 0000000..fae62cd
--- /dev/null
+++ b/test/openpower-pels/pel_utils.hpp
@@ -0,0 +1,106 @@
+#include "extensions/openpower-pels/paths.hpp"
+
+#include <filesystem>
+#include <memory>
+#include <vector>
+
+#include <gtest/gtest.h>
+
+/**
+ * @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::getMessageRegistryPath();
+ }
+
+ 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
+};
+
+/**
+ * @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<uint8_t> - the PEL data
+ */
+std::vector<uint8_t> pelDataFactory(TestPELType type);
+
+/**
+ * @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<uint8_t> - The SRC data
+ */
+std::vector<uint8_t> 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<std::vector<uint8_t>> - the data from the file
+ */
+std::unique_ptr<std::vector<uint8_t>>
+ readPELFile(const std::filesystem::path& path);
OpenPOWER on IntegriCloud