blob: a48c254735f1135641a5bf694d0a41f6cc3f8660 [file] [log] [blame]
#include "src/processing.hpp"
#include "src/test/util/asio_server_class.hpp"
#include "src/test/util/association_objects.hpp"
#include "src/test/util/debug_output.hpp"
#include <sdbusplus/asio/connection.hpp>
#include <sdbusplus/asio/object_server.hpp>
#include <gtest/gtest.h>
class TestInterfacesAdded : public AsioServerClassTest
{
};
sdbusplus::asio::object_server*
TestInterfacesAdded::AsioServerClassTest::server = nullptr;
// This is the data structure that comes in via the InterfacesAdded
// signal
InterfacesAdded createInterfacesAdded(const std::string& interface,
const std::string& property)
{
std::vector<Association> associations = {
{"inventory", "error",
"/xyz/openbmc_project/inventory/system/chassis"}};
sdbusplus::message::variant<std::vector<Association>> sdbVecAssoc = {
associations};
std::vector<std::pair<
std::string, sdbusplus::message::variant<std::vector<Association>>>>
vecMethToAssoc = {{property, sdbVecAssoc}};
InterfacesAdded intfAdded = {{interface, vecMethToAssoc}};
return intfAdded;
}
// Verify good path of interfaces added function
TEST_F(TestInterfacesAdded, InterfacesAddedGoodPath)
{
interface_map_type interfaceMap;
AssociationOwnersType assocOwners;
AssociationInterfaces assocInterfaces;
auto intfAdded = createInterfacesAdded(
assocDefsInterface, getAssocDefPropName(assocDefsInterface));
processInterfaceAdded(interfaceMap, DEFAULT_SOURCE_PATH, intfAdded,
DEFAULT_DBUS_SVC, assocOwners, assocInterfaces,
*server);
// Interface map will get the following:
// /logging/entry/1 /logging/entry /logging/ /
// dump_InterfaceMapType(interfaceMap);
EXPECT_EQ(interfaceMap.size(), 4);
// New association ower created so ensure it now contains a single entry
// dump_AssociationOwnersType(assocOwners);
EXPECT_EQ(assocOwners.size(), 1);
// Ensure the 2 association interfaces were created
// dump_AssociationInterfaces(assocInterfaces);
EXPECT_EQ(assocInterfaces.size(), 2);
}
TEST_F(TestInterfacesAdded, OrgOpenBmcInterfacesAddedGoodPath)
{
interface_map_type interfaceMap;
AssociationOwnersType assocOwners;
AssociationInterfaces assocInterfaces;
auto intfAdded = createInterfacesAdded(
orgOpenBMCAssocDefsInterface,
getAssocDefPropName(orgOpenBMCAssocDefsInterface));
processInterfaceAdded(interfaceMap, DEFAULT_SOURCE_PATH, intfAdded,
DEFAULT_DBUS_SVC, assocOwners, assocInterfaces,
*server);
// Interface map will get the following:
// /logging/entry/1 /logging/entry /logging/ /
// dump_InterfaceMapType(interfaceMap);
EXPECT_EQ(interfaceMap.size(), 4);
// New association ower created so ensure it now contains a single entry
// dump_AssociationOwnersType(assocOwners);
EXPECT_EQ(assocOwners.size(), 1);
// Ensure the 2 association interfaces were created
// dump_AssociationInterfaces(assocInterfaces);
EXPECT_EQ(assocInterfaces.size(), 2);
}