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 | |
2740 class P2PTransportChannelMostLikelyToWorkFirstTest | 2688 class P2PTransportChannelMostLikelyToWorkFirstTest |
2741 : public P2PTransportChannelPingTest { | 2689 : public P2PTransportChannelPingTest { |
2742 public: | 2690 public: |
2743 P2PTransportChannelMostLikelyToWorkFirstTest() | 2691 P2PTransportChannelMostLikelyToWorkFirstTest() |
2744 : turn_server_(rtc::Thread::Current(), kTurnUdpIntAddr, kTurnUdpExtAddr) { | 2692 : turn_server_(rtc::Thread::Current(), kTurnUdpIntAddr, kTurnUdpExtAddr) { |
2745 network_manager_.AddInterface(kPublicAddrs[0]); | 2693 network_manager_.AddInterface(kPublicAddrs[0]); |
2746 allocator_.reset(new cricket::BasicPortAllocator( | 2694 allocator_.reset(new cricket::BasicPortAllocator( |
2747 &network_manager_, ServerAddresses(), rtc::SocketAddress(), | 2695 &network_manager_, ServerAddresses(), rtc::SocketAddress(), |
2748 rtc::SocketAddress(), rtc::SocketAddress())); | 2696 rtc::SocketAddress(), rtc::SocketAddress())); |
2749 allocator_->set_flags(allocator_->flags() | | 2697 allocator_->set_flags(allocator_->flags() | |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2967 | 2915 |
2968 // TCP Relay/Relay is the next. | 2916 // TCP Relay/Relay is the next. |
2969 VerifyNextPingableConnection(cricket::RELAY_PORT_TYPE, | 2917 VerifyNextPingableConnection(cricket::RELAY_PORT_TYPE, |
2970 cricket::RELAY_PORT_TYPE, | 2918 cricket::RELAY_PORT_TYPE, |
2971 cricket::TCP_PROTOCOL_NAME); | 2919 cricket::TCP_PROTOCOL_NAME); |
2972 | 2920 |
2973 // Finally, Local/Relay will be pinged. | 2921 // Finally, Local/Relay will be pinged. |
2974 VerifyNextPingableConnection(cricket::LOCAL_PORT_TYPE, | 2922 VerifyNextPingableConnection(cricket::LOCAL_PORT_TYPE, |
2975 cricket::RELAY_PORT_TYPE); | 2923 cricket::RELAY_PORT_TYPE); |
2976 } | 2924 } |
OLD | NEW |