• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include "node_sockaddr-inl.h"
2 #include "gtest/gtest.h"
3 
4 using node::SocketAddress;
5 
TEST(SocketAddress,SocketAddress)6 TEST(SocketAddress, SocketAddress) {
7   CHECK(SocketAddress::is_numeric_host("123.123.123.123"));
8   CHECK(!SocketAddress::is_numeric_host("localhost"));
9 
10   sockaddr_storage storage;
11   sockaddr_storage storage2;
12   SocketAddress::ToSockAddr(AF_INET, "123.123.123.123", 443, &storage);
13   SocketAddress::ToSockAddr(AF_INET, "1.1.1.1", 80, &storage2);
14 
15   SocketAddress addr(reinterpret_cast<const sockaddr*>(&storage));
16   SocketAddress addr2(reinterpret_cast<const sockaddr*>(&storage2));
17 
18   CHECK_EQ(addr.length(), sizeof(sockaddr_in));
19   CHECK_EQ(addr.family(), AF_INET);
20   CHECK_EQ(addr.address(), "123.123.123.123");
21   CHECK_EQ(addr.port(), 443);
22 
23   addr.set_flow_label(12345);
24   CHECK_EQ(addr.flow_label(), 0);
25 
26   CHECK_NE(addr, addr2);
27   CHECK_EQ(addr, addr);
28 
29   CHECK_EQ(SocketAddress::Hash()(addr), SocketAddress::Hash()(addr));
30   CHECK_NE(SocketAddress::Hash()(addr), SocketAddress::Hash()(addr2));
31 
32   addr.Update(reinterpret_cast<uint8_t*>(&storage2), sizeof(sockaddr_in));
33   CHECK_EQ(addr.length(), sizeof(sockaddr_in));
34   CHECK_EQ(addr.family(), AF_INET);
35   CHECK_EQ(addr.address(), "1.1.1.1");
36   CHECK_EQ(addr.port(), 80);
37 
38   SocketAddress::Map<size_t> map;
39   map[addr]++;
40   map[addr]++;
41   CHECK_EQ(map[addr], 2);
42 }
43 
TEST(SocketAddress,SocketAddressIPv6)44 TEST(SocketAddress, SocketAddressIPv6) {
45   sockaddr_storage storage;
46   SocketAddress::ToSockAddr(AF_INET6, "::1", 443, &storage);
47 
48   SocketAddress addr(reinterpret_cast<const sockaddr*>(&storage));
49 
50   CHECK_EQ(addr.length(), sizeof(sockaddr_in6));
51   CHECK_EQ(addr.family(), AF_INET6);
52   CHECK_EQ(addr.address(), "::1");
53   CHECK_EQ(addr.port(), 443);
54 
55   addr.set_flow_label(12345);
56   CHECK_EQ(addr.flow_label(), 12345);
57 }
58