1 // SPDX-License-Identifier: Apache-2.0 2 #include <dump_serialize.hpp> 3 4 #include <cstdlib> 5 #include <exception> 6 #include <filesystem> 7 #include <set> 8 #include <span> 9 #include <string> 10 11 #include <gtest/gtest.h> 12 13 namespace fs = std::filesystem; 14 15 class TestDumpSerial : public ::testing::Test 16 { 17 public: 18 TestDumpSerial() = default; 19 20 void SetUp() 21 { 22 char tmpdir[] = "/tmp/dump.XXXXXX"; 23 std::span<char> tmpdirSpan(reinterpret_cast<char*>(tmpdir), 24 sizeof(tmpdir)); 25 auto dirPtr = mkdtemp(tmpdirSpan.data()); 26 if (dirPtr == nullptr) 27 { 28 throw std::bad_alloc(); 29 } 30 dumpDir = std::string(dirPtr); 31 fs::create_directories(dumpDir); 32 dumpFile = dumpDir; 33 dumpFile /= "elogid"; 34 } 35 void TearDown() 36 { 37 fs::remove_all(dumpDir); 38 } 39 40 std::string dumpDir; 41 fs::path dumpFile; 42 }; 43 44 TEST_F(TestDumpSerial, Serialization) 45 { 46 using ElogList = std::set<uint32_t>; 47 ElogList e; 48 e.insert(1); 49 e.insert(2); 50 e.insert(3); 51 phosphor::dump::elog::serialize(e, dumpFile.c_str()); 52 bool value = phosphor::dump::elog::deserialize(dumpFile.c_str(), e); 53 EXPECT_EQ(value, true); 54 } 55 56 TEST_F(TestDumpSerial, DeserializationFalseCase) 57 { 58 using ElogList = std::set<uint32_t>; 59 ElogList e; 60 e.insert(1); 61 bool value = phosphor::dump::elog::deserialize(dumpFile.c_str(), e); 62 EXPECT_EQ(value, false); 63 } 64 65 TEST(DumpDeSerialPath, DeserializationFalsePath) 66 { 67 using ElogList = std::set<uint32_t>; 68 ElogList e; 69 e.insert(1); 70 // Providing dummy path 71 bool value = phosphor::dump::elog::deserialize("/tmp/Fake/serial", e); 72 EXPECT_EQ(value, false); 73 } 74