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