Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright 2009 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2009 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 766 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 777 ASSERT_EQ(2U, ports_.size()); | 777 ASSERT_EQ(2U, ports_.size()); |
| 778 EXPECT_PRED5(CheckCandidate, candidates_[0], | 778 EXPECT_PRED5(CheckCandidate, candidates_[0], |
| 779 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); | 779 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); |
| 780 EXPECT_PRED5(CheckCandidate, candidates_[1], | 780 EXPECT_PRED5(CheckCandidate, candidates_[1], |
| 781 cricket::ICE_CANDIDATE_COMPONENT_RTP, "stun", "udp", | 781 cricket::ICE_CANDIDATE_COMPONENT_RTP, "stun", "udp", |
| 782 rtc::SocketAddress(kNatAddr.ipaddr(), 0)); | 782 rtc::SocketAddress(kNatAddr.ipaddr(), 0)); |
| 783 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); | 783 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); |
| 784 EXPECT_EQ(3U, candidates_.size()); | 784 EXPECT_EQ(3U, candidates_.size()); |
| 785 } | 785 } |
| 786 | 786 |
| 787 // Test TURN port in shared socket mode with UDP and TCP TURN server adderesses. | 787 // Test TURN port in shared socket mode with UDP and TCP TURN server addresses. |
| 788 TEST_F(PortAllocatorTest, TestSharedSocketWithoutNatUsingTurn) { | 788 TEST_F(PortAllocatorTest, TestSharedSocketWithoutNatUsingTurn) { |
| 789 turn_server_.AddInternalSocket(kTurnTcpIntAddr, cricket::PROTO_TCP); | 789 turn_server_.AddInternalSocket(kTurnTcpIntAddr, cricket::PROTO_TCP); |
| 790 AddInterface(kClientAddr); | 790 AddInterface(kClientAddr); |
| 791 allocator_.reset(new cricket::BasicPortAllocator(&network_manager_)); | 791 allocator_.reset(new cricket::BasicPortAllocator(&network_manager_)); |
| 792 | 792 |
| 793 AddTurnServers(kTurnUdpIntAddr, kTurnTcpIntAddr); | 793 AddTurnServers(kTurnUdpIntAddr, kTurnTcpIntAddr); |
| 794 | 794 |
| 795 allocator_->set_step_delay(cricket::kMinimumStepDelay); | 795 allocator_->set_step_delay(cricket::kMinimumStepDelay); |
| 796 allocator_->set_flags(allocator().flags() | | 796 allocator_->set_flags(allocator().flags() | |
| 797 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | | 797 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 909 rtc::SocketAddress(kTurnUdpExtAddr.ipaddr(), 0)); | 909 rtc::SocketAddress(kTurnUdpExtAddr.ipaddr(), 0)); |
| 910 EXPECT_EQ(candidates_[2].related_address(), candidates_[1].address()); | 910 EXPECT_EQ(candidates_[2].related_address(), candidates_[1].address()); |
| 911 | 911 |
| 912 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); | 912 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); |
| 913 EXPECT_EQ(3U, candidates_.size()); | 913 EXPECT_EQ(3U, candidates_.size()); |
| 914 // Local port will be created first and then TURN port. | 914 // Local port will be created first and then TURN port. |
| 915 EXPECT_EQ(2U, ports_[0]->Candidates().size()); | 915 EXPECT_EQ(2U, ports_[0]->Candidates().size()); |
| 916 EXPECT_EQ(1U, ports_[1]->Candidates().size()); | 916 EXPECT_EQ(1U, ports_[1]->Candidates().size()); |
| 917 } | 917 } |
| 918 | 918 |
| 919 // Test that even when both a STUN and TURN server are configured, the TURN | |
| 920 // server is used as a STUN server and we get a 'stun' candidate. | |
| 921 TEST_F(PortAllocatorTest, TestSharedSocketWithNatUsingTurnAndStun) { | |
| 922 AddInterface(kClientAddr); | |
| 923 // Configure with STUN server but destroy it, so we can ensure that it's | |
| 924 // the TURN server actually being used as a STUN server. | |
| 925 ResetWithNatServer(kStunAddr); | |
| 926 stun_server_.reset(); | |
| 927 AddTurnServers(kTurnUdpIntAddr, rtc::SocketAddress()); | |
| 928 | |
| 929 // Must set the step delay to 0 to make sure the relay allocation phase is | |
| 930 // started before the STUN candidates are obtained, so that the STUN binding | |
| 931 // response is processed when both StunPort and TurnPort exist to reproduce | |
| 932 // webrtc issue 3537. | |
| 933 allocator_->set_step_delay(0); | |
| 934 allocator_->set_flags(allocator().flags() | | |
| 935 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | | |
| 936 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET | | |
| 937 cricket::PORTALLOCATOR_DISABLE_TCP); | |
| 938 | |
| 939 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | |
| 940 session_->StartGettingPorts(); | |
| 941 | |
| 942 ASSERT_EQ_WAIT(3U, candidates_.size(), kDefaultAllocationTimeout); | |
| 943 EXPECT_PRED5(CheckCandidate, candidates_[0], | |
| 944 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); | |
| 945 EXPECT_PRED5(CheckCandidate, candidates_[1], | |
| 946 cricket::ICE_CANDIDATE_COMPONENT_RTP, "stun", "udp", | |
| 947 rtc::SocketAddress(kNatAddr.ipaddr(), 0)); | |
| 948 EXPECT_PRED5(CheckCandidate, candidates_[2], | |
| 949 cricket::ICE_CANDIDATE_COMPONENT_RTP, "relay", "udp", | |
| 950 rtc::SocketAddress(kTurnUdpExtAddr.ipaddr(), 0)); | |
| 951 EXPECT_EQ(candidates_[2].related_address(), candidates_[1].address()); | |
| 952 | |
| 953 // Don't bother waiting for STUN timeout, since we already verified | |
|
juberti1
2015/06/27 04:39:54
I don't understand this. Don't we want to get the
Taylor Brandstetter
2015/06/27 17:05:49
In this case the main thing I wanted to test was t
juberti1
2015/06/29 18:40:00
OK, I see what you are saying. I think the 2-level
Taylor Brandstetter
2015/06/29 20:18:34
The 3537 comment and step delay aren't really need
| |
| 954 // that we got a STUN candidate from the TURN server. | |
| 955 } | |
| 956 | |
| 957 // Test that when only a TCP TURN server is available, we do NOT use it as | |
| 958 // a UDP STUN server, as this could leak our IP address. Thus we should only | |
| 959 // expect two ports, a UDPPort and TurnPort. | |
|
juberti1
2015/06/27 04:39:54
You'll only have two ports anytime you use shared
Taylor Brandstetter
2015/06/27 17:05:49
That's why I had intended to use non-shared socket
| |
| 960 TEST_F(PortAllocatorTest, TestNonSharedSocketWithoutNatUsingTurnTcp) { | |
|
juberti1
2015/06/27 04:39:54
The socket is shared, so this name is confusing
Taylor Brandstetter
2015/06/27 17:05:50
As mentioned above, fixed in patch set 2.
| |
| 961 turn_server_.AddInternalSocket(kTurnTcpIntAddr, cricket::PROTO_TCP); | |
| 962 AddInterface(kClientAddr); | |
| 963 allocator_.reset(new cricket::BasicPortAllocator(&network_manager_)); | |
| 964 | |
| 965 AddTurnServers(rtc::SocketAddress(), kTurnTcpIntAddr); | |
| 966 | |
| 967 allocator_->set_step_delay(cricket::kMinimumStepDelay); | |
| 968 allocator_->set_flags(allocator().flags() | | |
| 969 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | | |
| 970 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET | | |
| 971 cricket::PORTALLOCATOR_DISABLE_TCP); | |
| 972 | |
| 973 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | |
| 974 session_->StartGettingPorts(); | |
| 975 | |
| 976 ASSERT_EQ_WAIT(2U, candidates_.size(), kDefaultAllocationTimeout); | |
| 977 ASSERT_EQ(2U, ports_.size()); | |
| 978 EXPECT_PRED5(CheckCandidate, candidates_[0], | |
| 979 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); | |
| 980 EXPECT_PRED5(CheckCandidate, candidates_[1], | |
| 981 cricket::ICE_CANDIDATE_COMPONENT_RTP, "relay", "udp", | |
| 982 rtc::SocketAddress(kTurnUdpExtAddr.ipaddr(), 0)); | |
| 983 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); | |
| 984 EXPECT_EQ(2U, candidates_.size()); | |
| 985 EXPECT_EQ(1U, ports_[0]->Candidates().size()); | |
| 986 EXPECT_EQ(1U, ports_[1]->Candidates().size()); | |
| 987 } | |
| 988 | |
| 989 // Test that even when PORTALLOCATOR_ENABLE_SHARED_SOCKET is NOT enabled, the | |
| 990 // TURN server is used as the STUN server and we get 'local', 'stun', and | |
| 991 // 'relay' candidates. | |
| 992 TEST_F(PortAllocatorTest, TestNonSharedSocketWithNatUsingTurnAsStun) { | |
| 993 AddInterface(kClientAddr); | |
| 994 // Use an empty SocketAddress to add a NAT without STUN server. | |
| 995 ResetWithNatServer(SocketAddress()); | |
| 996 AddTurnServers(kTurnUdpIntAddr, rtc::SocketAddress()); | |
| 997 | |
| 998 allocator_->set_step_delay(0); | |
| 999 allocator_->set_flags(allocator().flags() | | |
| 1000 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | | |
| 1001 cricket::PORTALLOCATOR_DISABLE_TCP); | |
| 1002 | |
| 1003 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | |
| 1004 session_->StartGettingPorts(); | |
| 1005 | |
| 1006 ASSERT_EQ_WAIT(3U, candidates_.size(), kDefaultAllocationTimeout); | |
| 1007 ASSERT_EQ(3U, ports_.size()); | |
| 1008 EXPECT_PRED5(CheckCandidate, candidates_[0], | |
| 1009 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); | |
| 1010 EXPECT_PRED5(CheckCandidate, candidates_[1], | |
| 1011 cricket::ICE_CANDIDATE_COMPONENT_RTP, "stun", "udp", | |
| 1012 rtc::SocketAddress(kNatAddr.ipaddr(), 0)); | |
| 1013 EXPECT_PRED5(CheckCandidate, candidates_[2], | |
| 1014 cricket::ICE_CANDIDATE_COMPONENT_RTP, "relay", "udp", | |
| 1015 rtc::SocketAddress(kTurnUdpExtAddr.ipaddr(), 0)); | |
| 1016 // Not using shared socket, so the STUN request's server reflexive address | |
| 1017 // should be different than the TURN request's server reflexive address. | |
| 1018 EXPECT_NE(candidates_[2].related_address(), candidates_[1].address()); | |
| 1019 | |
| 1020 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); | |
| 1021 EXPECT_EQ(3U, candidates_.size()); | |
| 1022 EXPECT_EQ(1U, ports_[0]->Candidates().size()); | |
| 1023 EXPECT_EQ(1U, ports_[1]->Candidates().size()); | |
| 1024 EXPECT_EQ(1U, ports_[2]->Candidates().size()); | |
| 1025 } | |
| 1026 | |
| 919 // This test verifies when PORTALLOCATOR_ENABLE_SHARED_SOCKET flag is enabled | 1027 // This test verifies when PORTALLOCATOR_ENABLE_SHARED_SOCKET flag is enabled |
| 920 // and fail to generate STUN candidate, local UDP candidate is generated | 1028 // and fail to generate STUN candidate, local UDP candidate is generated |
| 921 // properly. | 1029 // properly. |
| 922 TEST_F(PortAllocatorTest, TestSharedSocketNoUdpAllowed) { | 1030 TEST_F(PortAllocatorTest, TestSharedSocketNoUdpAllowed) { |
| 923 allocator().set_flags(allocator().flags() | | 1031 allocator().set_flags(allocator().flags() | |
| 924 cricket::PORTALLOCATOR_DISABLE_RELAY | | 1032 cricket::PORTALLOCATOR_DISABLE_RELAY | |
| 925 cricket::PORTALLOCATOR_DISABLE_TCP | | 1033 cricket::PORTALLOCATOR_DISABLE_TCP | |
| 926 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | | 1034 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | |
| 927 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); | 1035 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); |
| 928 fss_->AddRule(false, rtc::FP_UDP, rtc::FD_ANY, kClientAddr); | 1036 fss_->AddRule(false, rtc::FP_UDP, rtc::FD_ANY, kClientAddr); |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1045 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 1153 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 1046 session_->StartGettingPorts(); | 1154 session_->StartGettingPorts(); |
| 1047 ASSERT_EQ_WAIT(7U, candidates_.size(), kDefaultAllocationTimeout); | 1155 ASSERT_EQ_WAIT(7U, candidates_.size(), kDefaultAllocationTimeout); |
| 1048 EXPECT_EQ(4U, ports_.size()); | 1156 EXPECT_EQ(4U, ports_.size()); |
| 1049 | 1157 |
| 1050 auto it = ports_.begin(); | 1158 auto it = ports_.begin(); |
| 1051 for (; it != ports_.end(); ++it) { | 1159 for (; it != ports_.end(); ++it) { |
| 1052 (reinterpret_cast<cricket::Port*>(*it))->Destroy(); | 1160 (reinterpret_cast<cricket::Port*>(*it))->Destroy(); |
| 1053 } | 1161 } |
| 1054 } | 1162 } |
| OLD | NEW |