blob: f6111f7723c4a3033b37d8770dcb6bb299ebb4e3 [file] [log] [blame]
Ratan Gupta1dc91782018-04-19 16:47:12 +05301#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
8namespace phosphor
9{
10namespace network
11{
12namespace snmp
13{
14
Ratan Guptaa7ff3852018-11-16 14:05:57 +053015auto managerObjPath = "/xyz/openbmc_test/snmp/manager";
16
Ratan Gupta1dc91782018-04-19 16:47:12 +053017class TestSNMPConfManager : public testing::Test
18{
19 public:
20 sdbusplus::bus::bus bus;
21 ConfManager manager;
22 std::string confDir;
Ratan Guptaa7ff3852018-11-16 14:05:57 +053023 TestSNMPConfManager() :
24 bus(sdbusplus::bus::new_default()), manager(bus, managerObjPath)
Ratan Gupta212f53e2018-04-30 17:28:05 +053025 {
26 char tmp[] = "/tmp/snmpManager.XXXXXX";
27 std::string confDir = mkdtemp(tmp);
28 manager.dbusPersistentLocation = confDir;
29 }
Ratan Gupta1dc91782018-04-19 16:47:12 +053030
31 ~TestSNMPConfManager()
32 {
Ratan Gupta212f53e2018-04-30 17:28:05 +053033 fs::remove_all(manager.dbusPersistentLocation);
Ratan Gupta1dc91782018-04-19 16:47:12 +053034 }
35
Ratan Guptaa7ff3852018-11-16 14:05:57 +053036 std::string createSNMPClient(std::string ipaddress, uint16_t port)
Ratan Gupta1dc91782018-04-19 16:47:12 +053037 {
Ratan Guptaa7ff3852018-11-16 14:05:57 +053038 return manager.client(ipaddress, port);
Ratan Gupta1dc91782018-04-19 16:47:12 +053039 }
40
41 ClientList &getSNMPClients()
42 {
43 return manager.clients;
44 }
45
Ratan Guptaa7ff3852018-11-16 14:05:57 +053046 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 Gupta1dc91782018-04-19 16:47:12 +053058 void deleteSNMPClient(std::string ipaddress)
59 {
Ratan Guptaa7ff3852018-11-16 14:05:57 +053060 for (const auto &val : manager.clients)
61 {
62 if (val.second.get()->address() == ipaddress)
63 {
64 val.second.get()->delete_();
65 }
66 }
Ratan Gupta1dc91782018-04-19 16:47:12 +053067 }
68};
69
70// Add single SNMP client
71TEST_F(TestSNMPConfManager, AddSNMPClient)
72{
Ratan Guptaa7ff3852018-11-16 14:05:57 +053073 // 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 Gupta1dc91782018-04-19 16:47:12 +053077
Ratan Guptaa7ff3852018-11-16 14:05:57 +053078 EXPECT_EQ(path, expectedPath);
Ratan Gupta1dc91782018-04-19 16:47:12 +053079
Ratan Guptaa7ff3852018-11-16 14:05:57 +053080 // check whether the client created
Ratan Gupta1dc91782018-04-19 16:47:12 +053081 auto &clients = getSNMPClients();
82 EXPECT_EQ(1, clients.size());
Ratan Guptaa7ff3852018-11-16 14:05:57 +053083 EXPECT_EQ(true, isClientExist("192.168.1.1"));
Ratan Gupta1dc91782018-04-19 16:47:12 +053084}
85
86// Add multiple SNMP client
87TEST_F(TestSNMPConfManager, AddMultipleSNMPClient)
88{
Ratan Guptaa7ff3852018-11-16 14:05:57 +053089 // add multiple clients and check whether the object path is generated
90 // correctly.
Ratan Gupta1dc91782018-04-19 16:47:12 +053091 createSNMPClient("192.168.1.1", 24);
Ratan Guptaa7ff3852018-11-16 14:05:57 +053092 auto path = createSNMPClient("192.168.1.2", 24);
93 std::string expectedPath = managerObjPath;
94 expectedPath += std::string("/2");
Ratan Gupta1dc91782018-04-19 16:47:12 +053095
Ratan Guptaa7ff3852018-11-16 14:05:57 +053096 EXPECT_EQ(path, expectedPath);
97
98 // check both the clients get created
Ratan Gupta1dc91782018-04-19 16:47:12 +053099 auto &clients = getSNMPClients();
100 EXPECT_EQ(2, clients.size());
Ratan Guptaa7ff3852018-11-16 14:05:57 +0530101
102 EXPECT_EQ(true, isClientExist("192.168.1.1"));
103 EXPECT_EQ(true, isClientExist("192.168.1.2"));
Ratan Gupta1dc91782018-04-19 16:47:12 +0530104}
105
106// Delete SNMP client
107TEST_F(TestSNMPConfManager, DeleteSNMPClient)
108{
Ratan Gupta1dc91782018-04-19 16:47:12 +0530109 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 Guptaa7ff3852018-11-16 14:05:57 +0530114
Ratan Gupta1dc91782018-04-19 16:47:12 +0530115 deleteSNMPClient("192.168.1.1");
Ratan Guptaa7ff3852018-11-16 14:05:57 +0530116
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 Gupta1dc91782018-04-19 16:47:12 +0530126}
127
128} // namespace snmp
Ratan Guptaaea53d02018-09-06 17:56:59 +0530129} // namespace network
Ratan Gupta1dc91782018-04-19 16:47:12 +0530130} // namespace phosphor