diff options
author | Ratan Gupta <ratagupt@in.ibm.com> | 2017-05-26 18:32:23 +0530 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2017-06-08 13:42:00 +0000 |
commit | 47722dcfd50a10e68a1c0846582ea99317e03f9e (patch) | |
tree | 6049c7afa6afb95549060a358c0f32a203453d3e /test | |
parent | 8ab179233e977e34f2ce335e1fcbf1ad8994a566 (diff) | |
download | phosphor-networkd-47722dcfd50a10e68a1c0846582ea99317e03f9e.tar.gz phosphor-networkd-47722dcfd50a10e68a1c0846582ea99317e03f9e.zip |
test: add test cases for ethernet interface
Change-Id: Ibf3a2b3513c784a56540488fa7de5a638a83a833
Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/Makefile.am | 3 | ||||
-rw-r--r-- | test/test_ethernet_interface.cpp | 151 |
2 files changed, 153 insertions, 1 deletions
diff --git a/test/Makefile.am b/test/Makefile.am index b2fbced..87d0742 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -7,7 +7,8 @@ check_PROGRAMS = test test_SOURCES = \ test_util.cpp \ mock_syscall.cpp \ - test_network_manager.cpp + test_network_manager.cpp \ + test_ethernet_interface.cpp test_CPPFLAGS = -Igtest $(GTEST_CPPFLAGS) $(AM_CPPFLAGS) test_CXXFLAGS = $(PTHREAD_CFLAGS) diff --git a/test/test_ethernet_interface.cpp b/test/test_ethernet_interface.cpp new file mode 100644 index 0000000..beaa0d4 --- /dev/null +++ b/test/test_ethernet_interface.cpp @@ -0,0 +1,151 @@ +#include "network_manager.hpp" +#include "mock_syscall.hpp" + +#include <gtest/gtest.h> +#include <sdbusplus/bus.hpp> + +#include <net/if.h> +#include <netinet/in.h> +#include <arpa/inet.h> +#include <exception> + +namespace phosphor +{ +namespace network +{ + +class TestEthernetInterface : public testing::Test +{ + public: + + sdbusplus::bus::bus bus; + Manager manager; + EthernetInterface interface; + TestEthernetInterface() + : bus(sdbusplus::bus::new_default()), + manager(bus, "/xyz/openbmc_test/network"), + interface(bus, "/xyz/openbmc_test/network/test0", false, manager) + + { + + } + + int countIPObjects() + { + return interface.getAddresses().size(); + } + + bool isIPObjectExist(const std::string& ipaddress) + { + auto address = interface.getAddresses().find(ipaddress); + if (address == interface.getAddresses().end()) + { + return false; + } + return true; + + } + + bool deleteIPObject(const std::string& ipaddress) + { + auto address = interface.getAddresses().find(ipaddress); + if (address == interface.getAddresses().end()) + { + return false; + } + address->second->delete_(); + return true; + } + + std::string getObjectPath(const std::string& ipaddress, + uint8_t subnetMask, + const std::string& gateway) + { + IP::Protocol addressType = IP::Protocol::IPv4; + + return interface.generateObjectPath(addressType, + ipaddress, + subnetMask, + gateway); + } + + void createIPObject(IP::Protocol addressType, + const std::string& ipaddress, + uint8_t subnetMask, + const std::string& gateway) + { + interface.iP(addressType, + ipaddress, + subnetMask, + gateway + ); + + } + +}; + +TEST_F(TestEthernetInterface, NoIPaddress) +{ + EXPECT_EQ(countIPObjects(), 0); + +} + +TEST_F(TestEthernetInterface, AddIPAddress) +{ + IP::Protocol addressType = IP::Protocol::IPv4; + createIPObject(addressType, "10.10.10.10", 16, "10.10.10.1"); + EXPECT_EQ(true, isIPObjectExist("10.10.10.10")); + +} + +TEST_F(TestEthernetInterface, AddMultipleAddress) +{ + IP::Protocol addressType = IP::Protocol::IPv4; + createIPObject(addressType, "10.10.10.10", 16, "10.10.10.1"); + createIPObject(addressType, "20.20.20.20", 16, "20.20.20.1"); + EXPECT_EQ(true, isIPObjectExist("10.10.10.10")); + EXPECT_EQ(true, isIPObjectExist("20.20.20.20")); + +} + +TEST_F(TestEthernetInterface, DeleteIPAddress) +{ + IP::Protocol addressType = IP::Protocol::IPv4; + createIPObject(addressType, "10.10.10.10", 16, "10.10.10.1"); + createIPObject(addressType, "20.20.20.20", 16, "20.20.20.1"); + deleteIPObject("10.10.10.10"); + EXPECT_EQ(false, isIPObjectExist("10.10.10.10")); + EXPECT_EQ(true, isIPObjectExist("20.20.20.20")); + +} + +TEST_F(TestEthernetInterface, DeleteInvalidIPAddress) +{ + EXPECT_EQ(false, deleteIPObject("10.10.10.10")); +} + +TEST_F(TestEthernetInterface, CheckObjectPath) +{ + std::string ipaddress = "10.10.10.10"; + uint8_t prefix = 16; + std::string gateway = "10.10.10.1"; + + std::string expectedObjectPath = "/xyz/openbmc_test/network/test0/ipv4/"; + std::stringstream hexId; + + std::string hashString = ipaddress; + hashString += std::to_string(prefix); + hashString += gateway; + + + hexId << std::hex << ((std::hash<std::string> {}( + hashString)) & 0xFFFFFFFF); + expectedObjectPath += hexId.str(); + + EXPECT_EQ(expectedObjectPath, getObjectPath(ipaddress, + prefix, + gateway)); +} + +}// namespce network +}// namespace phosphor |