Browse Source

[1957] Added unit tests for new open socket methods.

Marcin Siodelski 13 years ago
parent
commit
b830618925
2 changed files with 62 additions and 8 deletions
  1. 16 8
      src/lib/dhcp/iface_mgr.cc
  2. 46 0
      src/lib/dhcp/tests/iface_mgr_unittest.cc

+ 16 - 8
src/lib/dhcp/iface_mgr.cc

@@ -394,7 +394,9 @@ int IfaceMgr::openSocket(const std::string& ifname, const IOAddress& addr,
     }
 }
 
-int IfaceMgr::openSocketFromIface(const std::string& ifname, const uint16_t port, const uint8_t family) {
+int IfaceMgr::openSocketFromIface(const std::string& ifname,
+                                  const uint16_t port,
+                                  const uint8_t family) {
     int sock = 0;
     for (IfaceCollection::iterator iface=ifaces_.begin();
          iface!=ifaces_.end();
@@ -426,7 +428,8 @@ int IfaceMgr::openSocketFromIface(const std::string& ifname, const uint16_t port
     return (sock);
 }
 
-int IfaceMgr::openSocketFromAddr(const std::string& addr_name, const uint16_t port) {
+int IfaceMgr::openSocketFromAddr(const std::string& addr_name,
+                                 const uint16_t port) {
     int sock = 0;
     for (IfaceCollection::iterator iface=ifaces_.begin();
          iface!=ifaces_.end();
@@ -444,7 +447,8 @@ int IfaceMgr::openSocketFromAddr(const std::string& addr_name, const uint16_t po
                     continue;
                 }
             } catch (const isc::asiolink::IOError& e) {
-                cout << "Failed to open socket from address: " << e.what() << endl;
+                cout << "Failed to open socket from address: "
+                     << e.what() << endl;
                 return (sock);
             }
 
@@ -456,15 +460,19 @@ int IfaceMgr::openSocketFromAddr(const std::string& addr_name, const uint16_t po
         }
     }
     return (sock);
-    
+
 }
 
-    /*int IfaceMgr::openSocketFromRemoteAddr(const std::string& remote_addr_name,
+int IfaceMgr::openSocketFromRemoteAddr(const std::string&,
+                                       const uint16_t,
+                                       const uint8_t) {
+    /*
+int IfaceMgr::openSocketFromRemoteAddr(const std::string& remote_addr_name,
                                        const uint16_t port,
-                                       const uint8_t family) {
-    return 0;
-    }*/
+                                       const uint8_t family) {*/
 
+    return 0;
+}
 
 int IfaceMgr::openSocket4(Iface& iface, const IOAddress& addr, uint16_t port) {
 

+ 46 - 0
src/lib/dhcp/tests/iface_mgr_unittest.cc

@@ -240,6 +240,52 @@ TEST_F(IfaceMgrTest, sockets6) {
     delete ifacemgr;
 }
 
+TEST_F(IfaceMgrTest, socketsFromIface) {
+    NakedIfaceMgr* ifacemgr = new NakedIfaceMgr();
+
+    // open v6 socket on loopback interface and bind to 10547 port
+    int socket1 = ifacemgr->openSocketFromIface(LOOPBACK, 10547, AF_INET6);
+    EXPECT_GT(socket1, 0);
+
+    // open v4 sicket on loopback interface and bind to 10548 port
+    int socket2 = ifacemgr->openSocketFromIface(LOOPBACK, 10547, AF_INET);
+    EXPECT_GT(socket2, 0);
+
+    close(socket1);
+    close(socket2);
+
+    delete ifacemgr;
+}
+
+
+TEST_F(IfaceMgrTest, socketsFromAddr) {
+    NakedIfaceMgr* ifacemgr = new NakedIfaceMgr();
+
+    // open v6 socket on loopback address and bind to 10547 port
+    int socket1 = ifacemgr->openSocketFromAddr("::1", 10547);
+    EXPECT_GT(socket1, 0);
+
+    // open v4 socket on loopback address and bind to 10548 port
+    int socket2 = ifacemgr->openSocketFromAddr("127.0.0.1", 10548);
+    EXPECT_GT(socket2, 0);
+
+    close(socket1);
+    close(socket2);
+
+    delete ifacemgr;
+}
+
+TEST_F(IfaceMgrTest, socketsFromRemoteAddr) {
+    NakedIfaceMgr* ifacemgr = new NakedIfaceMgr();
+
+    int socket1 = ifacemgr->openSocketFromRemoteAddr("::1", 10547, AF_INET6);
+    EXPECT_GT(socket1, 0);
+
+    close(socket1);
+
+    delete ifacemgr;
+}
+
 // TODO: disabled due to other naming on various systems
 // (lo in Linux, lo0 in BSD systems)
 TEST_F(IfaceMgrTest, DISABLED_sockets6Mcast) {