summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorRatan Gupta <ratagupt@in.ibm.com>2017-05-26 18:32:23 +0530
committerPatrick Williams <patrick@stwcx.xyz>2017-06-08 13:42:00 +0000
commit47722dcfd50a10e68a1c0846582ea99317e03f9e (patch)
tree6049c7afa6afb95549060a358c0f32a203453d3e /test
parent8ab179233e977e34f2ce335e1fcbf1ad8994a566 (diff)
downloadphosphor-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.am3
-rw-r--r--test/test_ethernet_interface.cpp151
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
OpenPOWER on IntegriCloud