| 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 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 310 cricket::P2PTransportChannel* channel = new cricket::P2PTransportChannel( | 310 cricket::P2PTransportChannel* channel = new cricket::P2PTransportChannel( |
| 311 "test content name", component, GetAllocator(endpoint)); | 311 "test content name", component, GetAllocator(endpoint)); |
| 312 channel->SignalCandidateGathered.connect( | 312 channel->SignalCandidateGathered.connect( |
| 313 this, &P2PTransportChannelTestBase::OnCandidateGathered); | 313 this, &P2PTransportChannelTestBase::OnCandidateGathered); |
| 314 channel->SignalCandidatesRemoved.connect( | 314 channel->SignalCandidatesRemoved.connect( |
| 315 this, &P2PTransportChannelTestBase::OnCandidatesRemoved); | 315 this, &P2PTransportChannelTestBase::OnCandidatesRemoved); |
| 316 channel->SignalReadPacket.connect( | 316 channel->SignalReadPacket.connect( |
| 317 this, &P2PTransportChannelTestBase::OnReadPacket); | 317 this, &P2PTransportChannelTestBase::OnReadPacket); |
| 318 channel->SignalRoleConflict.connect( | 318 channel->SignalRoleConflict.connect( |
| 319 this, &P2PTransportChannelTestBase::OnRoleConflict); | 319 this, &P2PTransportChannelTestBase::OnRoleConflict); |
| 320 channel->SignalSelectedCandidatePairChanged.connect( |
| 321 this, &P2PTransportChannelTestBase::OnSelectedCandidatePairChanged); |
| 320 channel->SetIceCredentials(local_ice_ufrag, local_ice_pwd); | 322 channel->SetIceCredentials(local_ice_ufrag, local_ice_pwd); |
| 321 if (clear_remote_candidates_ufrag_pwd_) { | 323 if (clear_remote_candidates_ufrag_pwd_) { |
| 322 // This only needs to be set if we're clearing them from the | 324 // This only needs to be set if we're clearing them from the |
| 323 // candidates. Some unit tests rely on this not being set. | 325 // candidates. Some unit tests rely on this not being set. |
| 324 channel->SetRemoteIceCredentials(remote_ice_ufrag, remote_ice_pwd); | 326 channel->SetRemoteIceCredentials(remote_ice_ufrag, remote_ice_pwd); |
| 325 } | 327 } |
| 326 channel->SetIceRole(GetEndpoint(endpoint)->ice_role()); | 328 channel->SetIceRole(GetEndpoint(endpoint)->ice_role()); |
| 327 channel->SetIceTiebreaker(GetEndpoint(endpoint)->GetIceTiebreaker()); | 329 channel->SetIceTiebreaker(GetEndpoint(endpoint)->GetIceTiebreaker()); |
| 328 channel->Connect(); | 330 channel->Connect(); |
| 329 channel->MaybeStartGathering(); | 331 channel->MaybeStartGathering(); |
| (...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 734 std::list<std::string>& packets = GetPacketList(channel); | 736 std::list<std::string>& packets = GetPacketList(channel); |
| 735 packets.push_front(std::string(data, len)); | 737 packets.push_front(std::string(data, len)); |
| 736 } | 738 } |
| 737 void OnRoleConflict(cricket::TransportChannelImpl* channel) { | 739 void OnRoleConflict(cricket::TransportChannelImpl* channel) { |
| 738 GetEndpoint(channel)->OnRoleConflict(true); | 740 GetEndpoint(channel)->OnRoleConflict(true); |
| 739 cricket::IceRole new_role = | 741 cricket::IceRole new_role = |
| 740 GetEndpoint(channel)->ice_role() == cricket::ICEROLE_CONTROLLING ? | 742 GetEndpoint(channel)->ice_role() == cricket::ICEROLE_CONTROLLING ? |
| 741 cricket::ICEROLE_CONTROLLED : cricket::ICEROLE_CONTROLLING; | 743 cricket::ICEROLE_CONTROLLED : cricket::ICEROLE_CONTROLLING; |
| 742 channel->SetIceRole(new_role); | 744 channel->SetIceRole(new_role); |
| 743 } | 745 } |
| 746 |
| 747 void OnSelectedCandidatePairChanged( |
| 748 cricket::TransportChannel* channel, |
| 749 cricket::CandidatePairInterface* candidate_pair) { |
| 750 ++num_selected_candidate_pair_changes_; |
| 751 } |
| 752 |
| 744 int SendData(cricket::TransportChannel* channel, | 753 int SendData(cricket::TransportChannel* channel, |
| 745 const char* data, size_t len) { | 754 const char* data, size_t len) { |
| 746 rtc::PacketOptions options; | 755 rtc::PacketOptions options; |
| 747 return channel->SendPacket(data, len, options, 0); | 756 return channel->SendPacket(data, len, options, 0); |
| 748 } | 757 } |
| 749 bool CheckDataOnChannel(cricket::TransportChannel* channel, | 758 bool CheckDataOnChannel(cricket::TransportChannel* channel, |
| 750 const char* data, int len) { | 759 const char* data, int len) { |
| 751 return GetChannelData(channel)->CheckData(data, len); | 760 return GetChannelData(channel)->CheckData(data, len); |
| 752 } | 761 } |
| 753 static const cricket::Candidate* LocalCandidate( | 762 static const cricket::Candidate* LocalCandidate( |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 787 } | 796 } |
| 788 | 797 |
| 789 void set_clear_remote_candidates_ufrag_pwd(bool clear) { | 798 void set_clear_remote_candidates_ufrag_pwd(bool clear) { |
| 790 clear_remote_candidates_ufrag_pwd_ = clear; | 799 clear_remote_candidates_ufrag_pwd_ = clear; |
| 791 } | 800 } |
| 792 | 801 |
| 793 void set_force_relay(bool relay) { | 802 void set_force_relay(bool relay) { |
| 794 force_relay_ = relay; | 803 force_relay_ = relay; |
| 795 } | 804 } |
| 796 | 805 |
| 806 int num_selected_candidate_pair_changes() { |
| 807 return num_selected_candidate_pair_changes_; |
| 808 } |
| 809 void set_num_selected_candidate_pair_changes(int num) { |
| 810 num_selected_candidate_pair_changes_ = num; |
| 811 } |
| 812 |
| 797 private: | 813 private: |
| 798 rtc::Thread* main_; | 814 rtc::Thread* main_; |
| 799 rtc::scoped_ptr<rtc::PhysicalSocketServer> pss_; | 815 rtc::scoped_ptr<rtc::PhysicalSocketServer> pss_; |
| 800 rtc::scoped_ptr<rtc::VirtualSocketServer> vss_; | 816 rtc::scoped_ptr<rtc::VirtualSocketServer> vss_; |
| 801 rtc::scoped_ptr<rtc::NATSocketServer> nss_; | 817 rtc::scoped_ptr<rtc::NATSocketServer> nss_; |
| 802 rtc::scoped_ptr<rtc::FirewallSocketServer> ss_; | 818 rtc::scoped_ptr<rtc::FirewallSocketServer> ss_; |
| 803 rtc::SocketServerScope ss_scope_; | 819 rtc::SocketServerScope ss_scope_; |
| 804 rtc::scoped_ptr<cricket::TestStunServer> stun_server_; | 820 rtc::scoped_ptr<cricket::TestStunServer> stun_server_; |
| 805 cricket::TestTurnServer turn_server_; | 821 cricket::TestTurnServer turn_server_; |
| 806 cricket::TestRelayServer relay_server_; | 822 cricket::TestRelayServer relay_server_; |
| 807 rtc::SocksProxyServer socks_server1_; | 823 rtc::SocksProxyServer socks_server1_; |
| 808 rtc::SocksProxyServer socks_server2_; | 824 rtc::SocksProxyServer socks_server2_; |
| 809 Endpoint ep1_; | 825 Endpoint ep1_; |
| 810 Endpoint ep2_; | 826 Endpoint ep2_; |
| 827 int num_selected_candidate_pair_changes_ = 0; |
| 811 bool clear_remote_candidates_ufrag_pwd_; | 828 bool clear_remote_candidates_ufrag_pwd_; |
| 812 bool force_relay_; | 829 bool force_relay_; |
| 813 }; | 830 }; |
| 814 | 831 |
| 815 // The tests have only a few outcomes, which we predefine. | 832 // The tests have only a few outcomes, which we predefine. |
| 816 const P2PTransportChannelTestBase::Result P2PTransportChannelTestBase:: | 833 const P2PTransportChannelTestBase::Result P2PTransportChannelTestBase:: |
| 817 kLocalUdpToLocalUdp("local", "udp", "local", "udp", | 834 kLocalUdpToLocalUdp("local", "udp", "local", "udp", |
| 818 "local", "udp", "local", "udp", 1000); | 835 "local", "udp", "local", "udp", 1000); |
| 819 const P2PTransportChannelTestBase::Result P2PTransportChannelTestBase:: | 836 const P2PTransportChannelTestBase::Result P2PTransportChannelTestBase:: |
| 820 kLocalUdpToStunUdp("local", "udp", "stun", "udp", | 837 kLocalUdpToStunUdp("local", "udp", "stun", "udp", |
| (...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1571 | 1588 |
| 1572 // Test that we can establish connectivity when both peers are multihomed. | 1589 // Test that we can establish connectivity when both peers are multihomed. |
| 1573 TEST_F(P2PTransportChannelMultihomedTest, DISABLED_TestBasic) { | 1590 TEST_F(P2PTransportChannelMultihomedTest, DISABLED_TestBasic) { |
| 1574 AddAddress(0, kPublicAddrs[0]); | 1591 AddAddress(0, kPublicAddrs[0]); |
| 1575 AddAddress(0, kAlternateAddrs[0]); | 1592 AddAddress(0, kAlternateAddrs[0]); |
| 1576 AddAddress(1, kPublicAddrs[1]); | 1593 AddAddress(1, kPublicAddrs[1]); |
| 1577 AddAddress(1, kAlternateAddrs[1]); | 1594 AddAddress(1, kAlternateAddrs[1]); |
| 1578 Test(kLocalUdpToLocalUdp); | 1595 Test(kLocalUdpToLocalUdp); |
| 1579 } | 1596 } |
| 1580 | 1597 |
| 1581 // Test that we can quickly switch links if an interface goes down. | 1598 // Test that we can quickly switch links if an interface goes down. This also |
| 1582 // The controlled side has two interfaces and one will die. | 1599 // tests that when the link switches, |SignalSelectedCandidatePairChanged| will |
| 1600 // be fired. The controlled side has two interfaces and one will die. |
| 1583 TEST_F(P2PTransportChannelMultihomedTest, TestFailoverControlledSide) { | 1601 TEST_F(P2PTransportChannelMultihomedTest, TestFailoverControlledSide) { |
| 1584 AddAddress(0, kPublicAddrs[0]); | 1602 AddAddress(0, kPublicAddrs[0]); |
| 1585 // Adding alternate address will make sure |kPublicAddrs| has the higher | 1603 // Adding alternate address will make sure |kPublicAddrs| has the higher |
| 1586 // priority than others. This is due to FakeNetwork::AddInterface method. | 1604 // priority than others. This is due to FakeNetwork::AddInterface method. |
| 1587 AddAddress(1, kAlternateAddrs[1]); | 1605 AddAddress(1, kAlternateAddrs[1]); |
| 1588 AddAddress(1, kPublicAddrs[1]); | 1606 AddAddress(1, kPublicAddrs[1]); |
| 1589 | 1607 |
| 1590 // Use only local ports for simplicity. | 1608 // Use only local ports for simplicity. |
| 1591 SetAllocatorFlags(0, kOnlyLocalPorts); | 1609 SetAllocatorFlags(0, kOnlyLocalPorts); |
| 1592 SetAllocatorFlags(1, kOnlyLocalPorts); | 1610 SetAllocatorFlags(1, kOnlyLocalPorts); |
| 1593 | 1611 |
| 1594 // Create channels and let them go writable, as usual. | 1612 // Create channels and let them go writable, as usual. |
| 1595 CreateChannels(1); | 1613 CreateChannels(1); |
| 1596 | 1614 |
| 1597 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1()->receiving() && ep1_ch1()->writable() && | 1615 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1()->receiving() && ep1_ch1()->writable() && |
| 1598 ep2_ch1()->receiving() && ep2_ch1()->writable(), | 1616 ep2_ch1()->receiving() && ep2_ch1()->writable(), |
| 1599 1000, 1000); | 1617 1000, 1000); |
| 1600 EXPECT_TRUE( | 1618 EXPECT_TRUE( |
| 1601 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() && | 1619 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() && |
| 1602 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) && | 1620 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) && |
| 1603 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); | 1621 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); |
| 1604 | 1622 |
| 1605 // Make the receiving timeout shorter for testing. | 1623 // Make the receiving timeout shorter for testing. |
| 1606 cricket::IceConfig config = CreateIceConfig(1000, false); | 1624 cricket::IceConfig config = CreateIceConfig(1000, false); |
| 1607 ep1_ch1()->SetIceConfig(config); | 1625 ep1_ch1()->SetIceConfig(config); |
| 1608 ep2_ch1()->SetIceConfig(config); | 1626 ep2_ch1()->SetIceConfig(config); |
| 1609 | 1627 |
| 1628 set_num_selected_candidate_pair_changes(0); |
| 1610 // Blackhole any traffic to or from the public addrs. | 1629 // Blackhole any traffic to or from the public addrs. |
| 1611 LOG(LS_INFO) << "Failing over..."; | 1630 LOG(LS_INFO) << "Failing over..."; |
| 1612 fw()->AddRule(false, rtc::FP_ANY, rtc::FD_ANY, kPublicAddrs[1]); | 1631 fw()->AddRule(false, rtc::FP_ANY, rtc::FD_ANY, kPublicAddrs[1]); |
| 1613 // The best connections will switch, so keep references to them. | 1632 // The best connections will switch, so keep references to them. |
| 1614 const cricket::Connection* best_connection1 = ep1_ch1()->best_connection(); | 1633 const cricket::Connection* best_connection1 = ep1_ch1()->best_connection(); |
| 1615 const cricket::Connection* best_connection2 = ep2_ch1()->best_connection(); | 1634 const cricket::Connection* best_connection2 = ep2_ch1()->best_connection(); |
| 1616 // We should detect loss of receiving within 1 second or so. | 1635 // We should detect loss of receiving within 1 second or so. |
| 1617 EXPECT_TRUE_WAIT( | 1636 EXPECT_TRUE_WAIT( |
| 1618 !best_connection1->receiving() && !best_connection2->receiving(), 3000); | 1637 !best_connection1->receiving() && !best_connection2->receiving(), 3000); |
| 1619 | 1638 |
| 1620 // We should switch over to use the alternate addr immediately on both sides | 1639 // We should switch over to use the alternate addr immediately on both sides |
| 1621 // when we are not receiving. | 1640 // when we are not receiving. |
| 1622 EXPECT_TRUE_WAIT( | 1641 EXPECT_TRUE_WAIT( |
| 1623 ep1_ch1()->best_connection()->receiving() && | 1642 ep1_ch1()->best_connection()->receiving() && |
| 1624 ep2_ch1()->best_connection()->receiving(), 1000); | 1643 ep2_ch1()->best_connection()->receiving(), 1000); |
| 1625 EXPECT_TRUE(LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0])); | 1644 EXPECT_TRUE(LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0])); |
| 1626 EXPECT_TRUE( | 1645 EXPECT_TRUE( |
| 1627 RemoteCandidate(ep1_ch1())->address().EqualIPs(kAlternateAddrs[1])); | 1646 RemoteCandidate(ep1_ch1())->address().EqualIPs(kAlternateAddrs[1])); |
| 1628 EXPECT_TRUE( | 1647 EXPECT_TRUE( |
| 1629 LocalCandidate(ep2_ch1())->address().EqualIPs(kAlternateAddrs[1])); | 1648 LocalCandidate(ep2_ch1())->address().EqualIPs(kAlternateAddrs[1])); |
| 1649 // It should have changed twice, one on each side. |
| 1650 EXPECT_EQ(2, num_selected_candidate_pair_changes()); |
| 1630 | 1651 |
| 1631 DestroyChannels(); | 1652 DestroyChannels(); |
| 1632 } | 1653 } |
| 1633 | 1654 |
| 1634 // Test that we can quickly switch links if an interface goes down. | 1655 // Test that we can quickly switch links if an interface goes down. This also |
| 1635 // The controlling side has two interfaces and one will die. | 1656 // tests that when the link switches, |SignalSelectedCandidatePairChanged| will |
| 1657 // be fired. The controlling side has two interfaces and one will die. |
| 1636 TEST_F(P2PTransportChannelMultihomedTest, TestFailoverControllingSide) { | 1658 TEST_F(P2PTransportChannelMultihomedTest, TestFailoverControllingSide) { |
| 1637 // Adding alternate address will make sure |kPublicAddrs| has the higher | 1659 // Adding alternate address will make sure |kPublicAddrs| has the higher |
| 1638 // priority than others. This is due to FakeNetwork::AddInterface method. | 1660 // priority than others. This is due to FakeNetwork::AddInterface method. |
| 1639 AddAddress(0, kAlternateAddrs[0]); | 1661 AddAddress(0, kAlternateAddrs[0]); |
| 1640 AddAddress(0, kPublicAddrs[0]); | 1662 AddAddress(0, kPublicAddrs[0]); |
| 1641 AddAddress(1, kPublicAddrs[1]); | 1663 AddAddress(1, kPublicAddrs[1]); |
| 1642 | 1664 |
| 1643 // Use only local ports for simplicity. | 1665 // Use only local ports for simplicity. |
| 1644 SetAllocatorFlags(0, kOnlyLocalPorts); | 1666 SetAllocatorFlags(0, kOnlyLocalPorts); |
| 1645 SetAllocatorFlags(1, kOnlyLocalPorts); | 1667 SetAllocatorFlags(1, kOnlyLocalPorts); |
| 1646 | 1668 |
| 1647 // Create channels and let them go writable, as usual. | 1669 // Create channels and let them go writable, as usual. |
| 1648 CreateChannels(1); | 1670 CreateChannels(1); |
| 1649 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1()->receiving() && ep1_ch1()->writable() && | 1671 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1()->receiving() && ep1_ch1()->writable() && |
| 1650 ep2_ch1()->receiving() && ep2_ch1()->writable(), | 1672 ep2_ch1()->receiving() && ep2_ch1()->writable(), |
| 1651 1000, 1000); | 1673 1000, 1000); |
| 1652 EXPECT_TRUE( | 1674 EXPECT_TRUE( |
| 1653 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() && | 1675 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() && |
| 1654 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) && | 1676 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) && |
| 1655 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); | 1677 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); |
| 1656 | 1678 |
| 1657 // Make the receiving timeout shorter for testing. | 1679 // Make the receiving timeout shorter for testing. |
| 1658 cricket::IceConfig config = CreateIceConfig(1000, false); | 1680 cricket::IceConfig config = CreateIceConfig(1000, false); |
| 1659 ep1_ch1()->SetIceConfig(config); | 1681 ep1_ch1()->SetIceConfig(config); |
| 1660 ep2_ch1()->SetIceConfig(config); | 1682 ep2_ch1()->SetIceConfig(config); |
| 1683 set_num_selected_candidate_pair_changes(0); |
| 1661 | 1684 |
| 1662 // Blackhole any traffic to or from the public addrs. | 1685 // Blackhole any traffic to or from the public addrs. |
| 1663 LOG(LS_INFO) << "Failing over..."; | 1686 LOG(LS_INFO) << "Failing over..."; |
| 1664 fw()->AddRule(false, rtc::FP_ANY, rtc::FD_ANY, kPublicAddrs[0]); | 1687 fw()->AddRule(false, rtc::FP_ANY, rtc::FD_ANY, kPublicAddrs[0]); |
| 1665 // The best connections will switch, so keep references to them. | 1688 // The best connections will switch, so keep references to them. |
| 1666 const cricket::Connection* best_connection1 = ep1_ch1()->best_connection(); | 1689 const cricket::Connection* best_connection1 = ep1_ch1()->best_connection(); |
| 1667 const cricket::Connection* best_connection2 = ep2_ch1()->best_connection(); | 1690 const cricket::Connection* best_connection2 = ep2_ch1()->best_connection(); |
| 1668 // We should detect loss of receiving within 1 second or so. | 1691 // We should detect loss of receiving within 1 second or so. |
| 1669 EXPECT_TRUE_WAIT( | 1692 EXPECT_TRUE_WAIT( |
| 1670 !best_connection1->receiving() && !best_connection2->receiving(), 3000); | 1693 !best_connection1->receiving() && !best_connection2->receiving(), 3000); |
| 1671 | 1694 |
| 1672 // We should switch over to use the alternate addr immediately on both sides | 1695 // We should switch over to use the alternate addr immediately on both sides |
| 1673 // when we are not receiving. | 1696 // when we are not receiving. |
| 1674 EXPECT_TRUE_WAIT( | 1697 EXPECT_TRUE_WAIT( |
| 1675 ep1_ch1()->best_connection()->receiving() && | 1698 ep1_ch1()->best_connection()->receiving() && |
| 1676 ep2_ch1()->best_connection()->receiving(), 1000); | 1699 ep2_ch1()->best_connection()->receiving(), 1000); |
| 1677 EXPECT_TRUE( | 1700 EXPECT_TRUE( |
| 1678 LocalCandidate(ep1_ch1())->address().EqualIPs(kAlternateAddrs[0])); | 1701 LocalCandidate(ep1_ch1())->address().EqualIPs(kAlternateAddrs[0])); |
| 1679 EXPECT_TRUE(RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); | 1702 EXPECT_TRUE(RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); |
| 1680 EXPECT_TRUE( | 1703 EXPECT_TRUE( |
| 1681 RemoteCandidate(ep2_ch1())->address().EqualIPs(kAlternateAddrs[0])); | 1704 RemoteCandidate(ep2_ch1())->address().EqualIPs(kAlternateAddrs[0])); |
| 1705 EXPECT_EQ(2, num_selected_candidate_pair_changes()); |
| 1682 | 1706 |
| 1683 DestroyChannels(); | 1707 DestroyChannels(); |
| 1684 } | 1708 } |
| 1685 | 1709 |
| 1686 // Tests that a Wifi-Wifi connection has the highest precedence. | 1710 // Tests that a Wifi-Wifi connection has the highest precedence. |
| 1687 TEST_F(P2PTransportChannelMultihomedTest, TestPreferWifiToWifiConnection) { | 1711 TEST_F(P2PTransportChannelMultihomedTest, TestPreferWifiToWifiConnection) { |
| 1688 // The interface names are chosen so that |cellular| would have higher | 1712 // The interface names are chosen so that |cellular| would have higher |
| 1689 // candidate priority if it is not for the network type. | 1713 // candidate priority if it is not for the network type. |
| 1690 auto& wifi = kAlternateAddrs; | 1714 auto& wifi = kAlternateAddrs; |
| 1691 auto& cellular = kPublicAddrs; | 1715 auto& cellular = kPublicAddrs; |
| (...skipping 1029 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2721 | 2745 |
| 2722 // TCP Relay/Relay is the next. | 2746 // TCP Relay/Relay is the next. |
| 2723 VerifyNextPingableConnection(cricket::RELAY_PORT_TYPE, | 2747 VerifyNextPingableConnection(cricket::RELAY_PORT_TYPE, |
| 2724 cricket::RELAY_PORT_TYPE, | 2748 cricket::RELAY_PORT_TYPE, |
| 2725 cricket::TCP_PROTOCOL_NAME); | 2749 cricket::TCP_PROTOCOL_NAME); |
| 2726 | 2750 |
| 2727 // Finally, Local/Relay will be pinged. | 2751 // Finally, Local/Relay will be pinged. |
| 2728 VerifyNextPingableConnection(cricket::LOCAL_PORT_TYPE, | 2752 VerifyNextPingableConnection(cricket::LOCAL_PORT_TYPE, |
| 2729 cricket::RELAY_PORT_TYPE); | 2753 cricket::RELAY_PORT_TYPE); |
| 2730 } | 2754 } |
| OLD | NEW |