| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2006 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2006 The WebRTC Project Authors. All rights reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 EXPECT_EQ(post_ipv4.s_addr, pre_ipv4.s_addr); | 142 EXPECT_EQ(post_ipv4.s_addr, pre_ipv4.s_addr); |
| 143 } else if (post_ip.family() == AF_INET6) { | 143 } else if (post_ip.family() == AF_INET6) { |
| 144 in6_addr post_ip6 = post_ip.ipv6_address(); | 144 in6_addr post_ip6 = post_ip.ipv6_address(); |
| 145 in6_addr pre_ip6 = pre_ip.ipv6_address(); | 145 in6_addr pre_ip6 = pre_ip.ipv6_address(); |
| 146 uint32* post_as_ints = reinterpret_cast<uint32*>(&post_ip6.s6_addr); | 146 uint32* post_as_ints = reinterpret_cast<uint32*>(&post_ip6.s6_addr); |
| 147 uint32* pre_as_ints = reinterpret_cast<uint32*>(&pre_ip6.s6_addr); | 147 uint32* pre_as_ints = reinterpret_cast<uint32*>(&pre_ip6.s6_addr); |
| 148 EXPECT_EQ(post_as_ints[3], pre_as_ints[3]); | 148 EXPECT_EQ(post_as_ints[3], pre_as_ints[3]); |
| 149 } | 149 } |
| 150 } | 150 } |
| 151 | 151 |
| 152 // Test a client can bind to the any address, and all sent packets will have |
| 153 // the default route as the source address. Also, it can receive packets sent |
| 154 // to the default route. |
| 155 void TestDefaultRoute(const IPAddress& default_route) { |
| 156 ss_->SetDefaultRoute(default_route); |
| 157 |
| 158 // Create client1 bound to the any address. |
| 159 AsyncSocket* socket = |
| 160 ss_->CreateAsyncSocket(default_route.family(), SOCK_DGRAM); |
| 161 socket->Bind(EmptySocketAddressWithFamily(default_route.family())); |
| 162 SocketAddress client1_any_addr = socket->GetLocalAddress(); |
| 163 EXPECT_TRUE(client1_any_addr.IsAnyIP()); |
| 164 TestClient* client1 = new TestClient(new AsyncUDPSocket(socket)); |
| 165 |
| 166 // Create client2 bound to the default route. |
| 167 AsyncSocket* socket2 = |
| 168 ss_->CreateAsyncSocket(default_route.family(), SOCK_DGRAM); |
| 169 socket2->Bind(SocketAddress(default_route, 0)); |
| 170 SocketAddress client2_addr = socket2->GetLocalAddress(); |
| 171 EXPECT_FALSE(client2_addr.IsAnyIP()); |
| 172 TestClient* client2 = new TestClient(new AsyncUDPSocket(socket2)); |
| 173 |
| 174 // Client1 sends to client2, client2 should see the default route as |
| 175 // client1's address. |
| 176 SocketAddress client1_addr; |
| 177 EXPECT_EQ(6, client1->SendTo("bizbaz", 6, client2_addr)); |
| 178 EXPECT_TRUE(client2->CheckNextPacket("bizbaz", 6, &client1_addr)); |
| 179 EXPECT_EQ(client1_addr, |
| 180 SocketAddress(default_route, client1_any_addr.port())); |
| 181 |
| 182 // Client2 can send back to client1's default route address. |
| 183 EXPECT_EQ(3, client2->SendTo("foo", 3, client1_addr)); |
| 184 EXPECT_TRUE(client1->CheckNextPacket("foo", 3, &client2_addr)); |
| 185 } |
| 186 |
| 152 void BasicTest(const SocketAddress& initial_addr) { | 187 void BasicTest(const SocketAddress& initial_addr) { |
| 153 AsyncSocket* socket = ss_->CreateAsyncSocket(initial_addr.family(), | 188 AsyncSocket* socket = ss_->CreateAsyncSocket(initial_addr.family(), |
| 154 SOCK_DGRAM); | 189 SOCK_DGRAM); |
| 155 socket->Bind(initial_addr); | 190 socket->Bind(initial_addr); |
| 156 SocketAddress server_addr = socket->GetLocalAddress(); | 191 SocketAddress server_addr = socket->GetLocalAddress(); |
| 157 // Make sure VSS didn't switch families on us. | 192 // Make sure VSS didn't switch families on us. |
| 158 EXPECT_EQ(server_addr.family(), initial_addr.family()); | 193 EXPECT_EQ(server_addr.family(), initial_addr.family()); |
| 159 | 194 |
| 160 TestClient* client1 = new TestClient(new AsyncUDPSocket(socket)); | 195 TestClient* client1 = new TestClient(new AsyncUDPSocket(socket)); |
| 161 AsyncSocket* socket2 = | 196 AsyncSocket* socket2 = |
| (...skipping 622 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 784 TEST_F(VirtualSocketServerTest, basic_v4) { | 819 TEST_F(VirtualSocketServerTest, basic_v4) { |
| 785 SocketAddress ipv4_test_addr(IPAddress(INADDR_ANY), 5000); | 820 SocketAddress ipv4_test_addr(IPAddress(INADDR_ANY), 5000); |
| 786 BasicTest(ipv4_test_addr); | 821 BasicTest(ipv4_test_addr); |
| 787 } | 822 } |
| 788 | 823 |
| 789 TEST_F(VirtualSocketServerTest, basic_v6) { | 824 TEST_F(VirtualSocketServerTest, basic_v6) { |
| 790 SocketAddress ipv6_test_addr(IPAddress(in6addr_any), 5000); | 825 SocketAddress ipv6_test_addr(IPAddress(in6addr_any), 5000); |
| 791 BasicTest(ipv6_test_addr); | 826 BasicTest(ipv6_test_addr); |
| 792 } | 827 } |
| 793 | 828 |
| 829 TEST_F(VirtualSocketServerTest, TestDefaultRoute_v4) { |
| 830 IPAddress ipv4_default_addr(0x01020304); |
| 831 TestDefaultRoute(ipv4_default_addr); |
| 832 } |
| 833 |
| 834 TEST_F(VirtualSocketServerTest, TestDefaultRoute_v6) { |
| 835 IPAddress ipv6_default_addr; |
| 836 EXPECT_TRUE( |
| 837 IPFromString("2401:fa00:4:1000:be30:5bff:fee5:c3", &ipv6_default_addr)); |
| 838 TestDefaultRoute(ipv6_default_addr); |
| 839 } |
| 840 |
| 794 TEST_F(VirtualSocketServerTest, connect_v4) { | 841 TEST_F(VirtualSocketServerTest, connect_v4) { |
| 795 ConnectTest(kIPv4AnyAddress); | 842 ConnectTest(kIPv4AnyAddress); |
| 796 } | 843 } |
| 797 | 844 |
| 798 TEST_F(VirtualSocketServerTest, connect_v6) { | 845 TEST_F(VirtualSocketServerTest, connect_v6) { |
| 799 ConnectTest(kIPv6AnyAddress); | 846 ConnectTest(kIPv6AnyAddress); |
| 800 } | 847 } |
| 801 | 848 |
| 802 TEST_F(VirtualSocketServerTest, connect_to_non_listener_v4) { | 849 TEST_F(VirtualSocketServerTest, connect_to_non_listener_v4) { |
| 803 ConnectToNonListenerTest(kIPv4AnyAddress); | 850 ConnectToNonListenerTest(kIPv4AnyAddress); |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 994 << " N=" << kTestSamples[sidx]; | 1041 << " N=" << kTestSamples[sidx]; |
| 995 EXPECT_NEAR(kStdDev, stddev, 0.1 * kStdDev) | 1042 EXPECT_NEAR(kStdDev, stddev, 0.1 * kStdDev) |
| 996 << "M=" << kTestMean[midx] | 1043 << "M=" << kTestMean[midx] |
| 997 << " SD=" << kStdDev | 1044 << " SD=" << kStdDev |
| 998 << " N=" << kTestSamples[sidx]; | 1045 << " N=" << kTestSamples[sidx]; |
| 999 delete f; | 1046 delete f; |
| 1000 } | 1047 } |
| 1001 } | 1048 } |
| 1002 } | 1049 } |
| 1003 } | 1050 } |
| OLD | NEW |