1 #include "extensions/openpower-pels/paths.hpp" 2 #include "extensions/openpower-pels/repository.hpp" 3 #include "pel_utils.hpp" 4 5 #include <ext/stdio_filebuf.h> 6 7 #include <filesystem> 8 9 #include <gtest/gtest.h> 10 11 using namespace openpower::pels; 12 namespace fs = std::filesystem; 13 14 /** 15 * Clean the Repo after every testcase. 16 * And because we have PEL object, also clean up 17 * the log ID. 18 */ 19 class RepositoryTest : public CleanLogID 20 { 21 protected: 22 void SetUp() override 23 { 24 repoPath = getPELRepoPath(); 25 } 26 27 void TearDown() override 28 { 29 fs::remove_all(repoPath); 30 } 31 32 fs::path repoPath; 33 }; 34 35 TEST_F(RepositoryTest, FilenameTest) 36 { 37 BCDTime date = {0x20, 0x30, 0x11, 0x28, 0x13, 0x6, 0x7, 0x8}; 38 39 EXPECT_EQ(Repository::getPELFilename(0x12345678, date), 40 "2030112813060708_12345678"); 41 42 EXPECT_EQ(Repository::getPELFilename(0xAABBCCDD, date), 43 "2030112813060708_AABBCCDD"); 44 45 EXPECT_EQ(Repository::getPELFilename(0x3AFF1, date), 46 "2030112813060708_0003AFF1"); 47 48 EXPECT_EQ(Repository::getPELFilename(100, date), 49 "2030112813060708_00000064"); 50 51 EXPECT_EQ(Repository::getPELFilename(0, date), "2030112813060708_00000000"); 52 } 53 54 TEST_F(RepositoryTest, AddTest) 55 { 56 Repository repo{repoPath}; 57 auto data = pelDataFactory(TestPelType::pelSimple); 58 auto pel = std::make_unique<PEL>(*data); 59 60 repo.add(pel); 61 62 // Check that the PEL was stored where it was supposed to be, 63 // and that it wrote the PEL data. 64 const auto& ts = pel->privateHeader()->commitTimestamp(); 65 auto name = Repository::getPELFilename(pel->id(), ts); 66 67 fs::path file = repoPath / "logs" / name; 68 EXPECT_TRUE(fs::exists(file)); 69 70 auto newData = readPELFile(file); 71 auto pelData = pel->data(); 72 EXPECT_EQ(*newData, pelData); 73 } 74