1 #include "extensions/openpower-pels/paths.hpp"
2 
3 #include <filesystem>
4 #include <memory>
5 #include <vector>
6 
7 #include <gtest/gtest.h>
8 
9 /**
10  * @brief Test fixture to remove the pelID file that PELs use.
11  */
12 class CleanLogID : public ::testing::Test
13 {
14   protected:
15     static void SetUpTestCase()
16     {
17         pelIDFile = openpower::pels::getPELIDFile();
18     }
19 
20     static void TearDownTestCase()
21     {
22         std::filesystem::remove_all(
23             std::filesystem::path{pelIDFile}.parent_path());
24     }
25 
26     static std::filesystem::path pelIDFile;
27 };
28 
29 class CleanPELFiles : public ::testing::Test
30 {
31   protected:
32     static void SetUpTestCase()
33     {
34         pelIDFile = openpower::pels::getPELIDFile();
35         repoPath = openpower::pels::getPELRepoPath();
36     }
37 
38     static void TearDownTestCase()
39     {
40         std::filesystem::remove_all(
41             std::filesystem::path{pelIDFile}.parent_path());
42         std::filesystem::remove_all(repoPath);
43     }
44 
45     static std::filesystem::path pelIDFile;
46     static std::filesystem::path repoPath;
47 };
48 
49 /**
50  * @brief Tells the factory which PEL to create
51  */
52 enum class TestPelType
53 {
54     pelSimple,
55     privateHeaderSimple,
56     userHeaderSimple
57 };
58 
59 /**
60  * @brief PEL data factory, for testing
61  *
62  * @param[in] type - the type of data to create
63  *
64  * @return std::unique_ptr<std::vector<uint8_t>> - the PEL data
65  */
66 std::unique_ptr<std::vector<uint8_t>> pelDataFactory(TestPelType type);
67 
68 /**
69  * @brief Helper function to read raw PEL data from a file
70  *
71  * @param[in] path - the path to read
72  *
73  * @return std::unique_ptr<std::vector<uint8_t>> - the data from the file
74  */
75 std::unique_ptr<std::vector<uint8_t>>
76     readPELFile(const std::filesystem::path& path);
77