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; 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 33 ~TestSNMPClient() 34 { 35 fs::remove_all(manager.dbusPersistentLocation); 36 } 37 }; 38 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 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 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