Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 1 | #include "snmp_conf_manager.hpp" |
| 2 | |
| 3 | #include "xyz/openbmc_project/Common/error.hpp" |
| 4 | |
| 5 | #include <gtest/gtest.h> |
| 6 | #include <sdbusplus/bus.hpp> |
| 7 | |
| 8 | namespace phosphor |
| 9 | { |
| 10 | namespace network |
| 11 | { |
| 12 | namespace snmp |
| 13 | { |
| 14 | |
Ratan Gupta | a7ff385 | 2018-11-16 14:05:57 +0530 | [diff] [blame^] | 15 | auto managerObjPath = "/xyz/openbmc_test/snmp/manager"; |
| 16 | |
Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 17 | class TestSNMPConfManager : public testing::Test |
| 18 | { |
| 19 | public: |
| 20 | sdbusplus::bus::bus bus; |
| 21 | ConfManager manager; |
| 22 | std::string confDir; |
Ratan Gupta | a7ff385 | 2018-11-16 14:05:57 +0530 | [diff] [blame^] | 23 | TestSNMPConfManager() : |
| 24 | bus(sdbusplus::bus::new_default()), manager(bus, managerObjPath) |
Ratan Gupta | 212f53e | 2018-04-30 17:28:05 +0530 | [diff] [blame] | 25 | { |
| 26 | char tmp[] = "/tmp/snmpManager.XXXXXX"; |
| 27 | std::string confDir = mkdtemp(tmp); |
| 28 | manager.dbusPersistentLocation = confDir; |
| 29 | } |
Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 30 | |
| 31 | ~TestSNMPConfManager() |
| 32 | { |
Ratan Gupta | 212f53e | 2018-04-30 17:28:05 +0530 | [diff] [blame] | 33 | fs::remove_all(manager.dbusPersistentLocation); |
Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 34 | } |
| 35 | |
Ratan Gupta | a7ff385 | 2018-11-16 14:05:57 +0530 | [diff] [blame^] | 36 | std::string createSNMPClient(std::string ipaddress, uint16_t port) |
Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 37 | { |
Ratan Gupta | a7ff385 | 2018-11-16 14:05:57 +0530 | [diff] [blame^] | 38 | return manager.client(ipaddress, port); |
Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 39 | } |
| 40 | |
| 41 | ClientList &getSNMPClients() |
| 42 | { |
| 43 | return manager.clients; |
| 44 | } |
| 45 | |
Ratan Gupta | a7ff385 | 2018-11-16 14:05:57 +0530 | [diff] [blame^] | 46 | bool isClientExist(const std::string &ipaddress) |
| 47 | { |
| 48 | for (const auto &val : manager.clients) |
| 49 | { |
| 50 | if (val.second.get()->address() == ipaddress) |
| 51 | { |
| 52 | return true; |
| 53 | } |
| 54 | } |
| 55 | return false; |
| 56 | } |
| 57 | |
Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 58 | void deleteSNMPClient(std::string ipaddress) |
| 59 | { |
Ratan Gupta | a7ff385 | 2018-11-16 14:05:57 +0530 | [diff] [blame^] | 60 | for (const auto &val : manager.clients) |
| 61 | { |
| 62 | if (val.second.get()->address() == ipaddress) |
| 63 | { |
| 64 | val.second.get()->delete_(); |
| 65 | } |
| 66 | } |
Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 67 | } |
| 68 | }; |
| 69 | |
| 70 | // Add single SNMP client |
| 71 | TEST_F(TestSNMPConfManager, AddSNMPClient) |
| 72 | { |
Ratan Gupta | a7ff385 | 2018-11-16 14:05:57 +0530 | [diff] [blame^] | 73 | // check the created object path |
| 74 | auto path = createSNMPClient("192.168.1.1", 24); |
| 75 | std::string expectedPath = managerObjPath; |
| 76 | expectedPath += std::string("/1"); |
Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 77 | |
Ratan Gupta | a7ff385 | 2018-11-16 14:05:57 +0530 | [diff] [blame^] | 78 | EXPECT_EQ(path, expectedPath); |
Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 79 | |
Ratan Gupta | a7ff385 | 2018-11-16 14:05:57 +0530 | [diff] [blame^] | 80 | // check whether the client created |
Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 81 | auto &clients = getSNMPClients(); |
| 82 | EXPECT_EQ(1, clients.size()); |
Ratan Gupta | a7ff385 | 2018-11-16 14:05:57 +0530 | [diff] [blame^] | 83 | EXPECT_EQ(true, isClientExist("192.168.1.1")); |
Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 84 | } |
| 85 | |
| 86 | // Add multiple SNMP client |
| 87 | TEST_F(TestSNMPConfManager, AddMultipleSNMPClient) |
| 88 | { |
Ratan Gupta | a7ff385 | 2018-11-16 14:05:57 +0530 | [diff] [blame^] | 89 | // add multiple clients and check whether the object path is generated |
| 90 | // correctly. |
Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 91 | createSNMPClient("192.168.1.1", 24); |
Ratan Gupta | a7ff385 | 2018-11-16 14:05:57 +0530 | [diff] [blame^] | 92 | auto path = createSNMPClient("192.168.1.2", 24); |
| 93 | std::string expectedPath = managerObjPath; |
| 94 | expectedPath += std::string("/2"); |
Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 95 | |
Ratan Gupta | a7ff385 | 2018-11-16 14:05:57 +0530 | [diff] [blame^] | 96 | EXPECT_EQ(path, expectedPath); |
| 97 | |
| 98 | // check both the clients get created |
Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 99 | auto &clients = getSNMPClients(); |
| 100 | EXPECT_EQ(2, clients.size()); |
Ratan Gupta | a7ff385 | 2018-11-16 14:05:57 +0530 | [diff] [blame^] | 101 | |
| 102 | EXPECT_EQ(true, isClientExist("192.168.1.1")); |
| 103 | EXPECT_EQ(true, isClientExist("192.168.1.2")); |
Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 104 | } |
| 105 | |
| 106 | // Delete SNMP client |
| 107 | TEST_F(TestSNMPConfManager, DeleteSNMPClient) |
| 108 | { |
Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 109 | createSNMPClient("192.168.1.1", 24); |
| 110 | createSNMPClient("192.168.1.2", 24); |
| 111 | |
| 112 | auto &clients = getSNMPClients(); |
| 113 | EXPECT_EQ(2, clients.size()); |
Ratan Gupta | a7ff385 | 2018-11-16 14:05:57 +0530 | [diff] [blame^] | 114 | |
Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 115 | deleteSNMPClient("192.168.1.1"); |
Ratan Gupta | a7ff385 | 2018-11-16 14:05:57 +0530 | [diff] [blame^] | 116 | |
| 117 | auto path = createSNMPClient("192.168.1.3", 24); |
| 118 | std::string expectedPath = managerObjPath; |
| 119 | expectedPath += std::string("/3"); |
| 120 | EXPECT_EQ(path, expectedPath); |
| 121 | |
| 122 | EXPECT_EQ(2, clients.size()); |
| 123 | EXPECT_EQ(true, isClientExist("192.168.1.2")); |
| 124 | EXPECT_EQ(false, isClientExist("192.168.1.1")); |
| 125 | EXPECT_EQ(true, isClientExist("192.168.1.3")); |
Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 126 | } |
| 127 | |
| 128 | } // namespace snmp |
Ratan Gupta | aea53d0 | 2018-09-06 17:56:59 +0530 | [diff] [blame] | 129 | } // namespace network |
Ratan Gupta | 1dc9178 | 2018-04-19 16:47:12 +0530 | [diff] [blame] | 130 | } // namespace phosphor |