blob: d5f29eb1038f4529c8f3411367065cce0e20b8b0 [file] [log] [blame]
#include "elog_entry.hpp"
#include "extensions.hpp"
#include <sdbusplus/test/sdbus_mock.hpp>
#include <gtest/gtest.h>
using namespace phosphor::logging;
void startup1(internal::Manager& /*manager*/) {}
void startup2(internal::Manager& /*manager*/) {}
void create1(const std::string& /*message*/, uint32_t /*id*/,
uint64_t /*timestamp*/, Entry::Level /*severity*/,
const AdditionalDataArg& /*additionalData*/,
const AssociationEndpointsArg& /*assocs*/, const FFDCArg& /*ffdc*/)
{}
void create2(const std::string& /*message*/, uint32_t /*id*/,
uint64_t /*timestamp*/, Entry::Level /*severity*/,
const AdditionalDataArg& /*additionalData*/,
const AssociationEndpointsArg& /*assocs*/, const FFDCArg& /*ffdc*/)
{}
void deleteLog1(uint32_t /*id*/) {}
void deleteLog2(uint32_t /*id*/) {}
void deleteProhibited1(uint32_t /*id*/, bool& prohibited)
{
prohibited = true;
}
void deleteProhibited2(uint32_t /*id*/, bool& prohibited)
{
prohibited = true;
}
void logIDWithHwIsolation1(std::vector<uint32_t>& logIDs)
{
logIDs.push_back(1);
}
void logIDWithHwIsolation2(std::vector<uint32_t>& logIDs)
{
logIDs.push_back(2);
}
DISABLE_LOG_ENTRY_CAPS()
REGISTER_EXTENSION_FUNCTION(startup1)
REGISTER_EXTENSION_FUNCTION(startup2)
REGISTER_EXTENSION_FUNCTION(create1)
REGISTER_EXTENSION_FUNCTION(create2)
REGISTER_EXTENSION_FUNCTION(deleteProhibited1)
REGISTER_EXTENSION_FUNCTION(deleteProhibited2)
REGISTER_EXTENSION_FUNCTION(logIDWithHwIsolation1)
REGISTER_EXTENSION_FUNCTION(logIDWithHwIsolation2)
REGISTER_EXTENSION_FUNCTION(deleteLog1)
REGISTER_EXTENSION_FUNCTION(deleteLog2)
TEST(ExtensionsTest, FunctionCallTest)
{
sdbusplus::SdBusMock sdbusMock;
sdbusplus::bus_t bus = sdbusplus::get_mocked_new(&sdbusMock);
internal::Manager manager(bus, "testpath");
EXPECT_EQ(Extensions::getStartupFunctions().size(), 2);
for (auto& s : Extensions::getStartupFunctions())
{
s(manager);
}
AdditionalDataArg ad;
AssociationEndpointsArg assocs;
FFDCArg ffdc;
EXPECT_EQ(Extensions::getCreateFunctions().size(), 2);
for (auto& c : Extensions::getCreateFunctions())
{
c("test", 5, 6, Entry::Level::Informational, ad, assocs, ffdc);
}
EXPECT_EQ(Extensions::getDeleteFunctions().size(), 2);
for (auto& d : Extensions::getDeleteFunctions())
{
d(5);
}
EXPECT_EQ(Extensions::getDeleteProhibitedFunctions().size(), 2);
for (auto& p : Extensions::getDeleteProhibitedFunctions())
{
bool prohibited = false;
p(5, prohibited);
EXPECT_TRUE(prohibited);
}
EXPECT_EQ(Extensions::getLogIDWithHwIsolationFunctions().size(), 2);
std::vector<uint32_t> ids;
for (size_t i = 0; i < 2; ++i)
{
auto getLogIDWithHwIsolation =
Extensions::getLogIDWithHwIsolationFunctions()[i];
getLogIDWithHwIsolation(ids);
if (i == 0)
{
EXPECT_EQ(ids.size(), 1);
EXPECT_EQ(ids[0], 1);
}
if (i == 1)
{
EXPECT_EQ(ids.size(), 2);
EXPECT_EQ(ids[1], 2);
}
}
EXPECT_TRUE(Extensions::disableDefaultLogCaps());
}