xref: /openbmc/phosphor-debug-collector/test/debug_inif_test.cpp (revision e9ec952ef5f4788c74332b03f0d8d4f041910a47)
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