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 std::variant<std::vector<Association>> sdbVecAssoc = {associations}; 26 std::vector<std::pair<std::string, std::variant<std::vector<Association>>>> 27 vecMethToAssoc = {{property, sdbVecAssoc}}; 28 InterfacesAdded intfAdded = {{interface, vecMethToAssoc}}; 29 return intfAdded; 30 } 31 32 // Verify good path of interfaces added function 33 TEST_F(TestInterfacesAdded, InterfacesAddedGoodPath) 34 { 35 auto interfaceMap = createDefaultInterfaceMap(); 36 AssociationMaps assocMaps; 37 38 auto intfAdded = 39 createInterfacesAdded(assocDefsInterface, assocDefsProperty); 40 41 processInterfaceAdded(interfaceMap, DEFAULT_SOURCE_PATH, intfAdded, 42 DEFAULT_DBUS_SVC, assocMaps, *server); 43 44 // Interface map will get the following: 45 // /logging/entry/1 /logging/entry /logging/ / system/chassis 46 // dump_InterfaceMapType(interfaceMap); 47 EXPECT_EQ(interfaceMap.size(), 5); 48 49 // New association ower created so ensure it now contains a single entry 50 // dump_AssociationOwnersType(assocOwners); 51 EXPECT_EQ(assocMaps.owners.size(), 1); 52 53 // Ensure the 2 association interfaces were created 54 // dump_AssociationInterfaces(assocInterfaces); 55 EXPECT_EQ(assocMaps.ifaces.size(), 2); 56 57 // No pending associations 58 EXPECT_EQ(assocMaps.pending.size(), 0); 59 } 60