1 #include "elog_entry.hpp"
2 #include "extensions.hpp"
3 
4 #include <sdbusplus/test/sdbus_mock.hpp>
5 
6 #include <gtest/gtest.h>
7 
8 using namespace phosphor::logging;
9 
10 // gtest doesn't like this happening in another file, so do it here.
11 StartupFunctions Extensions::startupFunctions{};
12 CreateFunctions Extensions::createFunctions{};
13 DeleteFunctions Extensions::deleteFunctions{};
14 DeleteProhibitedFunctions Extensions::deleteProhibitedFunctions{};
15 Extensions::DefaultErrorCaps Extensions::defaultErrorCaps =
16     Extensions::DefaultErrorCaps::enable;
17 
18 void startup1(internal::Manager& manager)
19 {
20 }
21 
22 void startup2(internal::Manager& manager)
23 {
24 }
25 
26 void create1(const std::string& message, uint32_t id, uint64_t timestamp,
27              Entry::Level severity, const AdditionalDataArg& additionalData,
28              const AssociationEndpointsArg& assocs, const FFDCArg& ffdc)
29 {
30 }
31 
32 void create2(const std::string& message, uint32_t id, uint64_t timestamp,
33              Entry::Level severity, const AdditionalDataArg& additionalData,
34              const AssociationEndpointsArg& assocs, const FFDCArg& ffdc)
35 {
36 }
37 
38 void deleteLog1(uint32_t id)
39 {
40 }
41 
42 void deleteLog2(uint32_t id)
43 {
44 }
45 
46 void deleteProhibited1(uint32_t id, bool& prohibited)
47 {
48     prohibited = true;
49 }
50 
51 void deleteProhibited2(uint32_t id, bool& prohibited)
52 {
53     prohibited = true;
54 }
55 
56 DISABLE_LOG_ENTRY_CAPS();
57 REGISTER_EXTENSION_FUNCTION(startup1);
58 REGISTER_EXTENSION_FUNCTION(startup2);
59 REGISTER_EXTENSION_FUNCTION(create1);
60 REGISTER_EXTENSION_FUNCTION(create2);
61 REGISTER_EXTENSION_FUNCTION(deleteProhibited1);
62 REGISTER_EXTENSION_FUNCTION(deleteProhibited2);
63 REGISTER_EXTENSION_FUNCTION(deleteLog1);
64 REGISTER_EXTENSION_FUNCTION(deleteLog2);
65 
66 TEST(ExtensionsTest, FunctionCallTest)
67 {
68     sdbusplus::SdBusMock sdbusMock;
69     sdbusplus::bus::bus bus = sdbusplus::get_mocked_new(&sdbusMock);
70     internal::Manager manager(bus, "testpath");
71 
72     EXPECT_EQ(Extensions::getStartupFunctions().size(), 2);
73     for (auto& s : Extensions::getStartupFunctions())
74     {
75         s(manager);
76     }
77 
78     AdditionalDataArg ad;
79     AssociationEndpointsArg assocs;
80     FFDCArg ffdc;
81     EXPECT_EQ(Extensions::getCreateFunctions().size(), 2);
82     for (auto& c : Extensions::getCreateFunctions())
83     {
84         c("test", 5, 6, Entry::Level::Informational, ad, assocs, ffdc);
85     }
86 
87     EXPECT_EQ(Extensions::getDeleteFunctions().size(), 2);
88     for (auto& d : Extensions::getDeleteFunctions())
89     {
90         d(5);
91     }
92 
93     EXPECT_EQ(Extensions::getDeleteProhibitedFunctions().size(), 2);
94     for (auto& p : Extensions::getDeleteProhibitedFunctions())
95     {
96         bool prohibited = false;
97         p(5, prohibited);
98         EXPECT_TRUE(prohibited);
99     }
100 
101     EXPECT_TRUE(Extensions::disableDefaultLogCaps());
102 }
103