| 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 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 uint32 total_ports, | 246 uint32 total_ports, |
| 247 const rtc::IPAddress& host_candidate_addr, | 247 const rtc::IPAddress& host_candidate_addr, |
| 248 const rtc::IPAddress& stun_candidate_addr, | 248 const rtc::IPAddress& stun_candidate_addr, |
| 249 const rtc::IPAddress& relay_candidate_udp_transport_addr, | 249 const rtc::IPAddress& relay_candidate_udp_transport_addr, |
| 250 const rtc::IPAddress& relay_candidate_tcp_transport_addr) { | 250 const rtc::IPAddress& relay_candidate_tcp_transport_addr) { |
| 251 if (!session_) { | 251 if (!session_) { |
| 252 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 252 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 253 } | 253 } |
| 254 session_->set_flags(session_->flags() | | 254 session_->set_flags(session_->flags() | |
| 255 cricket::PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION | | 255 cricket::PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION | |
| 256 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | |
| 256 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); | 257 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); |
| 257 allocator().set_allow_tcp_listen(false); | 258 allocator().set_allow_tcp_listen(false); |
| 258 session_->StartGettingPorts(); | 259 session_->StartGettingPorts(); |
| 259 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); | 260 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); |
| 260 | 261 |
| 261 uint32 total_candidates = 0; | 262 uint32 total_candidates = 0; |
| 262 if (!host_candidate_addr.IsNil()) { | 263 if (!host_candidate_addr.IsNil()) { |
| 263 EXPECT_PRED5(CheckCandidate, candidates_[total_candidates], | 264 EXPECT_PRED5(CheckCandidate, candidates_[total_candidates], |
| 264 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", | 265 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", |
| 265 rtc::SocketAddress(host_candidate_addr, 0)); | 266 rtc::SocketAddress(host_candidate_addr, 0)); |
| (...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 769 for (size_t i = 0; i < candidates_.size(); ++i) { | 770 for (size_t i = 0; i < candidates_.size(); ++i) { |
| 770 EXPECT_EQ(std::string(cricket::RELAY_PORT_TYPE), candidates_[i].type()); | 771 EXPECT_EQ(std::string(cricket::RELAY_PORT_TYPE), candidates_[i].type()); |
| 771 EXPECT_EQ( | 772 EXPECT_EQ( |
| 772 candidates_[0].related_address(), | 773 candidates_[0].related_address(), |
| 773 rtc::EmptySocketAddressWithFamily(candidates_[0].address().family())); | 774 rtc::EmptySocketAddressWithFamily(candidates_[0].address().family())); |
| 774 } | 775 } |
| 775 } | 776 } |
| 776 | 777 |
| 777 TEST_F(PortAllocatorTest, TestCandidateFilterWithHostOnly) { | 778 TEST_F(PortAllocatorTest, TestCandidateFilterWithHostOnly) { |
| 778 AddInterface(kClientAddr); | 779 AddInterface(kClientAddr); |
| 779 allocator().set_flags(cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); | 780 allocator().set_flags(cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | |
| 781 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); |
| 780 allocator().set_candidate_filter(cricket::CF_HOST); | 782 allocator().set_candidate_filter(cricket::CF_HOST); |
| 781 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 783 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 782 session_->StartGettingPorts(); | 784 session_->StartGettingPorts(); |
| 783 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); | 785 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); |
| 784 EXPECT_EQ(2U, candidates_.size()); // Host UDP/TCP candidates only. | 786 EXPECT_EQ(2U, candidates_.size()); // Host UDP/TCP candidates only. |
| 785 EXPECT_EQ(2U, ports_.size()); // UDP/TCP ports only. | 787 EXPECT_EQ(2U, ports_.size()); // UDP/TCP ports only. |
| 786 for (size_t i = 0; i < candidates_.size(); ++i) { | 788 for (size_t i = 0; i < candidates_.size(); ++i) { |
| 787 EXPECT_EQ(std::string(cricket::LOCAL_PORT_TYPE), candidates_[i].type()); | 789 EXPECT_EQ(std::string(cricket::LOCAL_PORT_TYPE), candidates_[i].type()); |
| 788 } | 790 } |
| 789 } | 791 } |
| 790 | 792 |
| 791 // Host is behind the NAT. | 793 // Host is behind the NAT. |
| 792 TEST_F(PortAllocatorTest, TestCandidateFilterWithReflexiveOnly) { | 794 TEST_F(PortAllocatorTest, TestCandidateFilterWithReflexiveOnly) { |
| 793 AddInterface(kPrivateAddr); | 795 AddInterface(kPrivateAddr); |
| 794 ResetWithStunServerAndNat(kStunAddr); | 796 ResetWithStunServerAndNat(kStunAddr); |
| 795 | 797 |
| 796 allocator().set_flags(cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); | 798 allocator().set_flags(cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | |
| 799 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); |
| 797 allocator().set_candidate_filter(cricket::CF_REFLEXIVE); | 800 allocator().set_candidate_filter(cricket::CF_REFLEXIVE); |
| 798 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 801 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 799 session_->StartGettingPorts(); | 802 session_->StartGettingPorts(); |
| 800 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); | 803 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); |
| 801 // Host is behind NAT, no private address will be exposed. Hence only UDP | 804 // Host is behind NAT, no private address will be exposed. Hence only UDP |
| 802 // port with STUN candidate will be sent outside. | 805 // port with STUN candidate will be sent outside. |
| 803 EXPECT_EQ(1U, candidates_.size()); // Only STUN candidate. | 806 EXPECT_EQ(1U, candidates_.size()); // Only STUN candidate. |
| 804 EXPECT_EQ(1U, ports_.size()); // Only UDP port will be in ready state. | 807 EXPECT_EQ(1U, ports_.size()); // Only UDP port will be in ready state. |
| 805 for (size_t i = 0; i < candidates_.size(); ++i) { | 808 for (size_t i = 0; i < candidates_.size(); ++i) { |
| 806 EXPECT_EQ(std::string(cricket::STUN_PORT_TYPE), candidates_[i].type()); | 809 EXPECT_EQ(std::string(cricket::STUN_PORT_TYPE), candidates_[i].type()); |
| 807 EXPECT_EQ( | 810 EXPECT_EQ( |
| 808 candidates_[0].related_address(), | 811 candidates_[0].related_address(), |
| 809 rtc::EmptySocketAddressWithFamily(candidates_[0].address().family())); | 812 rtc::EmptySocketAddressWithFamily(candidates_[0].address().family())); |
| 810 } | 813 } |
| 811 } | 814 } |
| 812 | 815 |
| 813 // Host is not behind the NAT. | 816 // Host is not behind the NAT. |
| 814 TEST_F(PortAllocatorTest, TestCandidateFilterWithReflexiveOnlyAndNoNAT) { | 817 TEST_F(PortAllocatorTest, TestCandidateFilterWithReflexiveOnlyAndNoNAT) { |
| 815 AddInterface(kClientAddr); | 818 AddInterface(kClientAddr); |
| 816 allocator().set_flags(cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); | 819 allocator().set_flags(cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | |
| 820 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); |
| 817 allocator().set_candidate_filter(cricket::CF_REFLEXIVE); | 821 allocator().set_candidate_filter(cricket::CF_REFLEXIVE); |
| 818 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 822 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 819 session_->StartGettingPorts(); | 823 session_->StartGettingPorts(); |
| 820 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); | 824 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); |
| 821 // Host has a public address, both UDP and TCP candidates will be exposed. | 825 // Host has a public address, both UDP and TCP candidates will be exposed. |
| 822 EXPECT_EQ(2U, candidates_.size()); // Local UDP + TCP candidate. | 826 EXPECT_EQ(2U, candidates_.size()); // Local UDP + TCP candidate. |
| 823 EXPECT_EQ(2U, ports_.size()); // UDP and TCP ports will be in ready state. | 827 EXPECT_EQ(2U, ports_.size()); // UDP and TCP ports will be in ready state. |
| 824 for (size_t i = 0; i < candidates_.size(); ++i) { | 828 for (size_t i = 0; i < candidates_.size(); ++i) { |
| 825 EXPECT_EQ(std::string(cricket::LOCAL_PORT_TYPE), candidates_[i].type()); | 829 EXPECT_EQ(std::string(cricket::LOCAL_PORT_TYPE), candidates_[i].type()); |
| 826 } | 830 } |
| 827 } | 831 } |
| 828 | 832 |
| 829 // Test that we get the same ufrag and pwd for all candidates. | 833 // Test that when the PORTALLOCATOR_ENABLE_SHARED_UFRAG is enabled we got same |
| 834 // ufrag and pwd for the collected candidates. |
| 830 TEST_F(PortAllocatorTest, TestEnableSharedUfrag) { | 835 TEST_F(PortAllocatorTest, TestEnableSharedUfrag) { |
| 836 allocator().set_flags(allocator().flags() | |
| 837 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG); |
| 831 AddInterface(kClientAddr); | 838 AddInterface(kClientAddr); |
| 832 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 839 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 833 session_->StartGettingPorts(); | 840 session_->StartGettingPorts(); |
| 834 ASSERT_EQ_WAIT(7U, candidates_.size(), kDefaultAllocationTimeout); | 841 ASSERT_EQ_WAIT(7U, candidates_.size(), kDefaultAllocationTimeout); |
| 835 EXPECT_PRED5(CheckCandidate, candidates_[0], | 842 EXPECT_PRED5(CheckCandidate, candidates_[0], |
| 836 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); | 843 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); |
| 837 EXPECT_PRED5(CheckCandidate, candidates_[1], | 844 EXPECT_PRED5(CheckCandidate, candidates_[1], |
| 838 cricket::ICE_CANDIDATE_COMPONENT_RTP, "stun", "udp", kClientAddr); | 845 cricket::ICE_CANDIDATE_COMPONENT_RTP, "stun", "udp", kClientAddr); |
| 839 EXPECT_PRED5(CheckCandidate, candidates_[5], | 846 EXPECT_PRED5(CheckCandidate, candidates_[5], |
| 840 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "tcp", kClientAddr); | 847 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "tcp", kClientAddr); |
| 841 EXPECT_EQ(4U, ports_.size()); | 848 EXPECT_EQ(4U, ports_.size()); |
| 842 EXPECT_EQ(kIceUfrag0, candidates_[0].username()); | 849 EXPECT_EQ(kIceUfrag0, candidates_[0].username()); |
| 843 EXPECT_EQ(kIceUfrag0, candidates_[1].username()); | 850 EXPECT_EQ(kIceUfrag0, candidates_[1].username()); |
| 844 EXPECT_EQ(kIceUfrag0, candidates_[2].username()); | 851 EXPECT_EQ(kIceUfrag0, candidates_[2].username()); |
| 845 EXPECT_EQ(kIcePwd0, candidates_[0].password()); | 852 EXPECT_EQ(kIcePwd0, candidates_[0].password()); |
| 846 EXPECT_EQ(kIcePwd0, candidates_[1].password()); | 853 EXPECT_EQ(kIcePwd0, candidates_[1].password()); |
| 847 EXPECT_TRUE(candidate_allocation_done_); | 854 EXPECT_TRUE(candidate_allocation_done_); |
| 848 } | 855 } |
| 849 | 856 |
| 857 // Test that when the PORTALLOCATOR_ENABLE_SHARED_UFRAG isn't enabled we got |
| 858 // different ufrag and pwd for the collected candidates. |
| 859 TEST_F(PortAllocatorTest, TestDisableSharedUfrag) { |
| 860 allocator().set_flags(allocator().flags() & |
| 861 ~cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG); |
| 862 AddInterface(kClientAddr); |
| 863 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 864 session_->StartGettingPorts(); |
| 865 ASSERT_EQ_WAIT(7U, candidates_.size(), kDefaultAllocationTimeout); |
| 866 EXPECT_PRED5(CheckCandidate, candidates_[0], |
| 867 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); |
| 868 EXPECT_PRED5(CheckCandidate, candidates_[1], |
| 869 cricket::ICE_CANDIDATE_COMPONENT_RTP, "stun", "udp", kClientAddr); |
| 870 EXPECT_EQ(4U, ports_.size()); |
| 871 // Port should generate random ufrag and pwd. |
| 872 EXPECT_NE(kIceUfrag0, candidates_[0].username()); |
| 873 EXPECT_NE(kIceUfrag0, candidates_[1].username()); |
| 874 EXPECT_NE(candidates_[0].username(), candidates_[1].username()); |
| 875 EXPECT_NE(kIcePwd0, candidates_[0].password()); |
| 876 EXPECT_NE(kIcePwd0, candidates_[1].password()); |
| 877 EXPECT_NE(candidates_[0].password(), candidates_[1].password()); |
| 878 EXPECT_TRUE(candidate_allocation_done_); |
| 879 } |
| 880 |
| 850 // Test that when PORTALLOCATOR_ENABLE_SHARED_SOCKET is enabled only one port | 881 // Test that when PORTALLOCATOR_ENABLE_SHARED_SOCKET is enabled only one port |
| 851 // is allocated for udp and stun. Also verify there is only one candidate | 882 // is allocated for udp and stun. Also verify there is only one candidate |
| 852 // (local) if stun candidate is same as local candidate, which will be the case | 883 // (local) if stun candidate is same as local candidate, which will be the case |
| 853 // in a public network like the below test. | 884 // in a public network like the below test. |
| 854 TEST_F(PortAllocatorTest, TestSharedSocketWithoutNat) { | 885 TEST_F(PortAllocatorTest, TestSharedSocketWithoutNat) { |
| 855 AddInterface(kClientAddr); | 886 AddInterface(kClientAddr); |
| 856 allocator_->set_flags(allocator().flags() | | 887 allocator_->set_flags(allocator().flags() | |
| 888 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | |
| 857 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); | 889 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); |
| 858 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 890 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 859 session_->StartGettingPorts(); | 891 session_->StartGettingPorts(); |
| 860 ASSERT_EQ_WAIT(6U, candidates_.size(), kDefaultAllocationTimeout); | 892 ASSERT_EQ_WAIT(6U, candidates_.size(), kDefaultAllocationTimeout); |
| 861 EXPECT_EQ(3U, ports_.size()); | 893 EXPECT_EQ(3U, ports_.size()); |
| 862 EXPECT_PRED5(CheckCandidate, candidates_[0], | 894 EXPECT_PRED5(CheckCandidate, candidates_[0], |
| 863 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); | 895 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); |
| 864 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); | 896 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); |
| 865 } | 897 } |
| 866 | 898 |
| 867 // Test that when PORTALLOCATOR_ENABLE_SHARED_SOCKET is enabled only one port | 899 // Test that when PORTALLOCATOR_ENABLE_SHARED_SOCKET is enabled only one port |
| 868 // is allocated for udp and stun. In this test we should expect both stun and | 900 // is allocated for udp and stun. In this test we should expect both stun and |
| 869 // local candidates as client behind a nat. | 901 // local candidates as client behind a nat. |
| 870 TEST_F(PortAllocatorTest, TestSharedSocketWithNat) { | 902 TEST_F(PortAllocatorTest, TestSharedSocketWithNat) { |
| 871 AddInterface(kClientAddr); | 903 AddInterface(kClientAddr); |
| 872 ResetWithStunServerAndNat(kStunAddr); | 904 ResetWithStunServerAndNat(kStunAddr); |
| 873 | 905 |
| 874 allocator_->set_flags(allocator().flags() | | 906 allocator_->set_flags(allocator().flags() | |
| 907 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | |
| 875 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); | 908 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); |
| 876 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 909 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 877 session_->StartGettingPorts(); | 910 session_->StartGettingPorts(); |
| 878 ASSERT_EQ_WAIT(3U, candidates_.size(), kDefaultAllocationTimeout); | 911 ASSERT_EQ_WAIT(3U, candidates_.size(), kDefaultAllocationTimeout); |
| 879 ASSERT_EQ(2U, ports_.size()); | 912 ASSERT_EQ(2U, ports_.size()); |
| 880 EXPECT_PRED5(CheckCandidate, candidates_[0], | 913 EXPECT_PRED5(CheckCandidate, candidates_[0], |
| 881 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); | 914 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); |
| 882 EXPECT_PRED5(CheckCandidate, candidates_[1], | 915 EXPECT_PRED5(CheckCandidate, candidates_[1], |
| 883 cricket::ICE_CANDIDATE_COMPONENT_RTP, "stun", "udp", | 916 cricket::ICE_CANDIDATE_COMPONENT_RTP, "stun", "udp", |
| 884 rtc::SocketAddress(kNatUdpAddr.ipaddr(), 0)); | 917 rtc::SocketAddress(kNatUdpAddr.ipaddr(), 0)); |
| 885 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); | 918 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); |
| 886 EXPECT_EQ(3U, candidates_.size()); | 919 EXPECT_EQ(3U, candidates_.size()); |
| 887 } | 920 } |
| 888 | 921 |
| 889 // Test TURN port in shared socket mode with UDP and TCP TURN server addresses. | 922 // Test TURN port in shared socket mode with UDP and TCP TURN server addresses. |
| 890 TEST_F(PortAllocatorTest, TestSharedSocketWithoutNatUsingTurn) { | 923 TEST_F(PortAllocatorTest, TestSharedSocketWithoutNatUsingTurn) { |
| 891 turn_server_.AddInternalSocket(kTurnTcpIntAddr, cricket::PROTO_TCP); | 924 turn_server_.AddInternalSocket(kTurnTcpIntAddr, cricket::PROTO_TCP); |
| 892 AddInterface(kClientAddr); | 925 AddInterface(kClientAddr); |
| 893 allocator_.reset(new cricket::BasicPortAllocator(&network_manager_)); | 926 allocator_.reset(new cricket::BasicPortAllocator(&network_manager_)); |
| 894 | 927 |
| 895 AddTurnServers(kTurnUdpIntAddr, kTurnTcpIntAddr); | 928 AddTurnServers(kTurnUdpIntAddr, kTurnTcpIntAddr); |
| 896 | 929 |
| 897 allocator_->set_step_delay(cricket::kMinimumStepDelay); | 930 allocator_->set_step_delay(cricket::kMinimumStepDelay); |
| 898 allocator_->set_flags(allocator().flags() | | 931 allocator_->set_flags(allocator().flags() | |
| 932 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | |
| 899 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET | | 933 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET | |
| 900 cricket::PORTALLOCATOR_DISABLE_TCP); | 934 cricket::PORTALLOCATOR_DISABLE_TCP); |
| 901 | 935 |
| 902 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 936 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 903 session_->StartGettingPorts(); | 937 session_->StartGettingPorts(); |
| 904 | 938 |
| 905 ASSERT_EQ_WAIT(3U, candidates_.size(), kDefaultAllocationTimeout); | 939 ASSERT_EQ_WAIT(3U, candidates_.size(), kDefaultAllocationTimeout); |
| 906 ASSERT_EQ(3U, ports_.size()); | 940 ASSERT_EQ(3U, ports_.size()); |
| 907 EXPECT_PRED5(CheckCandidate, candidates_[0], | 941 EXPECT_PRED5(CheckCandidate, candidates_[0], |
| 908 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); | 942 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 926 cricket::RelayServerConfig relay_server(cricket::RELAY_TURN); | 960 cricket::RelayServerConfig relay_server(cricket::RELAY_TURN); |
| 927 cricket::RelayCredentials credentials(kTurnUsername, kTurnPassword); | 961 cricket::RelayCredentials credentials(kTurnUsername, kTurnPassword); |
| 928 relay_server.credentials = credentials; | 962 relay_server.credentials = credentials; |
| 929 relay_server.ports.push_back(cricket::ProtocolAddress( | 963 relay_server.ports.push_back(cricket::ProtocolAddress( |
| 930 rtc::SocketAddress("localhost", 3478), | 964 rtc::SocketAddress("localhost", 3478), |
| 931 cricket::PROTO_UDP, false)); | 965 cricket::PROTO_UDP, false)); |
| 932 allocator_->AddRelay(relay_server); | 966 allocator_->AddRelay(relay_server); |
| 933 | 967 |
| 934 allocator_->set_step_delay(cricket::kMinimumStepDelay); | 968 allocator_->set_step_delay(cricket::kMinimumStepDelay); |
| 935 allocator_->set_flags(allocator().flags() | | 969 allocator_->set_flags(allocator().flags() | |
| 970 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | |
| 936 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET | | 971 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET | |
| 937 cricket::PORTALLOCATOR_DISABLE_TCP); | 972 cricket::PORTALLOCATOR_DISABLE_TCP); |
| 938 | 973 |
| 939 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 974 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 940 session_->StartGettingPorts(); | 975 session_->StartGettingPorts(); |
| 941 | 976 |
| 942 EXPECT_EQ_WAIT(2U, ports_.size(), kDefaultAllocationTimeout); | 977 EXPECT_EQ_WAIT(2U, ports_.size(), kDefaultAllocationTimeout); |
| 943 } | 978 } |
| 944 | 979 |
| 945 // Test that when PORTALLOCATOR_ENABLE_SHARED_SOCKET is enabled only one port | 980 // Test that when PORTALLOCATOR_ENABLE_SHARED_SOCKET is enabled only one port |
| 946 // is allocated for udp/stun/turn. In this test we should expect all local, | 981 // is allocated for udp/stun/turn. In this test we should expect all local, |
| 947 // stun and turn candidates. | 982 // stun and turn candidates. |
| 948 TEST_F(PortAllocatorTest, TestSharedSocketWithNatUsingTurn) { | 983 TEST_F(PortAllocatorTest, TestSharedSocketWithNatUsingTurn) { |
| 949 AddInterface(kClientAddr); | 984 AddInterface(kClientAddr); |
| 950 ResetWithStunServerAndNat(kStunAddr); | 985 ResetWithStunServerAndNat(kStunAddr); |
| 951 | 986 |
| 952 AddTurnServers(kTurnUdpIntAddr, rtc::SocketAddress()); | 987 AddTurnServers(kTurnUdpIntAddr, rtc::SocketAddress()); |
| 953 | 988 |
| 954 allocator_->set_flags(allocator().flags() | | 989 allocator_->set_flags(allocator().flags() | |
| 990 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | |
| 955 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET | | 991 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET | |
| 956 cricket::PORTALLOCATOR_DISABLE_TCP); | 992 cricket::PORTALLOCATOR_DISABLE_TCP); |
| 957 | 993 |
| 958 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 994 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 959 session_->StartGettingPorts(); | 995 session_->StartGettingPorts(); |
| 960 | 996 |
| 961 ASSERT_EQ_WAIT(3U, candidates_.size(), kDefaultAllocationTimeout); | 997 ASSERT_EQ_WAIT(3U, candidates_.size(), kDefaultAllocationTimeout); |
| 962 ASSERT_EQ(2U, ports_.size()); | 998 ASSERT_EQ(2U, ports_.size()); |
| 963 EXPECT_PRED5(CheckCandidate, candidates_[0], | 999 EXPECT_PRED5(CheckCandidate, candidates_[0], |
| 964 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); | 1000 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 983 // Use an empty SocketAddress to add a NAT without STUN server. | 1019 // Use an empty SocketAddress to add a NAT without STUN server. |
| 984 ResetWithStunServerAndNat(SocketAddress()); | 1020 ResetWithStunServerAndNat(SocketAddress()); |
| 985 AddTurnServers(kTurnUdpIntAddr, rtc::SocketAddress()); | 1021 AddTurnServers(kTurnUdpIntAddr, rtc::SocketAddress()); |
| 986 | 1022 |
| 987 // Must set the step delay to 0 to make sure the relay allocation phase is | 1023 // Must set the step delay to 0 to make sure the relay allocation phase is |
| 988 // started before the STUN candidates are obtained, so that the STUN binding | 1024 // started before the STUN candidates are obtained, so that the STUN binding |
| 989 // response is processed when both StunPort and TurnPort exist to reproduce | 1025 // response is processed when both StunPort and TurnPort exist to reproduce |
| 990 // webrtc issue 3537. | 1026 // webrtc issue 3537. |
| 991 allocator_->set_step_delay(0); | 1027 allocator_->set_step_delay(0); |
| 992 allocator_->set_flags(allocator().flags() | | 1028 allocator_->set_flags(allocator().flags() | |
| 1029 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | |
| 993 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET | | 1030 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET | |
| 994 cricket::PORTALLOCATOR_DISABLE_TCP); | 1031 cricket::PORTALLOCATOR_DISABLE_TCP); |
| 995 | 1032 |
| 996 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 1033 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 997 session_->StartGettingPorts(); | 1034 session_->StartGettingPorts(); |
| 998 | 1035 |
| 999 ASSERT_EQ_WAIT(3U, candidates_.size(), kDefaultAllocationTimeout); | 1036 ASSERT_EQ_WAIT(3U, candidates_.size(), kDefaultAllocationTimeout); |
| 1000 EXPECT_PRED5(CheckCandidate, candidates_[0], | 1037 EXPECT_PRED5(CheckCandidate, candidates_[0], |
| 1001 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); | 1038 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); |
| 1002 EXPECT_PRED5(CheckCandidate, candidates_[1], | 1039 EXPECT_PRED5(CheckCandidate, candidates_[1], |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1017 // Test that when only a TCP TURN server is available, we do NOT use it as | 1054 // Test that when only a TCP TURN server is available, we do NOT use it as |
| 1018 // a UDP STUN server, as this could leak our IP address. Thus we should only | 1055 // a UDP STUN server, as this could leak our IP address. Thus we should only |
| 1019 // expect two ports, a UDPPort and TurnPort. | 1056 // expect two ports, a UDPPort and TurnPort. |
| 1020 TEST_F(PortAllocatorTest, TestSharedSocketWithNatUsingTurnTcpOnly) { | 1057 TEST_F(PortAllocatorTest, TestSharedSocketWithNatUsingTurnTcpOnly) { |
| 1021 turn_server_.AddInternalSocket(kTurnTcpIntAddr, cricket::PROTO_TCP); | 1058 turn_server_.AddInternalSocket(kTurnTcpIntAddr, cricket::PROTO_TCP); |
| 1022 AddInterface(kClientAddr); | 1059 AddInterface(kClientAddr); |
| 1023 ResetWithStunServerAndNat(rtc::SocketAddress()); | 1060 ResetWithStunServerAndNat(rtc::SocketAddress()); |
| 1024 AddTurnServers(rtc::SocketAddress(), kTurnTcpIntAddr); | 1061 AddTurnServers(rtc::SocketAddress(), kTurnTcpIntAddr); |
| 1025 | 1062 |
| 1026 allocator_->set_flags(allocator().flags() | | 1063 allocator_->set_flags(allocator().flags() | |
| 1064 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | |
| 1027 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET | | 1065 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET | |
| 1028 cricket::PORTALLOCATOR_DISABLE_TCP); | 1066 cricket::PORTALLOCATOR_DISABLE_TCP); |
| 1029 | 1067 |
| 1030 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 1068 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 1031 session_->StartGettingPorts(); | 1069 session_->StartGettingPorts(); |
| 1032 | 1070 |
| 1033 ASSERT_EQ_WAIT(2U, candidates_.size(), kDefaultAllocationTimeout); | 1071 ASSERT_EQ_WAIT(2U, candidates_.size(), kDefaultAllocationTimeout); |
| 1034 ASSERT_EQ(2U, ports_.size()); | 1072 ASSERT_EQ(2U, ports_.size()); |
| 1035 EXPECT_PRED5(CheckCandidate, candidates_[0], | 1073 EXPECT_PRED5(CheckCandidate, candidates_[0], |
| 1036 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", | 1074 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1049 // 'relay' candidates. | 1087 // 'relay' candidates. |
| 1050 // TODO(deadbeef): Remove this test when support for non-shared socket mode | 1088 // TODO(deadbeef): Remove this test when support for non-shared socket mode |
| 1051 // is removed. | 1089 // is removed. |
| 1052 TEST_F(PortAllocatorTest, TestNonSharedSocketWithNatUsingTurnAsStun) { | 1090 TEST_F(PortAllocatorTest, TestNonSharedSocketWithNatUsingTurnAsStun) { |
| 1053 AddInterface(kClientAddr); | 1091 AddInterface(kClientAddr); |
| 1054 // Use an empty SocketAddress to add a NAT without STUN server. | 1092 // Use an empty SocketAddress to add a NAT without STUN server. |
| 1055 ResetWithStunServerAndNat(SocketAddress()); | 1093 ResetWithStunServerAndNat(SocketAddress()); |
| 1056 AddTurnServers(kTurnUdpIntAddr, rtc::SocketAddress()); | 1094 AddTurnServers(kTurnUdpIntAddr, rtc::SocketAddress()); |
| 1057 | 1095 |
| 1058 allocator_->set_flags(allocator().flags() | | 1096 allocator_->set_flags(allocator().flags() | |
| 1097 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | |
| 1059 cricket::PORTALLOCATOR_DISABLE_TCP); | 1098 cricket::PORTALLOCATOR_DISABLE_TCP); |
| 1060 | 1099 |
| 1061 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 1100 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 1062 session_->StartGettingPorts(); | 1101 session_->StartGettingPorts(); |
| 1063 | 1102 |
| 1064 ASSERT_EQ_WAIT(3U, candidates_.size(), kDefaultAllocationTimeout); | 1103 ASSERT_EQ_WAIT(3U, candidates_.size(), kDefaultAllocationTimeout); |
| 1065 ASSERT_EQ(3U, ports_.size()); | 1104 ASSERT_EQ(3U, ports_.size()); |
| 1066 EXPECT_PRED5(CheckCandidate, candidates_[0], | 1105 EXPECT_PRED5(CheckCandidate, candidates_[0], |
| 1067 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", | 1106 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", |
| 1068 kClientAddr); | 1107 kClientAddr); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1087 // server is used as a STUN server and we get a 'stun' candidate. | 1126 // server is used as a STUN server and we get a 'stun' candidate. |
| 1088 TEST_F(PortAllocatorTest, TestSharedSocketWithNatUsingTurnAndStun) { | 1127 TEST_F(PortAllocatorTest, TestSharedSocketWithNatUsingTurnAndStun) { |
| 1089 AddInterface(kClientAddr); | 1128 AddInterface(kClientAddr); |
| 1090 // Configure with STUN server but destroy it, so we can ensure that it's | 1129 // Configure with STUN server but destroy it, so we can ensure that it's |
| 1091 // the TURN server actually being used as a STUN server. | 1130 // the TURN server actually being used as a STUN server. |
| 1092 ResetWithStunServerAndNat(kStunAddr); | 1131 ResetWithStunServerAndNat(kStunAddr); |
| 1093 stun_server_.reset(); | 1132 stun_server_.reset(); |
| 1094 AddTurnServers(kTurnUdpIntAddr, rtc::SocketAddress()); | 1133 AddTurnServers(kTurnUdpIntAddr, rtc::SocketAddress()); |
| 1095 | 1134 |
| 1096 allocator_->set_flags(allocator().flags() | | 1135 allocator_->set_flags(allocator().flags() | |
| 1136 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | |
| 1097 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET | | 1137 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET | |
| 1098 cricket::PORTALLOCATOR_DISABLE_TCP); | 1138 cricket::PORTALLOCATOR_DISABLE_TCP); |
| 1099 | 1139 |
| 1100 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 1140 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 1101 session_->StartGettingPorts(); | 1141 session_->StartGettingPorts(); |
| 1102 | 1142 |
| 1103 ASSERT_EQ_WAIT(3U, candidates_.size(), kDefaultAllocationTimeout); | 1143 ASSERT_EQ_WAIT(3U, candidates_.size(), kDefaultAllocationTimeout); |
| 1104 EXPECT_PRED5(CheckCandidate, candidates_[0], | 1144 EXPECT_PRED5(CheckCandidate, candidates_[0], |
| 1105 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", | 1145 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", |
| 1106 kClientAddr); | 1146 kClientAddr); |
| 1107 EXPECT_PRED5(CheckCandidate, candidates_[1], | 1147 EXPECT_PRED5(CheckCandidate, candidates_[1], |
| 1108 cricket::ICE_CANDIDATE_COMPONENT_RTP, "stun", "udp", | 1148 cricket::ICE_CANDIDATE_COMPONENT_RTP, "stun", "udp", |
| 1109 rtc::SocketAddress(kNatUdpAddr.ipaddr(), 0)); | 1149 rtc::SocketAddress(kNatUdpAddr.ipaddr(), 0)); |
| 1110 EXPECT_PRED5(CheckCandidate, candidates_[2], | 1150 EXPECT_PRED5(CheckCandidate, candidates_[2], |
| 1111 cricket::ICE_CANDIDATE_COMPONENT_RTP, "relay", "udp", | 1151 cricket::ICE_CANDIDATE_COMPONENT_RTP, "relay", "udp", |
| 1112 rtc::SocketAddress(kTurnUdpExtAddr.ipaddr(), 0)); | 1152 rtc::SocketAddress(kTurnUdpExtAddr.ipaddr(), 0)); |
| 1113 EXPECT_EQ(candidates_[2].related_address(), candidates_[1].address()); | 1153 EXPECT_EQ(candidates_[2].related_address(), candidates_[1].address()); |
| 1114 | 1154 |
| 1115 // Don't bother waiting for STUN timeout, since we already verified | 1155 // Don't bother waiting for STUN timeout, since we already verified |
| 1116 // that we got a STUN candidate from the TURN server. | 1156 // that we got a STUN candidate from the TURN server. |
| 1117 } | 1157 } |
| 1118 | 1158 |
| 1119 // This test verifies when PORTALLOCATOR_ENABLE_SHARED_SOCKET flag is enabled | 1159 // This test verifies when PORTALLOCATOR_ENABLE_SHARED_SOCKET flag is enabled |
| 1120 // and fail to generate STUN candidate, local UDP candidate is generated | 1160 // and fail to generate STUN candidate, local UDP candidate is generated |
| 1121 // properly. | 1161 // properly. |
| 1122 TEST_F(PortAllocatorTest, TestSharedSocketNoUdpAllowed) { | 1162 TEST_F(PortAllocatorTest, TestSharedSocketNoUdpAllowed) { |
| 1123 allocator().set_flags(allocator().flags() | | 1163 allocator().set_flags(allocator().flags() | |
| 1124 cricket::PORTALLOCATOR_DISABLE_RELAY | | 1164 cricket::PORTALLOCATOR_DISABLE_RELAY | |
| 1125 cricket::PORTALLOCATOR_DISABLE_TCP | | 1165 cricket::PORTALLOCATOR_DISABLE_TCP | |
| 1166 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | |
| 1126 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); | 1167 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); |
| 1127 fss_->AddRule(false, rtc::FP_UDP, rtc::FD_ANY, kClientAddr); | 1168 fss_->AddRule(false, rtc::FP_UDP, rtc::FD_ANY, kClientAddr); |
| 1128 AddInterface(kClientAddr); | 1169 AddInterface(kClientAddr); |
| 1129 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 1170 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 1130 session_->StartGettingPorts(); | 1171 session_->StartGettingPorts(); |
| 1131 ASSERT_EQ_WAIT(1U, ports_.size(), kDefaultAllocationTimeout); | 1172 ASSERT_EQ_WAIT(1U, ports_.size(), kDefaultAllocationTimeout); |
| 1132 EXPECT_EQ(1U, candidates_.size()); | 1173 EXPECT_EQ(1U, candidates_.size()); |
| 1133 EXPECT_PRED5(CheckCandidate, candidates_[0], | 1174 EXPECT_PRED5(CheckCandidate, candidates_[0], |
| 1134 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); | 1175 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); |
| 1135 // STUN timeout is 9sec. We need to wait to get candidate done signal. | 1176 // STUN timeout is 9sec. We need to wait to get candidate done signal. |
| 1136 EXPECT_TRUE_WAIT(candidate_allocation_done_, 10000); | 1177 EXPECT_TRUE_WAIT(candidate_allocation_done_, 10000); |
| 1137 EXPECT_EQ(1U, candidates_.size()); | 1178 EXPECT_EQ(1U, candidates_.size()); |
| 1138 } | 1179 } |
| 1139 | 1180 |
| 1140 // Test that when the NetworkManager doesn't have permission to enumerate | 1181 // Test that when the NetworkManager doesn't have permission to enumerate |
| 1141 // adapters, the PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION is specified | 1182 // adapters, the PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION is specified |
| 1142 // automatically. | 1183 // automatically. |
| 1143 TEST_F(PortAllocatorTest, TestNetworkPermissionBlocked) { | 1184 TEST_F(PortAllocatorTest, TestNetworkPermissionBlocked) { |
| 1144 AddInterface(kClientAddr); | 1185 AddInterface(kClientAddr); |
| 1145 network_manager_.set_enumeration_permission( | 1186 network_manager_.set_enumeration_permission( |
| 1146 rtc::NetworkManager::kEnumerationDisallowed); | 1187 rtc::NetworkManager::kEnumerationDisallowed); |
| 1147 allocator().set_flags(allocator().flags() | | 1188 allocator().set_flags(allocator().flags() | |
| 1148 cricket::PORTALLOCATOR_DISABLE_RELAY | | 1189 cricket::PORTALLOCATOR_DISABLE_RELAY | |
| 1149 cricket::PORTALLOCATOR_DISABLE_TCP | | 1190 cricket::PORTALLOCATOR_DISABLE_TCP | |
| 1191 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | |
| 1150 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); | 1192 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); |
| 1151 EXPECT_EQ( | 1193 EXPECT_EQ( |
| 1152 allocator_->flags() & cricket::PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION, | 1194 allocator_->flags() & cricket::PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION, |
| 1153 0U); | 1195 0U); |
| 1154 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 1196 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 1155 EXPECT_EQ( | 1197 EXPECT_EQ( |
| 1156 session_->flags() & cricket::PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION, | 1198 session_->flags() & cricket::PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION, |
| 1157 0U); | 1199 0U); |
| 1158 session_->StartGettingPorts(); | 1200 session_->StartGettingPorts(); |
| 1159 EXPECT_EQ_WAIT(1U, ports_.size(), kDefaultAllocationTimeout); | 1201 EXPECT_EQ_WAIT(1U, ports_.size(), kDefaultAllocationTimeout); |
| 1160 EXPECT_EQ(0U, candidates_.size()); | 1202 EXPECT_EQ(0U, candidates_.size()); |
| 1161 EXPECT_TRUE((session_->flags() & | 1203 EXPECT_TRUE((session_->flags() & |
| 1162 cricket::PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION) != 0); | 1204 cricket::PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION) != 0); |
| 1163 } | 1205 } |
| 1164 | 1206 |
| 1165 // This test verifies allocator can use IPv6 addresses along with IPv4. | 1207 // This test verifies allocator can use IPv6 addresses along with IPv4. |
| 1166 TEST_F(PortAllocatorTest, TestEnableIPv6Addresses) { | 1208 TEST_F(PortAllocatorTest, TestEnableIPv6Addresses) { |
| 1167 allocator().set_flags(allocator().flags() | | 1209 allocator().set_flags(allocator().flags() | |
| 1168 cricket::PORTALLOCATOR_DISABLE_RELAY | | 1210 cricket::PORTALLOCATOR_DISABLE_RELAY | |
| 1169 cricket::PORTALLOCATOR_ENABLE_IPV6 | | 1211 cricket::PORTALLOCATOR_ENABLE_IPV6 | |
| 1212 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | |
| 1170 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); | 1213 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); |
| 1171 AddInterface(kClientIPv6Addr); | 1214 AddInterface(kClientIPv6Addr); |
| 1172 AddInterface(kClientAddr); | 1215 AddInterface(kClientAddr); |
| 1173 allocator_->set_step_delay(cricket::kMinimumStepDelay); | 1216 allocator_->set_step_delay(cricket::kMinimumStepDelay); |
| 1174 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 1217 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 1175 session_->StartGettingPorts(); | 1218 session_->StartGettingPorts(); |
| 1176 ASSERT_EQ_WAIT(4U, ports_.size(), kDefaultAllocationTimeout); | 1219 ASSERT_EQ_WAIT(4U, ports_.size(), kDefaultAllocationTimeout); |
| 1177 EXPECT_EQ(4U, candidates_.size()); | 1220 EXPECT_EQ(4U, candidates_.size()); |
| 1178 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); | 1221 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); |
| 1179 EXPECT_PRED5(CheckCandidate, candidates_[0], | 1222 EXPECT_PRED5(CheckCandidate, candidates_[0], |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1218 alloc.SetStunHosts(stun_servers); | 1261 alloc.SetStunHosts(stun_servers); |
| 1219 EXPECT_EQ(2U, alloc.relay_hosts().size()); | 1262 EXPECT_EQ(2U, alloc.relay_hosts().size()); |
| 1220 EXPECT_EQ(2U, alloc.stun_hosts().size()); | 1263 EXPECT_EQ(2U, alloc.stun_hosts().size()); |
| 1221 } | 1264 } |
| 1222 | 1265 |
| 1223 // Test that the HttpPortAllocator uses correct URL to create sessions. | 1266 // Test that the HttpPortAllocator uses correct URL to create sessions. |
| 1224 TEST(HttpPortAllocatorTest, TestSessionRequestUrl) { | 1267 TEST(HttpPortAllocatorTest, TestSessionRequestUrl) { |
| 1225 rtc::FakeNetworkManager network_manager; | 1268 rtc::FakeNetworkManager network_manager; |
| 1226 cricket::HttpPortAllocator alloc(&network_manager, "unit test agent"); | 1269 cricket::HttpPortAllocator alloc(&network_manager, "unit test agent"); |
| 1227 | 1270 |
| 1271 // Disable PORTALLOCATOR_ENABLE_SHARED_UFRAG. |
| 1272 alloc.set_flags(alloc.flags() & ~cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG); |
| 1228 rtc::scoped_ptr<cricket::HttpPortAllocatorSessionBase> session( | 1273 rtc::scoped_ptr<cricket::HttpPortAllocatorSessionBase> session( |
| 1229 static_cast<cricket::HttpPortAllocatorSession*>( | 1274 static_cast<cricket::HttpPortAllocatorSession*>( |
| 1230 alloc.CreateSessionInternal( | 1275 alloc.CreateSessionInternal( |
| 1231 "test content", 0, kIceUfrag0, kIcePwd0))); | 1276 "test content", 0, kIceUfrag0, kIcePwd0))); |
| 1232 std::string url = session->GetSessionRequestUrl(); | 1277 std::string url = session->GetSessionRequestUrl(); |
| 1233 LOG(LS_INFO) << "url: " << url; | 1278 LOG(LS_INFO) << "url: " << url; |
| 1279 EXPECT_EQ(std::string(cricket::HttpPortAllocator::kCreateSessionURL), url); |
| 1280 |
| 1281 // Enable PORTALLOCATOR_ENABLE_SHARED_UFRAG. |
| 1282 alloc.set_flags(alloc.flags() | cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG); |
| 1283 session.reset(static_cast<cricket::HttpPortAllocatorSession*>( |
| 1284 alloc.CreateSessionInternal("test content", 0, kIceUfrag0, kIcePwd0))); |
| 1285 url = session->GetSessionRequestUrl(); |
| 1286 LOG(LS_INFO) << "url: " << url; |
| 1234 std::vector<std::string> parts; | 1287 std::vector<std::string> parts; |
| 1235 rtc::split(url, '?', &parts); | 1288 rtc::split(url, '?', &parts); |
| 1236 ASSERT_EQ(2U, parts.size()); | 1289 ASSERT_EQ(2U, parts.size()); |
| 1237 | 1290 |
| 1238 std::vector<std::string> args_parts; | 1291 std::vector<std::string> args_parts; |
| 1239 rtc::split(parts[1], '&', &args_parts); | 1292 rtc::split(parts[1], '&', &args_parts); |
| 1240 | 1293 |
| 1241 std::map<std::string, std::string> args; | 1294 std::map<std::string, std::string> args; |
| 1242 for (std::vector<std::string>::iterator it = args_parts.begin(); | 1295 for (std::vector<std::string>::iterator it = args_parts.begin(); |
| 1243 it != args_parts.end(); ++it) { | 1296 it != args_parts.end(); ++it) { |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1289 AllocationSequenceForTest alloc_sequence( | 1342 AllocationSequenceForTest alloc_sequence( |
| 1290 static_cast<cricket::BasicPortAllocatorSession*>(session_.get()), | 1343 static_cast<cricket::BasicPortAllocatorSession*>(session_.get()), |
| 1291 &network1, &config, flag); | 1344 &network1, &config, flag); |
| 1292 // This simply tests it will not crash if udp_socket_ in the | 1345 // This simply tests it will not crash if udp_socket_ in the |
| 1293 // AllocationSequence is null, which is chosen in the constructor. | 1346 // AllocationSequence is null, which is chosen in the constructor. |
| 1294 cricket::RelayServerConfig relay_server(cricket::RELAY_TURN); | 1347 cricket::RelayServerConfig relay_server(cricket::RELAY_TURN); |
| 1295 relay_server.ports.push_back( | 1348 relay_server.ports.push_back( |
| 1296 cricket::ProtocolAddress(kTurnUdpIntAddr, cricket::PROTO_UDP, false)); | 1349 cricket::ProtocolAddress(kTurnUdpIntAddr, cricket::PROTO_UDP, false)); |
| 1297 alloc_sequence.CreateTurnPort(relay_server); | 1350 alloc_sequence.CreateTurnPort(relay_server); |
| 1298 } | 1351 } |
| OLD | NEW |