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

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

Issue 1857453002: Do not stop a session unless the candidate of a writable connection belongs to the (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Added tests Created 4 years, 8 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
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 2514 matching lines...) Expand 10 before | Expand all | Expand 10 after
2525 ch.AddRemoteCandidate(CreateHostCandidate("3.3.3.3", 3, 2)); 2525 ch.AddRemoteCandidate(CreateHostCandidate("3.3.3.3", 3, 2));
2526 cricket::Connection* conn3 = WaitForConnectionTo(&ch, "3.3.3.3", 3); 2526 cricket::Connection* conn3 = WaitForConnectionTo(&ch, "3.3.3.3", 3);
2527 ASSERT_TRUE(conn3 != nullptr); 2527 ASSERT_TRUE(conn3 != nullptr);
2528 conn3->ReceivedPing(); // Becomes receiving 2528 conn3->ReceivedPing(); // Becomes receiving
2529 // Now prune both conn2 and conn3; they will be deleted soon. 2529 // Now prune both conn2 and conn3; they will be deleted soon.
2530 conn2->Prune(); 2530 conn2->Prune();
2531 conn3->Prune(); 2531 conn3->Prune();
2532 EXPECT_TRUE_WAIT(ch.connections().empty(), 1000); 2532 EXPECT_TRUE_WAIT(ch.connections().empty(), 1000);
2533 } 2533 }
2534 2534
2535 // Test that after a port allocator session is started, it will be stopped 2535 // Tests that after a port allocator session is started, it will be stopped
2536 // when a new connection becomes writable and receiving. Also test that this 2536 // when a new connection becomes writable and receiving. Also tests that if a
2537 // holds even if the transport channel did not lose the writability. 2537 // connection belonging to an old session becomes writable, it won't stop
2538 // the current port allocator session.
2538 TEST_F(P2PTransportChannelPingTest, TestStopPortAllocatorSessions) { 2539 TEST_F(P2PTransportChannelPingTest, TestStopPortAllocatorSessions) {
2539 cricket::FakePortAllocator pa(rtc::Thread::Current(), nullptr); 2540 cricket::FakePortAllocator pa(rtc::Thread::Current(), nullptr);
2540 cricket::P2PTransportChannel ch("test channel", 1, &pa); 2541 cricket::P2PTransportChannel ch("test channel", 1, &pa);
2541 PrepareChannel(&ch); 2542 PrepareChannel(&ch);
2542 ch.SetIceConfig(CreateIceConfig(2000, false)); 2543 ch.SetIceConfig(CreateIceConfig(2000, false));
2543 ch.Connect(); 2544 ch.Connect();
2544 ch.MaybeStartGathering(); 2545 ch.MaybeStartGathering();
2545 ch.AddRemoteCandidate(CreateHostCandidate("1.1.1.1", 1, 100)); 2546 ch.AddRemoteCandidate(CreateHostCandidate("1.1.1.1", 1, 100));
2546 cricket::Connection* conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1); 2547 cricket::Connection* conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1);
2547 ASSERT_TRUE(conn1 != nullptr); 2548 ASSERT_TRUE(conn1 != nullptr);
2548 conn1->ReceivedPingResponse(); // Becomes writable and receiving 2549 conn1->ReceivedPingResponse(); // Becomes writable and receiving
2549 EXPECT_TRUE(!ch.allocator_session()->IsGettingPorts()); 2550 EXPECT_TRUE(!ch.allocator_session()->IsGettingPorts());
2550 2551
2551 // Restart gathering even if the transport channel is still writable. 2552 // Start a new session. Even though conn1, which belongs to an older
2552 // It should stop getting ports after a new connection becomes strongly 2553 // session, becomes unwritable and writable again, it should not stop the
2553 // connected. 2554 // current session.
2554 ch.SetIceCredentials(kIceUfrag[1], kIcePwd[1]); 2555 ch.SetIceCredentials(kIceUfrag[1], kIcePwd[1]);
2555 ch.MaybeStartGathering(); 2556 ch.MaybeStartGathering();
2557 conn1->Prune();
2558 conn1->ReceivedPingResponse();
2559 EXPECT_TRUE(ch.allocator_session()->IsGettingPorts());
2560
2561 // But if a new connection created from the new session becomes writable,
2562 // it will stop the current session.
2556 ch.AddRemoteCandidate(CreateHostCandidate("2.2.2.2", 2, 100)); 2563 ch.AddRemoteCandidate(CreateHostCandidate("2.2.2.2", 2, 100));
2557 cricket::Connection* conn2 = WaitForConnectionTo(&ch, "2.2.2.2", 2); 2564 cricket::Connection* conn2 = WaitForConnectionTo(&ch, "2.2.2.2", 2);
2558 ASSERT_TRUE(conn2 != nullptr); 2565 ASSERT_TRUE(conn2 != nullptr);
2559 conn2->ReceivedPingResponse(); // Becomes writable and receiving 2566 conn2->ReceivedPingResponse(); // Becomes writable and receiving
2560 EXPECT_TRUE(!ch.allocator_session()->IsGettingPorts()); 2567 EXPECT_TRUE(!ch.allocator_session()->IsGettingPorts());
2561 } 2568 }
2562 2569
2563 class P2PTransportChannelMostLikelyToWorkFirstTest 2570 class P2PTransportChannelMostLikelyToWorkFirstTest
2564 : public P2PTransportChannelPingTest { 2571 : public P2PTransportChannelPingTest {
2565 public: 2572 public:
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
2780 2787
2781 // TCP Relay/Relay is the next. 2788 // TCP Relay/Relay is the next.
2782 VerifyNextPingableConnection(cricket::RELAY_PORT_TYPE, 2789 VerifyNextPingableConnection(cricket::RELAY_PORT_TYPE,
2783 cricket::RELAY_PORT_TYPE, 2790 cricket::RELAY_PORT_TYPE,
2784 cricket::TCP_PROTOCOL_NAME); 2791 cricket::TCP_PROTOCOL_NAME);
2785 2792
2786 // Finally, Local/Relay will be pinged. 2793 // Finally, Local/Relay will be pinged.
2787 VerifyNextPingableConnection(cricket::LOCAL_PORT_TYPE, 2794 VerifyNextPingableConnection(cricket::LOCAL_PORT_TYPE,
2788 cricket::RELAY_PORT_TYPE); 2795 cricket::RELAY_PORT_TYPE);
2789 } 2796 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698