1 #include "src/processing.hpp" 2 #include "src/test/util/asio_server_class.hpp" 3 #include "src/test/util/association_objects.hpp" 4 #include "src/test/util/debug_output.hpp" 5 6 #include <sdbusplus/asio/connection.hpp> 7 #include <sdbusplus/asio/object_server.hpp> 8 9 #include <gtest/gtest.h> 10 11 class TestInterfacesAdded : public AsioServerClassTest 12 { 13 }; 14 sdbusplus::asio::object_server* 15 TestInterfacesAdded::AsioServerClassTest::server = nullptr; 16 17 // This is the data structure that comes in via the InterfacesAdded 18 // signal 19 InterfacesAdded createInterfacesAdded(const std::string& interface, 20 const std::string& property) 21 { 22 std::vector<Association> associations = { 23 {"inventory", "error", 24 "/xyz/openbmc_project/inventory/system/chassis"}}; 25 sdbusplus::message::variant<std::vector<Association>> sdbVecAssoc = { 26 associations}; 27 std::vector<std::pair< 28 std::string, sdbusplus::message::variant<std::vector<Association>>>> 29 vecMethToAssoc = {{property, sdbVecAssoc}}; 30 InterfacesAdded intfAdded = {{interface, vecMethToAssoc}}; 31 return intfAdded; 32 } 33 34 // Verify good path of interfaces added function 35 TEST_F(TestInterfacesAdded, InterfacesAddedGoodPath) 36 { 37 interface_map_type interfaceMap; 38 AssociationOwnersType assocOwners; 39 AssociationInterfaces assocInterfaces; 40 auto intfAdded = createInterfacesAdded( 41 assocDefsInterface, getAssocDefPropName(assocDefsInterface)); 42 43 processInterfaceAdded(interfaceMap, DEFAULT_SOURCE_PATH, intfAdded, 44 DEFAULT_DBUS_SVC, assocOwners, assocInterfaces, 45 *server); 46 47 // Interface map will get the following: 48 // /logging/entry/1 /logging/entry /logging/ / 49 // dump_InterfaceMapType(interfaceMap); 50 EXPECT_EQ(interfaceMap.size(), 4); 51 52 // New association ower created so ensure it now contains a single entry 53 // dump_AssociationOwnersType(assocOwners); 54 EXPECT_EQ(assocOwners.size(), 1); 55 56 // Ensure the 2 association interfaces were created 57 // dump_AssociationInterfaces(assocInterfaces); 58 EXPECT_EQ(assocInterfaces.size(), 2); 59 } 60 61 TEST_F(TestInterfacesAdded, OrgOpenBmcInterfacesAddedGoodPath) 62 { 63 interface_map_type interfaceMap; 64 AssociationOwnersType assocOwners; 65 AssociationInterfaces assocInterfaces; 66 auto intfAdded = createInterfacesAdded( 67 orgOpenBMCAssocDefsInterface, 68 getAssocDefPropName(orgOpenBMCAssocDefsInterface)); 69 70 processInterfaceAdded(interfaceMap, DEFAULT_SOURCE_PATH, intfAdded, 71 DEFAULT_DBUS_SVC, assocOwners, assocInterfaces, 72 *server); 73 74 // Interface map will get the following: 75 // /logging/entry/1 /logging/entry /logging/ / 76 // dump_InterfaceMapType(interfaceMap); 77 EXPECT_EQ(interfaceMap.size(), 4); 78 79 // New association ower created so ensure it now contains a single entry 80 // dump_AssociationOwnersType(assocOwners); 81 EXPECT_EQ(assocOwners.size(), 1); 82 83 // Ensure the 2 association interfaces were created 84 // dump_AssociationInterfaces(assocInterfaces); 85 EXPECT_EQ(assocInterfaces.size(), 2); 86 } 87