TEST(SocketAddress, SetFromStrings) { TSocketAddress addr; // Set from a numeric port string addr.setFromLocalPort("1234"); EXPECT_EQ(addr.getPort(), 1234); // setFromLocalPort() should not accept service names EXPECT_THROW(addr.setFromLocalPort("http"), TTransportException); // Call setFromLocalIpPort() with just a port, no IP addr.setFromLocalIpPort("80"); EXPECT_EQ(addr.getPort(), 80); // Call setFromLocalIpPort() with an IP and port. addr.setFromLocalIpPort("127.0.0.1:4321"); EXPECT_EQ(addr.getAddressStr(), "127.0.0.1"); EXPECT_EQ(addr.getPort(), 4321); // setFromIpPort() without an address should fail EXPECT_THROW(addr.setFromIpPort("4321"), TTransportException); // Call setFromIpPort() with an IPv6 address and port addr.setFromIpPort("2620:0:1cfe:face:b00c::3:65535"); EXPECT_EQ(addr.getFamily(), AF_INET6); EXPECT_EQ(addr.getAddressStr(), "2620:0:1cfe:face:b00c::3"); EXPECT_EQ(addr.getPort(), 65535); // Call setFromIpPort() with an IPv4 address and port addr.setFromIpPort("1.2.3.4:9999"); EXPECT_EQ(addr.getFamily(), AF_INET); EXPECT_EQ(addr.getAddressStr(), "1.2.3.4"); EXPECT_EQ(addr.getPort(), 9999); }
TEST(SSLUtilsTest, ValidatePeerCertNamesIPSanityTest) { X509Cert cert("thrift/lib/cpp/test/ssl/tests-cert.pem"); TSocketAddress addr; addr.setFromIpPort("127.0.0.1", 1); EXPECT_TRUE(OpenSSLUtils::validatePeerCertNames( cert.getX509(), addr.getAddress(), addr.getActualSize())); addr.setFromIpPort("::1", 1); EXPECT_TRUE(OpenSSLUtils::validatePeerCertNames( cert.getX509(), addr.getAddress(), addr.getActualSize())); addr.setFromIpPort("127.0.0.2", 1); EXPECT_FALSE(OpenSSLUtils::validatePeerCertNames( cert.getX509(), addr.getAddress(), addr.getActualSize())); addr.setFromIpPort("::2", 1); EXPECT_FALSE(OpenSSLUtils::validatePeerCertNames( cert.getX509(), addr.getAddress(), addr.getActualSize())); }
TEST(SocketAddress, SetFromIpv4) { TSocketAddress addr; addr.setFromIpPort("255.254.253.252", 8888); EXPECT_EQ(addr.getFamily(), AF_INET); EXPECT_EQ(addr.getAddressStr(), "255.254.253.252"); EXPECT_EQ(addr.getPort(), 8888); sockaddr_storage addrStorage; addr.getAddress(&addrStorage); const sockaddr_in* inaddr = reinterpret_cast<sockaddr_in*>(&addrStorage); EXPECT_EQ(inaddr->sin_addr.s_addr, htonl(0xfffefdfc)); EXPECT_EQ(inaddr->sin_port, htons(8888)); }
TEST(SocketAddress, IPv4ToStringConversion) { // testing addresses *.5.5.5, 5.*.5.5, 5.5.*.5, 5.5.5.* TSocketAddress addr; for (int pos = 0; pos < 4; ++pos) { for (int i = 0; i < 256; ++i) { int fragments[] = {5,5,5,5}; fragments[pos] = i; std::ostringstream ss; ss << fragments[0] << "." << fragments[1] << "." << fragments[2] << "." << fragments[3]; string ipString = ss.str(); addr.setFromIpPort(ipString, 1234); EXPECT_EQ(addr.getAddressStr(), ipString); } } }