fix Baton.h typo
[folly.git] / folly / test / SocketAddressTest.cpp
index 39eb9820e16be285719e5a7b004aa60c8acb8a12..5125cc3797ac0f42badc3579c0f30ea66eb35f29 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014 Facebook, Inc.
+ * Copyright 2015 Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -60,6 +60,23 @@ TEST(SocketAddress, IPv4ToStringConversion) {
   }
 }
 
+TEST(SocketAddress, SetFromIpAddressPort) {
+  SocketAddress addr;
+  folly::IPAddress ipAddr("123.234.0.23");
+  addr.setFromIpAddrPort(ipAddr, 8888);
+  EXPECT_EQ(addr.getFamily(), AF_INET);
+  EXPECT_EQ(addr.getAddressStr(), "123.234.0.23");
+  EXPECT_EQ(addr.getIPAddress(), ipAddr);
+  EXPECT_EQ(addr.getPort(), 8888);
+
+  folly::IPAddress ip6Addr("2620:0:1cfe:face:b00c::3");
+  SocketAddress addr6(ip6Addr, 8888);
+  EXPECT_EQ(addr6.getFamily(), AF_INET6);
+  EXPECT_EQ(addr6.getAddressStr(), "2620:0:1cfe:face:b00c::3");
+  EXPECT_EQ(addr6.getIPAddress(), ip6Addr);
+  EXPECT_EQ(addr6.getPort(), 8888);
+}
+
 TEST(SocketAddress, SetFromIpv4) {
   SocketAddress addr;
   addr.setFromIpPort("255.254.253.252", 8888);
@@ -139,6 +156,21 @@ TEST(SocketAddress, SetFromStrings) {
   EXPECT_EQ(addr.getFamily(), AF_INET);
   EXPECT_EQ(addr.getAddressStr(), "1.2.3.4");
   EXPECT_EQ(addr.getPort(), 9999);
+
+  // Call setFromIpPort() with a bracketed IPv6
+  addr.setFromIpPort("[::]:1234");
+  EXPECT_EQ(addr.getFamily(), AF_INET6);
+  EXPECT_EQ(addr.getAddressStr(), "::");
+  EXPECT_EQ(addr.getPort(), 1234);
+
+  // Call setFromIpPort() with a bracketed IPv6
+  addr.setFromIpPort("[9:8::2]:1234");
+  EXPECT_EQ(addr.getFamily(), AF_INET6);
+  EXPECT_EQ(addr.getAddressStr(), "9:8::2");
+  EXPECT_EQ(addr.getPort(), 1234);
+
+  // Call setFromIpPort() with a bracketed IPv6 and no port
+  EXPECT_THROW(addr.setFromIpPort("[::]"), std::system_error);
 }
 
 TEST(SocketAddress, EqualityAndHash) {
@@ -657,9 +689,11 @@ void testSetFromSocket(const SocketAddress *serverBindAddr,
 
   sockaddr_storage acceptAddr;
   socklen_t acceptAddrLen = sizeof(acceptAddr);
-  int serverSock = accept(listenSock, reinterpret_cast<sockaddr*>(&acceptAddr), &acceptAddrLen);
+  int serverSock = accept(listenSock,
+      reinterpret_cast<sockaddr*>(&acceptAddr), &acceptAddrLen);
   REQUIRE_ERRNO(serverSock > 0, "failed to accept");
-  acceptAddrRet->setFromSockaddr(reinterpret_cast<sockaddr*>(&acceptAddr), acceptAddrLen);
+  acceptAddrRet->setFromSockaddr(
+      reinterpret_cast<sockaddr*>(&acceptAddr), acceptAddrLen);
 
   serverAddrRet->setFromLocalAddress(serverSock);
   serverPeerAddrRet->setFromPeerAddress(serverSock);