Index: webrtc/p2p/client/basicportallocator_unittest.cc |
diff --git a/webrtc/p2p/client/basicportallocator_unittest.cc b/webrtc/p2p/client/basicportallocator_unittest.cc |
index 83d904f181480deca88bc1701af4e7e451e6208c..39d0ef6f6182337d3b2356ac8e694d07a09557c8 100644 |
--- a/webrtc/p2p/client/basicportallocator_unittest.cc |
+++ b/webrtc/p2p/client/basicportallocator_unittest.cc |
@@ -477,6 +477,53 @@ TEST_F(BasicPortAllocatorTest, TestIgnoreNetworksAccordingToIgnoreMask) { |
EXPECT_EQ(0x12345602U, candidates_[0].address().ip()); |
} |
+// Test that high cost networks are filtered if the flag |
+// GATHER_LOW_COST_NETWORK_ONLY is enabled. |
+TEST_F(BasicPortAllocatorTest, TestGatherLowCostNetworkOnly) { |
+ SocketAddress addr_wifi(IPAddress(0x12345600U), 0); |
+ SocketAddress addr_cellular(IPAddress(0x12345601U), 0); |
+ SocketAddress addr_unknown1(IPAddress(0x12345602U), 0); |
+ SocketAddress addr_unknown2(IPAddress(0x12345603U), 0); |
+ // If both Wifi and Cellular interfaces are present, only gather on the Wifi |
+ // interface. |
+ AddInterface(addr_wifi, "test_wlan0", rtc::ADAPTER_TYPE_WIFI); |
+ AddInterface(addr_cellular, "test_cell0", rtc::ADAPTER_TYPE_CELLULAR); |
+ allocator().set_flags(cricket::PORTALLOCATOR_DISABLE_STUN | |
+ cricket::PORTALLOCATOR_DISABLE_RELAY | |
+ cricket::PORTALLOCATOR_DISABLE_TCP | |
+ cricket::PORTALLOCATOR_GATHER_LOW_COST_NETWORK_ONLY); |
+ EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
+ session_->StartGettingPorts(); |
+ EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); |
+ EXPECT_EQ(1U, candidates_.size()); |
+ EXPECT_TRUE(addr_wifi.EqualIPs(candidates_[0].address())); |
+ |
+ // If both Cellular and Unknown interfaces are present, only gather on the |
+ // Unknown interfaces. |
pthatcher1
2016/05/17 20:44:28
Unknown => unknown
(and Cellular and Wifi here al
honghaiz3
2016/05/18 05:55:03
Done.
|
+ candidates_.clear(); |
+ candidate_allocation_done_ = false; |
+ RemoveInterface(addr_wifi); |
+ AddInterface(addr_unknown1, "test_unknown0", rtc::ADAPTER_TYPE_UNKNOWN); |
+ AddInterface(addr_unknown2, "test_unknown1", rtc::ADAPTER_TYPE_UNKNOWN); |
+ session_->StartGettingPorts(); |
+ EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); |
+ EXPECT_EQ(2U, candidates_.size()); |
+ EXPECT_TRUE((addr_unknown1.EqualIPs(candidates_[0].address()) && |
+ addr_unknown2.EqualIPs(candidates_[1].address())) || |
+ (addr_unknown1.EqualIPs(candidates_[1].address()) && |
+ addr_unknown2.EqualIPs(candidates_[0].address()))); |
+ |
+ // If Wifi, Cellular, Unknown interfaces are all present, only gather on the |
+ // Wifi interface. |
+ candidates_.clear(); |
+ candidate_allocation_done_ = false; |
+ AddInterface(addr_wifi, "test_wlan0", rtc::ADAPTER_TYPE_WIFI); |
+ session_->StartGettingPorts(); |
+ EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); |
+ EXPECT_EQ(1U, candidates_.size()); |
+ EXPECT_TRUE(addr_wifi.EqualIPs(candidates_[0].address())); |
+} |
+ |
// Tests that we allocator session not trying to allocate ports for every 250ms. |
TEST_F(BasicPortAllocatorTest, TestNoNetworkInterface) { |
EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |