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 2667 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2678 | 2678 |
2679 // But if a new connection created from the new session becomes writable, | 2679 // But if a new connection created from the new session becomes writable, |
2680 // it will stop the current session. | 2680 // it will stop the current session. |
2681 ch.AddRemoteCandidate(CreateHostCandidate("2.2.2.2", 2, 100)); | 2681 ch.AddRemoteCandidate(CreateHostCandidate("2.2.2.2", 2, 100)); |
2682 cricket::Connection* conn2 = WaitForConnectionTo(&ch, "2.2.2.2", 2); | 2682 cricket::Connection* conn2 = WaitForConnectionTo(&ch, "2.2.2.2", 2); |
2683 ASSERT_TRUE(conn2 != nullptr); | 2683 ASSERT_TRUE(conn2 != nullptr); |
2684 conn2->ReceivedPingResponse(); // Becomes writable and receiving | 2684 conn2->ReceivedPingResponse(); // Becomes writable and receiving |
2685 EXPECT_TRUE(!ch.allocator_session()->IsGettingPorts()); | 2685 EXPECT_TRUE(!ch.allocator_session()->IsGettingPorts()); |
2686 } | 2686 } |
2687 | 2687 |
| 2688 // Test that the ICE role is updated even on ports with inactive networks when |
| 2689 // doing continual gathering. These ports may still have connections that need |
| 2690 // a correct role, in case the network becomes active before the connection is |
| 2691 // destroyed. |
| 2692 TEST_F(P2PTransportChannelPingTest, |
| 2693 TestIceRoleUpdatedOnPortAfterSignalNetworkInactive) { |
| 2694 cricket::FakePortAllocator pa(rtc::Thread::Current(), nullptr); |
| 2695 cricket::P2PTransportChannel ch( |
| 2696 "test channel", cricket::ICE_CANDIDATE_COMPONENT_DEFAULT, &pa); |
| 2697 // Starts with ICEROLE_CONTROLLING. |
| 2698 PrepareChannel(&ch); |
| 2699 cricket::IceConfig config = CreateIceConfig(1000, true); |
| 2700 ch.SetIceConfig(config); |
| 2701 ch.Connect(); |
| 2702 ch.MaybeStartGathering(); |
| 2703 ch.AddRemoteCandidate(CreateHostCandidate("1.1.1.1", 1, 1)); |
| 2704 |
| 2705 cricket::Connection* conn = WaitForConnectionTo(&ch, "1.1.1.1", 1); |
| 2706 ASSERT_TRUE(conn != nullptr); |
| 2707 |
| 2708 // Make the fake port signal that its network is inactive, then change the |
| 2709 // ICE role and expect it to be updated. |
| 2710 conn->port()->SignalNetworkInactive(conn->port()); |
| 2711 ch.SetIceRole(cricket::ICEROLE_CONTROLLED); |
| 2712 EXPECT_EQ(cricket::ICEROLE_CONTROLLED, conn->port()->GetIceRole()); |
| 2713 } |
| 2714 |
| 2715 // Test that the ICE role is updated even on ports with inactive networks. |
| 2716 // These ports may still have connections that need a correct role, for the |
| 2717 // pings sent by those connections until they're replaced by newer-generation |
| 2718 // connections. |
| 2719 TEST_F(P2PTransportChannelPingTest, TestIceRoleUpdatedOnPortAfterIceRestart) { |
| 2720 cricket::FakePortAllocator pa(rtc::Thread::Current(), nullptr); |
| 2721 cricket::P2PTransportChannel ch( |
| 2722 "test channel", cricket::ICE_CANDIDATE_COMPONENT_DEFAULT, &pa); |
| 2723 // Starts with ICEROLE_CONTROLLING. |
| 2724 PrepareChannel(&ch); |
| 2725 ch.Connect(); |
| 2726 ch.MaybeStartGathering(); |
| 2727 ch.AddRemoteCandidate(CreateHostCandidate("1.1.1.1", 1, 1)); |
| 2728 |
| 2729 cricket::Connection* conn = WaitForConnectionTo(&ch, "1.1.1.1", 1); |
| 2730 ASSERT_TRUE(conn != nullptr); |
| 2731 |
| 2732 // Do an ICE restart, change the role, and expect the old port to have its |
| 2733 // role updated. |
| 2734 ch.SetIceCredentials(kIceUfrag[1], kIcePwd[1]); |
| 2735 ch.MaybeStartGathering(); |
| 2736 ch.SetIceRole(cricket::ICEROLE_CONTROLLED); |
| 2737 EXPECT_EQ(cricket::ICEROLE_CONTROLLED, conn->port()->GetIceRole()); |
| 2738 } |
| 2739 |
2688 class P2PTransportChannelMostLikelyToWorkFirstTest | 2740 class P2PTransportChannelMostLikelyToWorkFirstTest |
2689 : public P2PTransportChannelPingTest { | 2741 : public P2PTransportChannelPingTest { |
2690 public: | 2742 public: |
2691 P2PTransportChannelMostLikelyToWorkFirstTest() | 2743 P2PTransportChannelMostLikelyToWorkFirstTest() |
2692 : turn_server_(rtc::Thread::Current(), kTurnUdpIntAddr, kTurnUdpExtAddr) { | 2744 : turn_server_(rtc::Thread::Current(), kTurnUdpIntAddr, kTurnUdpExtAddr) { |
2693 network_manager_.AddInterface(kPublicAddrs[0]); | 2745 network_manager_.AddInterface(kPublicAddrs[0]); |
2694 allocator_.reset(new cricket::BasicPortAllocator( | 2746 allocator_.reset(new cricket::BasicPortAllocator( |
2695 &network_manager_, ServerAddresses(), rtc::SocketAddress(), | 2747 &network_manager_, ServerAddresses(), rtc::SocketAddress(), |
2696 rtc::SocketAddress(), rtc::SocketAddress())); | 2748 rtc::SocketAddress(), rtc::SocketAddress())); |
2697 allocator_->set_flags(allocator_->flags() | | 2749 allocator_->set_flags(allocator_->flags() | |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2915 | 2967 |
2916 // TCP Relay/Relay is the next. | 2968 // TCP Relay/Relay is the next. |
2917 VerifyNextPingableConnection(cricket::RELAY_PORT_TYPE, | 2969 VerifyNextPingableConnection(cricket::RELAY_PORT_TYPE, |
2918 cricket::RELAY_PORT_TYPE, | 2970 cricket::RELAY_PORT_TYPE, |
2919 cricket::TCP_PROTOCOL_NAME); | 2971 cricket::TCP_PROTOCOL_NAME); |
2920 | 2972 |
2921 // Finally, Local/Relay will be pinged. | 2973 // Finally, Local/Relay will be pinged. |
2922 VerifyNextPingableConnection(cricket::LOCAL_PORT_TYPE, | 2974 VerifyNextPingableConnection(cricket::LOCAL_PORT_TYPE, |
2923 cricket::RELAY_PORT_TYPE); | 2975 cricket::RELAY_PORT_TYPE); |
2924 } | 2976 } |
OLD | NEW |