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 sdbusplus::asio::object_server*
14 TestInterfacesAdded::AsioServerClassTest::server = nullptr;
15
16 // This is the data structure that comes in via the InterfacesAdded
17 // signal
createInterfacesAdded(const std::string & interface,const std::string & property)18 InterfacesAdded createInterfacesAdded(const std::string& interface,
19 const std::string& property)
20 {
21 std::vector<Association> associations = {
22 {"inventory", "error",
23 "/xyz/openbmc_project/inventory/system/chassis"}};
24 std::variant<std::vector<Association>> sdbVecAssoc = {associations};
25 std::vector<std::pair<std::string, std::variant<std::vector<Association>>>>
26 vecMethToAssoc = {{property, sdbVecAssoc}};
27 InterfacesAdded intfAdded = {{interface, vecMethToAssoc}};
28 return intfAdded;
29 }
30
31 // Verify good path of interfaces added function
TEST_F(TestInterfacesAdded,InterfacesAddedGoodPath)32 TEST_F(TestInterfacesAdded, InterfacesAddedGoodPath)
33 {
34 auto interfaceMap = createDefaultInterfaceMap();
35 AssociationMaps assocMaps;
36
37 auto intfAdded =
38 createInterfacesAdded(assocDefsInterface, assocDefsProperty);
39
40 boost::asio::io_context io;
41
42 processInterfaceAdded(io, interfaceMap, defaultSourcePath, intfAdded,
43 defaultDbusSvc, assocMaps, *server);
44
45 io.run();
46
47 // Interface map will get the following:
48 // /logging/entry/1 /logging/entry /logging/ / system/chassis
49 // dumpInterfaceMapType(interfaceMap);
50 EXPECT_EQ(interfaceMap.size(), 5);
51
52 // New association ower created so ensure it now contains a single entry
53 // dumpAssociationOwnersType(assocOwners);
54 EXPECT_EQ(assocMaps.owners.size(), 1);
55
56 // Ensure the 2 association interfaces were created
57 // dumpAssociationInterfaces(assocInterfaces);
58 EXPECT_EQ(assocMaps.ifaces.size(), 2);
59
60 // No pending associations
61 EXPECT_EQ(assocMaps.pending.size(), 0);
62 }
63