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