1 #include "snmp_conf_manager.hpp"
2 #include "snmp_serialize.hpp"
3
4 #include <xyz/openbmc_project/Common/error.hpp>
5
6 #include <gtest/gtest.h>
7
8 namespace phosphor
9 {
10 namespace network
11 {
12 namespace snmp
13 {
14
15 using InvalidArgument =
16 sdbusplus::xyz::openbmc_project::Common::Error::InvalidArgument;
17
18 auto mgrObjPath = "/xyz/openbmc_test/snmp/manager";
19
20 class TestSNMPClient : public testing::Test
21 {
22 public:
23 sdbusplus::bus_t bus;
24 ConfManager manager;
TestSNMPClient()25 TestSNMPClient() :
26 bus(sdbusplus::bus::new_default()), manager(bus, mgrObjPath)
27 {
28 char tmp[] = "/tmp/snmpClient.XXXXXX";
29 auto confDir = mkdtemp(tmp);
30 manager.dbusPersistentLocation = confDir;
31 }
32
~TestSNMPClient()33 ~TestSNMPClient()
34 {
35 fs::remove_all(manager.dbusPersistentLocation);
36 }
37 };
38
TEST_F(TestSNMPClient,UpdateProperty)39 TEST_F(TestSNMPClient, UpdateProperty)
40 {
41 std::string objPath = mgrObjPath;
42 objPath += "/" + std::to_string(1);
43 Client client(bus, objPath.c_str(), manager, "1.1.1.1", 202);
44 EXPECT_EQ(client.transportProtocol(),
45 sdbusplus::server::xyz::openbmc_project::network::Client::
46 TransportProtocol::UDP);
47 EXPECT_EQ(client.address(), "1.1.1.1");
48 EXPECT_EQ(client.port(), 202);
49 client.address("2.2.2.2");
50 EXPECT_EQ(client.address(), "2.2.2.2");
51 client.port(404);
52 EXPECT_EQ(client.port(), 404);
53 }
54
TEST_F(TestSNMPClient,AddEmptyAddress)55 TEST_F(TestSNMPClient, AddEmptyAddress)
56 {
57 std::string objPath = mgrObjPath;
58 objPath += "/" + std::to_string(1);
59 Client client(bus, objPath.c_str(), manager, "1.1.1.1", 202);
60 EXPECT_EQ(client.address(), "1.1.1.1");
61 EXPECT_EQ(client.port(), 202);
62
63 EXPECT_THROW(client.address(""), InvalidArgument);
64 }
65
TEST_F(TestSNMPClient,CheckPersistency)66 TEST_F(TestSNMPClient, CheckPersistency)
67 {
68 std::string objPath = mgrObjPath;
69 objPath += "/" + std::to_string(1);
70 std::string objPath2 = mgrObjPath;
71 objPath2 += "/" + std::to_string(2);
72
73 Client client(bus, objPath.c_str(), manager, "1.1.1.1", 23);
74 client.address("2.2.2.2");
75
76 Client restoreClient(bus, objPath2.c_str(), manager);
77 auto persistentPath = manager.dbusPersistentLocation;
78 persistentPath += "/1";
79 deserialize(persistentPath, restoreClient);
80
81 EXPECT_EQ("2.2.2.2", restoreClient.address());
82 EXPECT_EQ(23, restoreClient.port());
83 }
84
85 } // namespace snmp
86 } // namespace network
87 } // namespace phosphor
88