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 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 { |
OLD | NEW |