OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2004 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 2574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2585 | 2585 |
2586 // Simulate a connection that succeeds, and then is destroyed. | 2586 // Simulate a connection that succeeds, and then is destroyed. |
2587 StartConnectAndStopChannels(&ch1, &ch2); | 2587 StartConnectAndStopChannels(&ch1, &ch2); |
2588 | 2588 |
2589 // After the connection is destroyed, the port should not be destroyed. | 2589 // After the connection is destroyed, the port should not be destroyed. |
2590 rtc::Thread::Current()->ProcessMessages(kTimeout); | 2590 rtc::Thread::Current()->ProcessMessages(kTimeout); |
2591 EXPECT_FALSE(destroyed()); | 2591 EXPECT_FALSE(destroyed()); |
2592 } | 2592 } |
2593 | 2593 |
2594 // This test case verifies that the CONTROLLED port does time out, but only | 2594 // This test case verifies that the CONTROLLED port does time out, but only |
2595 // after connectivity is lost. | 2595 // after connectivity is lost and no connection was created during the timeout |
| 2596 // period. |
2596 TEST_F(PortTest, TestControlledTimeout) { | 2597 TEST_F(PortTest, TestControlledTimeout) { |
| 2598 rtc::ScopedFakeClock clock; |
2597 UDPPort* port1 = CreateUdpPort(kLocalAddr1); | 2599 UDPPort* port1 = CreateUdpPort(kLocalAddr1); |
2598 port1->SetIceRole(cricket::ICEROLE_CONTROLLING); | 2600 port1->SetIceRole(cricket::ICEROLE_CONTROLLING); |
2599 port1->SetIceTiebreaker(kTiebreaker1); | 2601 port1->SetIceTiebreaker(kTiebreaker1); |
2600 | 2602 |
2601 UDPPort* port2 = CreateUdpPort(kLocalAddr2); | 2603 UDPPort* port2 = CreateUdpPort(kLocalAddr2); |
2602 ConnectToSignalDestroyed(port2); | 2604 ConnectToSignalDestroyed(port2); |
2603 port2->set_timeout_delay(10); // milliseconds | 2605 port2->set_timeout_delay(100); // milliseconds |
2604 port2->SetIceRole(cricket::ICEROLE_CONTROLLED); | 2606 port2->SetIceRole(cricket::ICEROLE_CONTROLLED); |
2605 port2->SetIceTiebreaker(kTiebreaker2); | 2607 port2->SetIceTiebreaker(kTiebreaker2); |
2606 | 2608 |
2607 // The connection must not be destroyed before a connection is attempted. | 2609 // The connection must not be destroyed before a connection is attempted. |
2608 EXPECT_FALSE(destroyed()); | 2610 EXPECT_FALSE(destroyed()); |
2609 | 2611 |
2610 port1->set_component(cricket::ICE_CANDIDATE_COMPONENT_DEFAULT); | 2612 port1->set_component(cricket::ICE_CANDIDATE_COMPONENT_DEFAULT); |
2611 port2->set_component(cricket::ICE_CANDIDATE_COMPONENT_DEFAULT); | 2613 port2->set_component(cricket::ICE_CANDIDATE_COMPONENT_DEFAULT); |
2612 | 2614 |
2613 // Set up channels and ensure both ports will be deleted. | 2615 // Set up channels and ensure both ports will be deleted. |
2614 TestChannel ch1(port1); | 2616 TestChannel ch1(port1); |
2615 TestChannel ch2(port2); | 2617 TestChannel ch2(port2); |
2616 | 2618 |
2617 // Simulate a connection that succeeds, and then is destroyed. | 2619 // Simulate a connection that succeeds, and then is destroyed. |
2618 StartConnectAndStopChannels(&ch1, &ch2); | 2620 StartConnectAndStopChannels(&ch1, &ch2); |
2619 | 2621 |
2620 // The controlled port should be destroyed after 10 milliseconds. | 2622 SIMULATED_WAIT(false, 80, clock); |
2621 EXPECT_TRUE_WAIT(destroyed(), kTimeout); | 2623 ch2.CreateConnection(GetCandidate(ch1.port())); |
| 2624 |
| 2625 // ch2 creates a connection so it will not be destroyed. |
| 2626 SIMULATED_WAIT(destroyed(), 80, clock); |
| 2627 EXPECT_FALSE(destroyed()); |
| 2628 |
| 2629 // Even if ch2 stops now, it won't be destroyed until 100ms after the |
| 2630 // connection is destroyed. |
| 2631 ch2.Stop(); |
| 2632 SIMULATED_WAIT(destroyed(), 80, clock); |
| 2633 EXPECT_FALSE(destroyed()); |
| 2634 |
| 2635 // The controlled port should be destroyed after timeout. |
| 2636 EXPECT_TRUE_SIMULATED_WAIT(destroyed(), 30, clock); |
2622 } | 2637 } |
2623 | 2638 |
2624 // This test case verifies that if the role of a port changes from controlled | 2639 // This test case verifies that if the role of a port changes from controlled |
2625 // to controlling after all connections fail, the port will not be destroyed. | 2640 // to controlling after all connections fail, the port will not be destroyed. |
2626 TEST_F(PortTest, TestControlledToControllingNotDestroyed) { | 2641 TEST_F(PortTest, TestControlledToControllingNotDestroyed) { |
2627 UDPPort* port1 = CreateUdpPort(kLocalAddr1); | 2642 UDPPort* port1 = CreateUdpPort(kLocalAddr1); |
2628 port1->SetIceRole(cricket::ICEROLE_CONTROLLING); | 2643 port1->SetIceRole(cricket::ICEROLE_CONTROLLING); |
2629 port1->SetIceTiebreaker(kTiebreaker1); | 2644 port1->SetIceTiebreaker(kTiebreaker1); |
2630 | 2645 |
2631 UDPPort* port2 = CreateUdpPort(kLocalAddr2); | 2646 UDPPort* port2 = CreateUdpPort(kLocalAddr2); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2714 port->CreateConnection(candidate, Port::ORIGIN_MESSAGE); | 2729 port->CreateConnection(candidate, Port::ORIGIN_MESSAGE); |
2715 EXPECT_NE(conn1, conn2); | 2730 EXPECT_NE(conn1, conn2); |
2716 conn_in_use = port->GetConnection(address); | 2731 conn_in_use = port->GetConnection(address); |
2717 EXPECT_EQ(conn2, conn_in_use); | 2732 EXPECT_EQ(conn2, conn_in_use); |
2718 EXPECT_EQ(2u, conn_in_use->remote_candidate().generation()); | 2733 EXPECT_EQ(2u, conn_in_use->remote_candidate().generation()); |
2719 | 2734 |
2720 // Make sure the new connection was not deleted. | 2735 // Make sure the new connection was not deleted. |
2721 rtc::Thread::Current()->ProcessMessages(300); | 2736 rtc::Thread::Current()->ProcessMessages(300); |
2722 EXPECT_TRUE(port->GetConnection(address) != nullptr); | 2737 EXPECT_TRUE(port->GetConnection(address) != nullptr); |
2723 } | 2738 } |
OLD | NEW |