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 void startup1(internal::Manager& /*manager*/)
11 {
12 }
13 
14 void startup2(internal::Manager& /*manager*/)
15 {
16 }
17 
18 void create1(const std::string& /*message*/, uint32_t /*id*/,
19              uint64_t /*timestamp*/, Entry::Level /*severity*/,
20              const AdditionalDataArg& /*additionalData*/,
21              const AssociationEndpointsArg& /*assocs*/, const FFDCArg& /*ffdc*/)
22 {
23 }
24 
25 void create2(const std::string& /*message*/, uint32_t /*id*/,
26              uint64_t /*timestamp*/, Entry::Level /*severity*/,
27              const AdditionalDataArg& /*additionalData*/,
28              const AssociationEndpointsArg& /*assocs*/, const FFDCArg& /*ffdc*/)
29 {
30 }
31 
32 void deleteLog1(uint32_t /*id*/)
33 {
34 }
35 
36 void deleteLog2(uint32_t /*id*/)
37 {
38 }
39 
40 void deleteProhibited1(uint32_t /*id*/, bool& prohibited)
41 {
42     prohibited = true;
43 }
44 
45 void deleteProhibited2(uint32_t /*id*/, bool& prohibited)
46 {
47     prohibited = true;
48 }
49 
50 DISABLE_LOG_ENTRY_CAPS()
51 REGISTER_EXTENSION_FUNCTION(startup1)
52 REGISTER_EXTENSION_FUNCTION(startup2)
53 REGISTER_EXTENSION_FUNCTION(create1)
54 REGISTER_EXTENSION_FUNCTION(create2)
55 REGISTER_EXTENSION_FUNCTION(deleteProhibited1)
56 REGISTER_EXTENSION_FUNCTION(deleteProhibited2)
57 REGISTER_EXTENSION_FUNCTION(deleteLog1)
58 REGISTER_EXTENSION_FUNCTION(deleteLog2)
59 
60 TEST(ExtensionsTest, FunctionCallTest)
61 {
62     sdbusplus::SdBusMock sdbusMock;
63     sdbusplus::bus_t bus = sdbusplus::get_mocked_new(&sdbusMock);
64     internal::Manager manager(bus, "testpath");
65 
66     EXPECT_EQ(Extensions::getStartupFunctions().size(), 2);
67     for (auto& s : Extensions::getStartupFunctions())
68     {
69         s(manager);
70     }
71 
72     AdditionalDataArg ad;
73     AssociationEndpointsArg assocs;
74     FFDCArg ffdc;
75     EXPECT_EQ(Extensions::getCreateFunctions().size(), 2);
76     for (auto& c : Extensions::getCreateFunctions())
77     {
78         c("test", 5, 6, Entry::Level::Informational, ad, assocs, ffdc);
79     }
80 
81     EXPECT_EQ(Extensions::getDeleteFunctions().size(), 2);
82     for (auto& d : Extensions::getDeleteFunctions())
83     {
84         d(5);
85     }
86 
87     EXPECT_EQ(Extensions::getDeleteProhibitedFunctions().size(), 2);
88     for (auto& p : Extensions::getDeleteProhibitedFunctions())
89     {
90         bool prohibited = false;
91         p(5, prohibited);
92         EXPECT_TRUE(prohibited);
93     }
94 
95     EXPECT_TRUE(Extensions::disableDefaultLogCaps());
96 }
97