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