]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[1957] Added unit tests for new open socket methods.
authorMarcin Siodelski <marcin@isc.org>
Wed, 13 Jun 2012 16:48:17 +0000 (18:48 +0200)
committerMarcin Siodelski <marcin@isc.org>
Wed, 13 Jun 2012 16:50:24 +0000 (18:50 +0200)
src/lib/dhcp/iface_mgr.cc
src/lib/dhcp/tests/iface_mgr_unittest.cc

index aaad879865ac680619f64324c66f2204a066bb7f..345acc7e02dd82927bb3e3810353be9b3732e8d0 100644 (file)
@@ -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) {
 
index 36104afc987994fc01af717981dc29323b076391..e5ce2effa7306a2964730050580fd8cf9791da01 100644 (file)
@@ -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) {