Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(148)

Side by Side Diff: webrtc/p2p/base/p2ptransportchannel_unittest.cc

Issue 2124283003: Fixing inconsistency with behavior of `ClearGettingPorts`. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fixing test that tried to enable continual gathering in the middle of a session. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/p2p/base/p2ptransportchannel.cc ('k') | webrtc/p2p/base/portallocator.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 bool ready_to_send_ = false; 298 bool ready_to_send_ = false;
299 }; 299 };
300 300
301 ChannelData* GetChannelData(TransportChannel* channel) { 301 ChannelData* GetChannelData(TransportChannel* channel) {
302 if (ep1_.HasChannel(channel)) 302 if (ep1_.HasChannel(channel))
303 return ep1_.GetChannelData(channel); 303 return ep1_.GetChannelData(channel);
304 else 304 else
305 return ep2_.GetChannelData(channel); 305 return ep2_.GetChannelData(channel);
306 } 306 }
307 307
308 void CreateChannels(int num) { 308 void CreateChannels(int num,
309 const IceConfig& ep1_config,
310 const IceConfig& ep2_config) {
309 std::string ice_ufrag_ep1_cd1_ch = kIceUfrag[0]; 311 std::string ice_ufrag_ep1_cd1_ch = kIceUfrag[0];
310 std::string ice_pwd_ep1_cd1_ch = kIcePwd[0]; 312 std::string ice_pwd_ep1_cd1_ch = kIcePwd[0];
311 std::string ice_ufrag_ep2_cd1_ch = kIceUfrag[1]; 313 std::string ice_ufrag_ep2_cd1_ch = kIceUfrag[1];
312 std::string ice_pwd_ep2_cd1_ch = kIcePwd[1]; 314 std::string ice_pwd_ep2_cd1_ch = kIcePwd[1];
313 ep1_.cd1_.ch_.reset(CreateChannel( 315 ep1_.cd1_.ch_.reset(CreateChannel(
314 0, ICE_CANDIDATE_COMPONENT_DEFAULT, ice_ufrag_ep1_cd1_ch, 316 0, ICE_CANDIDATE_COMPONENT_DEFAULT, ice_ufrag_ep1_cd1_ch,
315 ice_pwd_ep1_cd1_ch, ice_ufrag_ep2_cd1_ch, ice_pwd_ep2_cd1_ch)); 317 ice_pwd_ep1_cd1_ch, ice_ufrag_ep2_cd1_ch, ice_pwd_ep2_cd1_ch));
316 ep2_.cd1_.ch_.reset(CreateChannel( 318 ep2_.cd1_.ch_.reset(CreateChannel(
317 1, ICE_CANDIDATE_COMPONENT_DEFAULT, ice_ufrag_ep2_cd1_ch, 319 1, ICE_CANDIDATE_COMPONENT_DEFAULT, ice_ufrag_ep2_cd1_ch,
318 ice_pwd_ep2_cd1_ch, ice_ufrag_ep1_cd1_ch, ice_pwd_ep1_cd1_ch)); 320 ice_pwd_ep2_cd1_ch, ice_ufrag_ep1_cd1_ch, ice_pwd_ep1_cd1_ch));
321 ep1_.cd1_.ch_->SetIceConfig(ep1_config);
322 ep2_.cd1_.ch_->SetIceConfig(ep2_config);
319 ep1_.cd1_.ch_->MaybeStartGathering(); 323 ep1_.cd1_.ch_->MaybeStartGathering();
320 ep2_.cd1_.ch_->MaybeStartGathering(); 324 ep2_.cd1_.ch_->MaybeStartGathering();
321 if (num == 2) { 325 if (num == 2) {
322 std::string ice_ufrag_ep1_cd2_ch = kIceUfrag[2]; 326 std::string ice_ufrag_ep1_cd2_ch = kIceUfrag[2];
323 std::string ice_pwd_ep1_cd2_ch = kIcePwd[2]; 327 std::string ice_pwd_ep1_cd2_ch = kIcePwd[2];
324 std::string ice_ufrag_ep2_cd2_ch = kIceUfrag[3]; 328 std::string ice_ufrag_ep2_cd2_ch = kIceUfrag[3];
325 std::string ice_pwd_ep2_cd2_ch = kIcePwd[3]; 329 std::string ice_pwd_ep2_cd2_ch = kIcePwd[3];
326 ep1_.cd2_.ch_.reset(CreateChannel( 330 ep1_.cd2_.ch_.reset(CreateChannel(
327 0, ICE_CANDIDATE_COMPONENT_DEFAULT, ice_ufrag_ep1_cd2_ch, 331 0, ICE_CANDIDATE_COMPONENT_DEFAULT, ice_ufrag_ep1_cd2_ch,
328 ice_pwd_ep1_cd2_ch, ice_ufrag_ep2_cd2_ch, ice_pwd_ep2_cd2_ch)); 332 ice_pwd_ep1_cd2_ch, ice_ufrag_ep2_cd2_ch, ice_pwd_ep2_cd2_ch));
329 ep2_.cd2_.ch_.reset(CreateChannel( 333 ep2_.cd2_.ch_.reset(CreateChannel(
330 1, ICE_CANDIDATE_COMPONENT_DEFAULT, ice_ufrag_ep2_cd2_ch, 334 1, ICE_CANDIDATE_COMPONENT_DEFAULT, ice_ufrag_ep2_cd2_ch,
331 ice_pwd_ep2_cd2_ch, ice_ufrag_ep1_cd2_ch, ice_pwd_ep1_cd2_ch)); 335 ice_pwd_ep2_cd2_ch, ice_ufrag_ep1_cd2_ch, ice_pwd_ep1_cd2_ch));
336 ep1_.cd2_.ch_->SetIceConfig(ep1_config);
337 ep2_.cd2_.ch_->SetIceConfig(ep2_config);
332 ep1_.cd2_.ch_->MaybeStartGathering(); 338 ep1_.cd2_.ch_->MaybeStartGathering();
333 ep2_.cd2_.ch_->MaybeStartGathering(); 339 ep2_.cd2_.ch_->MaybeStartGathering();
334 } 340 }
335 } 341 }
342
343 void CreateChannels(int num) {
344 IceConfig default_config;
345 CreateChannels(num, default_config, default_config);
346 }
347
336 P2PTransportChannel* CreateChannel(int endpoint, 348 P2PTransportChannel* CreateChannel(int endpoint,
337 int component, 349 int component,
338 const std::string& local_ice_ufrag, 350 const std::string& local_ice_ufrag,
339 const std::string& local_ice_pwd, 351 const std::string& local_ice_pwd,
340 const std::string& remote_ice_ufrag, 352 const std::string& remote_ice_ufrag,
341 const std::string& remote_ice_pwd) { 353 const std::string& remote_ice_pwd) {
342 P2PTransportChannel* channel = new P2PTransportChannel( 354 P2PTransportChannel* channel = new P2PTransportChannel(
343 "test content name", component, GetAllocator(endpoint)); 355 "test content name", component, GetAllocator(endpoint));
344 channel->SignalReadyToSend.connect( 356 channel->SignalReadyToSend.connect(
345 this, &P2PTransportChannelTestBase::OnReadyToSend); 357 this, &P2PTransportChannelTestBase::OnReadyToSend);
(...skipping 1220 matching lines...) Expand 10 before | Expand all | Expand 10 after
1566 DestroyChannels(); 1578 DestroyChannels();
1567 } 1579 }
1568 1580
1569 // Test that if continual gathering is set to true, ICE gathering state will 1581 // Test that if continual gathering is set to true, ICE gathering state will
1570 // not change to "Complete", and vice versa. 1582 // not change to "Complete", and vice versa.
1571 TEST_F(P2PTransportChannelTest, TestContinualGathering) { 1583 TEST_F(P2PTransportChannelTest, TestContinualGathering) {
1572 ConfigureEndpoints(OPEN, OPEN, kDefaultPortAllocatorFlags, 1584 ConfigureEndpoints(OPEN, OPEN, kDefaultPortAllocatorFlags,
1573 kDefaultPortAllocatorFlags); 1585 kDefaultPortAllocatorFlags);
1574 SetAllocationStepDelay(0, kDefaultStepDelay); 1586 SetAllocationStepDelay(0, kDefaultStepDelay);
1575 SetAllocationStepDelay(1, kDefaultStepDelay); 1587 SetAllocationStepDelay(1, kDefaultStepDelay);
1576 CreateChannels(1); 1588 IceConfig continual_gathering_config =
1577 IceConfig config = CreateIceConfig(1000, GATHER_CONTINUALLY); 1589 CreateIceConfig(1000, GATHER_CONTINUALLY);
1578 ep1_ch1()->SetIceConfig(config);
1579 // By default, ep2 does not gather continually. 1590 // By default, ep2 does not gather continually.
1591 IceConfig default_config;
1592 CreateChannels(1, continual_gathering_config, default_config);
1580 1593
1581 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1() != NULL && ep2_ch1() != NULL && 1594 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1() != NULL && ep2_ch1() != NULL &&
1582 ep1_ch1()->receiving() && ep1_ch1()->writable() && 1595 ep1_ch1()->receiving() && ep1_ch1()->writable() &&
1583 ep2_ch1()->receiving() && ep2_ch1()->writable(), 1596 ep2_ch1()->receiving() && ep2_ch1()->writable(),
1584 1000, 1000); 1597 1000, 1000);
1585 WAIT(IceGatheringState::kIceGatheringComplete == ep1_ch1()->gathering_state(), 1598 WAIT(IceGatheringState::kIceGatheringComplete == ep1_ch1()->gathering_state(),
1586 1000); 1599 1000);
1587 EXPECT_EQ(IceGatheringState::kIceGatheringGathering, 1600 EXPECT_EQ(IceGatheringState::kIceGatheringGathering,
1588 ep1_ch1()->gathering_state()); 1601 ep1_ch1()->gathering_state());
1589 // By now, ep2 should have completed gathering. 1602 // By now, ep2 should have completed gathering.
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
1901 AddAddress(0, kPublicAddrs[0]); 1914 AddAddress(0, kPublicAddrs[0]);
1902 // Adding alternate address will make sure |kPublicAddrs| has the higher 1915 // Adding alternate address will make sure |kPublicAddrs| has the higher
1903 // priority than others. This is due to FakeNetwork::AddInterface method. 1916 // priority than others. This is due to FakeNetwork::AddInterface method.
1904 AddAddress(1, kAlternateAddrs[1]); 1917 AddAddress(1, kAlternateAddrs[1]);
1905 AddAddress(1, kPublicAddrs[1]); 1918 AddAddress(1, kPublicAddrs[1]);
1906 1919
1907 // Use only local ports for simplicity. 1920 // Use only local ports for simplicity.
1908 SetAllocatorFlags(0, kOnlyLocalPorts); 1921 SetAllocatorFlags(0, kOnlyLocalPorts);
1909 SetAllocatorFlags(1, kOnlyLocalPorts); 1922 SetAllocatorFlags(1, kOnlyLocalPorts);
1910 1923
1924 // Make the receiving timeout shorter for testing.
1925 IceConfig config = CreateIceConfig(1000, GATHER_ONCE);
1911 // Create channels and let them go writable, as usual. 1926 // Create channels and let them go writable, as usual.
1912 CreateChannels(1); 1927 CreateChannels(1, config, config);
1913 1928
1914 EXPECT_TRUE_SIMULATED_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() && 1929 EXPECT_TRUE_SIMULATED_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() &&
1915 ep2_ch1()->receiving() && 1930 ep2_ch1()->receiving() &&
1916 ep2_ch1()->writable(), 1931 ep2_ch1()->writable(),
1917 3000, clock); 1932 3000, clock);
1918 EXPECT_TRUE(ep1_ch1()->selected_connection() && 1933 EXPECT_TRUE(ep1_ch1()->selected_connection() &&
1919 ep2_ch1()->selected_connection() && 1934 ep2_ch1()->selected_connection() &&
1920 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) && 1935 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) &&
1921 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); 1936 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1]));
1922 1937
1923 // Make the receiving timeout shorter for testing.
1924 IceConfig config = CreateIceConfig(1000, GATHER_ONCE);
1925 ep1_ch1()->SetIceConfig(config);
1926 ep2_ch1()->SetIceConfig(config);
1927
1928 // Blackhole any traffic to or from the public addrs. 1938 // Blackhole any traffic to or from the public addrs.
1929 LOG(LS_INFO) << "Failing over..."; 1939 LOG(LS_INFO) << "Failing over...";
1930 fw()->AddRule(false, rtc::FP_ANY, rtc::FD_ANY, kPublicAddrs[1]); 1940 fw()->AddRule(false, rtc::FP_ANY, rtc::FD_ANY, kPublicAddrs[1]);
1931 // The selected connections may switch, so keep references to them. 1941 // The selected connections may switch, so keep references to them.
1932 const Connection* selected_connection1 = ep1_ch1()->selected_connection(); 1942 const Connection* selected_connection1 = ep1_ch1()->selected_connection();
1933 const Connection* selected_connection2 = ep2_ch1()->selected_connection(); 1943 const Connection* selected_connection2 = ep2_ch1()->selected_connection();
1934 // We should detect loss of receiving within 1 second or so. 1944 // We should detect loss of receiving within 1 second or so.
1935 EXPECT_TRUE_SIMULATED_WAIT( 1945 EXPECT_TRUE_SIMULATED_WAIT(
1936 !selected_connection1->receiving() && !selected_connection2->receiving(), 1946 !selected_connection1->receiving() && !selected_connection2->receiving(),
1937 3000, clock); 1947 3000, clock);
(...skipping 19 matching lines...) Expand all
1957 // Adding alternate address will make sure |kPublicAddrs| has the higher 1967 // Adding alternate address will make sure |kPublicAddrs| has the higher
1958 // priority than others. This is due to FakeNetwork::AddInterface method. 1968 // priority than others. This is due to FakeNetwork::AddInterface method.
1959 AddAddress(0, kAlternateAddrs[0]); 1969 AddAddress(0, kAlternateAddrs[0]);
1960 AddAddress(0, kPublicAddrs[0]); 1970 AddAddress(0, kPublicAddrs[0]);
1961 AddAddress(1, kPublicAddrs[1]); 1971 AddAddress(1, kPublicAddrs[1]);
1962 1972
1963 // Use only local ports for simplicity. 1973 // Use only local ports for simplicity.
1964 SetAllocatorFlags(0, kOnlyLocalPorts); 1974 SetAllocatorFlags(0, kOnlyLocalPorts);
1965 SetAllocatorFlags(1, kOnlyLocalPorts); 1975 SetAllocatorFlags(1, kOnlyLocalPorts);
1966 1976
1977 // Make the receiving timeout shorter for testing.
1978 IceConfig config = CreateIceConfig(1000, GATHER_ONCE);
1967 // Create channels and let them go writable, as usual. 1979 // Create channels and let them go writable, as usual.
1968 CreateChannels(1); 1980 CreateChannels(1, config, config);
1969 EXPECT_TRUE_SIMULATED_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() && 1981 EXPECT_TRUE_SIMULATED_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() &&
1970 ep2_ch1()->receiving() && 1982 ep2_ch1()->receiving() &&
1971 ep2_ch1()->writable(), 1983 ep2_ch1()->writable(),
1972 3000, clock); 1984 3000, clock);
1973 EXPECT_TRUE(ep1_ch1()->selected_connection() && 1985 EXPECT_TRUE(ep1_ch1()->selected_connection() &&
1974 ep2_ch1()->selected_connection() && 1986 ep2_ch1()->selected_connection() &&
1975 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) && 1987 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) &&
1976 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); 1988 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1]));
1977 1989
1978 // Make the receiving timeout shorter for testing.
1979 IceConfig config = CreateIceConfig(1000, GATHER_ONCE);
1980 ep1_ch1()->SetIceConfig(config);
1981 ep2_ch1()->SetIceConfig(config);
1982
1983 // Blackhole any traffic to or from the public addrs. 1990 // Blackhole any traffic to or from the public addrs.
1984 LOG(LS_INFO) << "Failing over..."; 1991 LOG(LS_INFO) << "Failing over...";
1985 fw()->AddRule(false, rtc::FP_ANY, rtc::FD_ANY, kPublicAddrs[0]); 1992 fw()->AddRule(false, rtc::FP_ANY, rtc::FD_ANY, kPublicAddrs[0]);
1986 // The selected connections will switch, so keep references to them. 1993 // The selected connections will switch, so keep references to them.
1987 const Connection* selected_connection1 = ep1_ch1()->selected_connection(); 1994 const Connection* selected_connection1 = ep1_ch1()->selected_connection();
1988 const Connection* selected_connection2 = ep2_ch1()->selected_connection(); 1995 const Connection* selected_connection2 = ep2_ch1()->selected_connection();
1989 // We should detect loss of receiving within 1 second or so. 1996 // We should detect loss of receiving within 1 second or so.
1990 EXPECT_TRUE_SIMULATED_WAIT( 1997 EXPECT_TRUE_SIMULATED_WAIT(
1991 !selected_connection1->receiving() && !selected_connection2->receiving(), 1998 !selected_connection1->receiving() && !selected_connection2->receiving(),
1992 3000, clock); 1999 3000, clock);
(...skipping 20 matching lines...) Expand all
2013 // Adding alternate address will make sure |kPublicAddrs| has the higher 2020 // Adding alternate address will make sure |kPublicAddrs| has the higher
2014 // priority than others. This is due to FakeNetwork::AddInterface method. 2021 // priority than others. This is due to FakeNetwork::AddInterface method.
2015 AddAddress(0, kAlternateAddrs[0]); 2022 AddAddress(0, kAlternateAddrs[0]);
2016 AddAddress(0, kPublicAddrs[0]); 2023 AddAddress(0, kPublicAddrs[0]);
2017 AddAddress(1, kPublicAddrs[1]); 2024 AddAddress(1, kPublicAddrs[1]);
2018 2025
2019 // Use only local ports for simplicity. 2026 // Use only local ports for simplicity.
2020 SetAllocatorFlags(0, kOnlyLocalPorts); 2027 SetAllocatorFlags(0, kOnlyLocalPorts);
2021 SetAllocatorFlags(1, kOnlyLocalPorts); 2028 SetAllocatorFlags(1, kOnlyLocalPorts);
2022 2029
2030 // Make the receiving timeout shorter for testing.
2031 IceConfig config = CreateIceConfig(1000, GATHER_ONCE);
2023 // Create channels and let them go writable, as usual. 2032 // Create channels and let them go writable, as usual.
2024 CreateChannels(1); 2033 CreateChannels(1, config, config);
2025 ep1_ch1()->set_remote_supports_renomination(true); 2034 ep1_ch1()->set_remote_supports_renomination(true);
2026 EXPECT_TRUE_SIMULATED_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() && 2035 EXPECT_TRUE_SIMULATED_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() &&
2027 ep2_ch1()->receiving() && 2036 ep2_ch1()->receiving() &&
2028 ep2_ch1()->writable(), 2037 ep2_ch1()->writable(),
2029 3000, clock); 2038 3000, clock);
2030 EXPECT_TRUE_SIMULATED_WAIT( 2039 EXPECT_TRUE_SIMULATED_WAIT(
2031 ep2_ch1()->selected_connection()->remote_nomination() > 0 && 2040 ep2_ch1()->selected_connection()->remote_nomination() > 0 &&
2032 ep1_ch1()->selected_connection()->acked_nomination() > 0, 2041 ep1_ch1()->selected_connection()->acked_nomination() > 0,
2033 kDefaultTimeout, clock); 2042 kDefaultTimeout, clock);
2034 const Connection* selected_connection1 = ep1_ch1()->selected_connection(); 2043 const Connection* selected_connection1 = ep1_ch1()->selected_connection();
2035 Connection* selected_connection2 = 2044 Connection* selected_connection2 =
2036 const_cast<Connection*>(ep2_ch1()->selected_connection()); 2045 const_cast<Connection*>(ep2_ch1()->selected_connection());
2037 uint32_t remote_nomination2 = selected_connection2->remote_nomination(); 2046 uint32_t remote_nomination2 = selected_connection2->remote_nomination();
2038 // |selected_connection2| should not be nominated any more since the previous 2047 // |selected_connection2| should not be nominated any more since the previous
2039 // nomination has been acknowledged. 2048 // nomination has been acknowledged.
2040 ConnectSignalNominated(selected_connection2); 2049 ConnectSignalNominated(selected_connection2);
2041 SIMULATED_WAIT(nominated(), 3000, clock); 2050 SIMULATED_WAIT(nominated(), 3000, clock);
2042 EXPECT_FALSE(nominated()); 2051 EXPECT_FALSE(nominated());
2043 2052
2044 // Make the receiving timeout shorter for testing.
2045 IceConfig config = CreateIceConfig(1000, GATHER_ONCE);
2046 ep1_ch1()->SetIceConfig(config);
2047 ep2_ch1()->SetIceConfig(config);
2048
2049 // Blackhole any traffic to or from the public addrs. 2053 // Blackhole any traffic to or from the public addrs.
2050 LOG(LS_INFO) << "Failing over..."; 2054 LOG(LS_INFO) << "Failing over...";
2051 fw()->AddRule(false, rtc::FP_ANY, rtc::FD_ANY, kPublicAddrs[0]); 2055 fw()->AddRule(false, rtc::FP_ANY, rtc::FD_ANY, kPublicAddrs[0]);
2052 2056
2053 // The selected connection on the controlling side should switch. 2057 // The selected connection on the controlling side should switch.
2054 EXPECT_TRUE_SIMULATED_WAIT( 2058 EXPECT_TRUE_SIMULATED_WAIT(
2055 ep1_ch1()->selected_connection() != selected_connection1, 3000, clock); 2059 ep1_ch1()->selected_connection() != selected_connection1, 3000, clock);
2056 // The connection on the controlled side should be nominated again 2060 // The connection on the controlled side should be nominated again
2057 // and have an increased nomination. 2061 // and have an increased nomination.
2058 EXPECT_TRUE_SIMULATED_WAIT( 2062 EXPECT_TRUE_SIMULATED_WAIT(
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
2355 2359
2356 // Tests that when a network interface becomes inactive, if Continual Gathering 2360 // Tests that when a network interface becomes inactive, if Continual Gathering
2357 // policy is GATHER_CONTINUALLY, the ports associated with that network 2361 // policy is GATHER_CONTINUALLY, the ports associated with that network
2358 // will be removed from the port list of the channel, and the respective 2362 // will be removed from the port list of the channel, and the respective
2359 // remote candidates on the other participant will be removed eventually. 2363 // remote candidates on the other participant will be removed eventually.
2360 TEST_F(P2PTransportChannelMultihomedTest, TestNetworkBecomesInactive) { 2364 TEST_F(P2PTransportChannelMultihomedTest, TestNetworkBecomesInactive) {
2361 rtc::ScopedFakeClock clock; 2365 rtc::ScopedFakeClock clock;
2362 AddAddress(0, kPublicAddrs[0]); 2366 AddAddress(0, kPublicAddrs[0]);
2363 AddAddress(1, kPublicAddrs[1]); 2367 AddAddress(1, kPublicAddrs[1]);
2364 // Create channels and let them go writable, as usual. 2368 // Create channels and let them go writable, as usual.
2365 CreateChannels(1); 2369 IceConfig ep1_config = CreateIceConfig(2000, GATHER_CONTINUALLY);
2366 ep1_ch1()->SetIceConfig(CreateIceConfig(2000, GATHER_CONTINUALLY)); 2370 IceConfig ep2_config = CreateIceConfig(2000, GATHER_ONCE);
2367 ep2_ch1()->SetIceConfig(CreateIceConfig(2000, GATHER_ONCE)); 2371 CreateChannels(1, ep1_config, ep2_config);
2368 2372
2369 SetAllocatorFlags(0, kOnlyLocalPorts); 2373 SetAllocatorFlags(0, kOnlyLocalPorts);
2370 SetAllocatorFlags(1, kOnlyLocalPorts); 2374 SetAllocatorFlags(1, kOnlyLocalPorts);
2371 EXPECT_TRUE_SIMULATED_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() && 2375 EXPECT_TRUE_SIMULATED_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() &&
2372 ep2_ch1()->receiving() && 2376 ep2_ch1()->receiving() &&
2373 ep2_ch1()->writable(), 2377 ep2_ch1()->writable(),
2374 kDefaultTimeout, clock); 2378 kDefaultTimeout, clock);
2375 // More than one port has been created. 2379 // More than one port has been created.
2376 EXPECT_LE(1U, ep1_ch1()->ports().size()); 2380 EXPECT_LE(1U, ep1_ch1()->ports().size());
2377 // Endpoint 1 enabled continual gathering; the port will be removed 2381 // Endpoint 1 enabled continual gathering; the port will be removed
(...skipping 21 matching lines...) Expand all
2399 } 2403 }
2400 2404
2401 // Tests that continual gathering will create new connections when a new 2405 // Tests that continual gathering will create new connections when a new
2402 // interface is added. 2406 // interface is added.
2403 TEST_F(P2PTransportChannelMultihomedTest, 2407 TEST_F(P2PTransportChannelMultihomedTest,
2404 TestContinualGatheringOnNewInterface) { 2408 TestContinualGatheringOnNewInterface) {
2405 auto& wifi = kAlternateAddrs; 2409 auto& wifi = kAlternateAddrs;
2406 auto& cellular = kPublicAddrs; 2410 auto& cellular = kPublicAddrs;
2407 AddAddress(0, wifi[0], "test_wifi0", rtc::ADAPTER_TYPE_WIFI); 2411 AddAddress(0, wifi[0], "test_wifi0", rtc::ADAPTER_TYPE_WIFI);
2408 AddAddress(1, cellular[1], "test_cell1", rtc::ADAPTER_TYPE_CELLULAR); 2412 AddAddress(1, cellular[1], "test_cell1", rtc::ADAPTER_TYPE_CELLULAR);
2409 CreateChannels(1);
2410 // Set continual gathering policy. 2413 // Set continual gathering policy.
2411 ep1_ch1()->SetIceConfig(CreateIceConfig(1000, GATHER_CONTINUALLY)); 2414 IceConfig continual_gathering_config =
2412 ep2_ch1()->SetIceConfig(CreateIceConfig(1000, GATHER_CONTINUALLY)); 2415 CreateIceConfig(1000, GATHER_CONTINUALLY);
2416 CreateChannels(1, continual_gathering_config, continual_gathering_config);
2413 SetAllocatorFlags(0, kOnlyLocalPorts); 2417 SetAllocatorFlags(0, kOnlyLocalPorts);
2414 SetAllocatorFlags(1, kOnlyLocalPorts); 2418 SetAllocatorFlags(1, kOnlyLocalPorts);
2415 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1()->receiving() && ep1_ch1()->writable() && 2419 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1()->receiving() && ep1_ch1()->writable() &&
2416 ep2_ch1()->receiving() && ep2_ch1()->writable(), 2420 ep2_ch1()->receiving() && ep2_ch1()->writable(),
2417 kDefaultTimeout, kDefaultTimeout); 2421 kDefaultTimeout, kDefaultTimeout);
2418 2422
2419 // Add a new wifi interface on end point 2. We should expect a new connection 2423 // Add a new wifi interface on end point 2. We should expect a new connection
2420 // to be created and the new one will be the best connection. 2424 // to be created and the new one will be the best connection.
2421 AddAddress(1, wifi[1], "test_wifi1", rtc::ADAPTER_TYPE_WIFI); 2425 AddAddress(1, wifi[1], "test_wifi1", rtc::ADAPTER_TYPE_WIFI);
2422 const cricket::Connection* conn; 2426 const cricket::Connection* conn;
(...skipping 26 matching lines...) Expand all
2449 // Tests that we can switch links via continual gathering. 2453 // Tests that we can switch links via continual gathering.
2450 TEST_F(P2PTransportChannelMultihomedTest, 2454 TEST_F(P2PTransportChannelMultihomedTest,
2451 TestSwitchLinksViaContinualGathering) { 2455 TestSwitchLinksViaContinualGathering) {
2452 rtc::ScopedFakeClock clock; 2456 rtc::ScopedFakeClock clock;
2453 AddAddress(0, kPublicAddrs[0]); 2457 AddAddress(0, kPublicAddrs[0]);
2454 AddAddress(1, kPublicAddrs[1]); 2458 AddAddress(1, kPublicAddrs[1]);
2455 // Use only local ports for simplicity. 2459 // Use only local ports for simplicity.
2456 SetAllocatorFlags(0, kOnlyLocalPorts); 2460 SetAllocatorFlags(0, kOnlyLocalPorts);
2457 SetAllocatorFlags(1, kOnlyLocalPorts); 2461 SetAllocatorFlags(1, kOnlyLocalPorts);
2458 2462
2463 // Set continual gathering policy.
2464 IceConfig continual_gathering_config =
2465 CreateIceConfig(1000, GATHER_CONTINUALLY);
2459 // Create channels and let them go writable, as usual. 2466 // Create channels and let them go writable, as usual.
2460 CreateChannels(1); 2467 CreateChannels(1, continual_gathering_config, continual_gathering_config);
2461 // Set continual gathering policy.
2462 ep1_ch1()->SetIceConfig(CreateIceConfig(1000, GATHER_CONTINUALLY));
2463 ep2_ch1()->SetIceConfig(CreateIceConfig(1000, GATHER_CONTINUALLY));
2464 EXPECT_TRUE_SIMULATED_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() && 2468 EXPECT_TRUE_SIMULATED_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() &&
2465 ep2_ch1()->receiving() && 2469 ep2_ch1()->receiving() &&
2466 ep2_ch1()->writable(), 2470 ep2_ch1()->writable(),
2467 3000, clock); 2471 3000, clock);
2468 EXPECT_TRUE( 2472 EXPECT_TRUE(
2469 ep1_ch1()->selected_connection() && ep2_ch1()->selected_connection() && 2473 ep1_ch1()->selected_connection() && ep2_ch1()->selected_connection() &&
2470 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) && 2474 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) &&
2471 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); 2475 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1]));
2472 2476
2473 // Add the new address first and then remove the other one. 2477 // Add the new address first and then remove the other one.
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
2507 auto& wifi = kAlternateAddrs; 2511 auto& wifi = kAlternateAddrs;
2508 auto& cellular = kPublicAddrs; 2512 auto& cellular = kPublicAddrs;
2509 AddAddress(0, wifi[0], "test_wifi0", rtc::ADAPTER_TYPE_WIFI); 2513 AddAddress(0, wifi[0], "test_wifi0", rtc::ADAPTER_TYPE_WIFI);
2510 AddAddress(0, cellular[0], "test_cell0", rtc::ADAPTER_TYPE_CELLULAR); 2514 AddAddress(0, cellular[0], "test_cell0", rtc::ADAPTER_TYPE_CELLULAR);
2511 AddAddress(1, wifi[1], "test_wifi1", rtc::ADAPTER_TYPE_WIFI); 2515 AddAddress(1, wifi[1], "test_wifi1", rtc::ADAPTER_TYPE_WIFI);
2512 AddAddress(1, cellular[1], "test_cell1", rtc::ADAPTER_TYPE_CELLULAR); 2516 AddAddress(1, cellular[1], "test_cell1", rtc::ADAPTER_TYPE_CELLULAR);
2513 // Use only local ports for simplicity. 2517 // Use only local ports for simplicity.
2514 SetAllocatorFlags(0, kOnlyLocalPorts); 2518 SetAllocatorFlags(0, kOnlyLocalPorts);
2515 SetAllocatorFlags(1, kOnlyLocalPorts); 2519 SetAllocatorFlags(1, kOnlyLocalPorts);
2516 2520
2517 // Create channels and let them go writable, as usual.
2518 CreateChannels(1);
2519 // Set continual gathering policy. 2521 // Set continual gathering policy.
2520 IceConfig config = CreateIceConfig(1000, GATHER_CONTINUALLY_AND_RECOVER); 2522 IceConfig config = CreateIceConfig(1000, GATHER_CONTINUALLY_AND_RECOVER);
2521 ep1_ch1()->SetIceConfig(config); 2523 // Create channels and let them go writable, as usual.
2522 ep2_ch1()->SetIceConfig(config); 2524 CreateChannels(1, config, config);
2523 EXPECT_TRUE_SIMULATED_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() && 2525 EXPECT_TRUE_SIMULATED_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() &&
2524 ep2_ch1()->receiving() && ep2_ch1()->writable(), 2526 ep2_ch1()->receiving() && ep2_ch1()->writable(),
2525 3000, clock); 2527 3000, clock);
2526 EXPECT_TRUE(ep1_ch1()->selected_connection() && 2528 EXPECT_TRUE(ep1_ch1()->selected_connection() &&
2527 ep2_ch1()->selected_connection() && 2529 ep2_ch1()->selected_connection() &&
2528 LocalCandidate(ep1_ch1())->address().EqualIPs(wifi[0]) && 2530 LocalCandidate(ep1_ch1())->address().EqualIPs(wifi[0]) &&
2529 RemoteCandidate(ep1_ch1())->address().EqualIPs(wifi[1])); 2531 RemoteCandidate(ep1_ch1())->address().EqualIPs(wifi[1]));
2530 2532
2531 // First destroy all backup connection. 2533 // First destroy all backup connection.
2532 DestroyAllButBestConnection(ep1_ch1()); 2534 DestroyAllButBestConnection(ep1_ch1());
(...skipping 18 matching lines...) Expand all
2551 auto& cellular = kPublicAddrs; 2553 auto& cellular = kPublicAddrs;
2552 AddAddress(0, wifi[0], "test_wifi0", rtc::ADAPTER_TYPE_WIFI); 2554 AddAddress(0, wifi[0], "test_wifi0", rtc::ADAPTER_TYPE_WIFI);
2553 AddAddress(0, cellular[0], "test_cell0", rtc::ADAPTER_TYPE_CELLULAR); 2555 AddAddress(0, cellular[0], "test_cell0", rtc::ADAPTER_TYPE_CELLULAR);
2554 AddAddress(1, wifi[1], "test_wifi1", rtc::ADAPTER_TYPE_WIFI); 2556 AddAddress(1, wifi[1], "test_wifi1", rtc::ADAPTER_TYPE_WIFI);
2555 AddAddress(1, cellular[1], "test_cell1", rtc::ADAPTER_TYPE_CELLULAR); 2557 AddAddress(1, cellular[1], "test_cell1", rtc::ADAPTER_TYPE_CELLULAR);
2556 // Use only local ports for simplicity. 2558 // Use only local ports for simplicity.
2557 SetAllocatorFlags(0, kOnlyLocalPorts); 2559 SetAllocatorFlags(0, kOnlyLocalPorts);
2558 SetAllocatorFlags(1, kOnlyLocalPorts); 2560 SetAllocatorFlags(1, kOnlyLocalPorts);
2559 2561
2560 // Create channels and let them go writable, as usual. 2562 // Create channels and let them go writable, as usual.
2561 CreateChannels(1);
2562 IceConfig config = CreateIceConfig(1000, GATHER_CONTINUALLY); 2563 IceConfig config = CreateIceConfig(1000, GATHER_CONTINUALLY);
2563 config.regather_on_failed_networks_interval = rtc::Optional<int>(2000); 2564 config.regather_on_failed_networks_interval = rtc::Optional<int>(2000);
2564 ep1_ch1()->SetIceConfig(config); 2565 CreateChannels(1, config, config);
2565 ep2_ch1()->SetIceConfig(config);
2566 EXPECT_TRUE_SIMULATED_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() && 2566 EXPECT_TRUE_SIMULATED_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() &&
2567 ep2_ch1()->receiving() && 2567 ep2_ch1()->receiving() &&
2568 ep2_ch1()->writable(), 2568 ep2_ch1()->writable(),
2569 3000, clock); 2569 3000, clock);
2570 EXPECT_TRUE(ep1_ch1()->selected_connection() && 2570 EXPECT_TRUE(ep1_ch1()->selected_connection() &&
2571 ep2_ch1()->selected_connection() && 2571 ep2_ch1()->selected_connection() &&
2572 LocalCandidate(ep1_ch1())->address().EqualIPs(wifi[0]) && 2572 LocalCandidate(ep1_ch1())->address().EqualIPs(wifi[0]) &&
2573 RemoteCandidate(ep1_ch1())->address().EqualIPs(wifi[1])); 2573 RemoteCandidate(ep1_ch1())->address().EqualIPs(wifi[1]));
2574 2574
2575 // Destroy all backup connections. 2575 // Destroy all backup connections.
(...skipping 1455 matching lines...) Expand 10 before | Expand all | Expand 10 after
4031 4031
4032 // TCP Relay/Relay is the next. 4032 // TCP Relay/Relay is the next.
4033 VerifyNextPingableConnection(RELAY_PORT_TYPE, RELAY_PORT_TYPE, 4033 VerifyNextPingableConnection(RELAY_PORT_TYPE, RELAY_PORT_TYPE,
4034 TCP_PROTOCOL_NAME); 4034 TCP_PROTOCOL_NAME);
4035 4035
4036 // Finally, Local/Relay will be pinged. 4036 // Finally, Local/Relay will be pinged.
4037 VerifyNextPingableConnection(LOCAL_PORT_TYPE, RELAY_PORT_TYPE); 4037 VerifyNextPingableConnection(LOCAL_PORT_TYPE, RELAY_PORT_TYPE);
4038 } 4038 }
4039 4039
4040 } // namespace cricket { 4040 } // namespace cricket {
OLDNEW
« no previous file with comments | « webrtc/p2p/base/p2ptransportchannel.cc ('k') | webrtc/p2p/base/portallocator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698