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

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

Issue 2374183005: Emit SignalReadyToSend even for "presumed writable" connections. (Closed)
Patch Set: Adding TODO. Created 4 years, 2 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
« no previous file with comments | « no previous file | webrtc/p2p/base/port.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 1655 matching lines...) Expand 10 before | Expand all | Expand 10 after
1666 std::find(pooled_ports_1.begin(), pooled_ports_1.end(), 1666 std::find(pooled_ports_1.begin(), pooled_ports_1.end(),
1667 ep1_ch1()->selected_connection()->port())); 1667 ep1_ch1()->selected_connection()->port()));
1668 EXPECT_NE(pooled_ports_2.end(), 1668 EXPECT_NE(pooled_ports_2.end(),
1669 std::find(pooled_ports_2.begin(), pooled_ports_2.end(), 1669 std::find(pooled_ports_2.begin(), pooled_ports_2.end(),
1670 ep2_ch1()->selected_connection()->port())); 1670 ep2_ch1()->selected_connection()->port()));
1671 } 1671 }
1672 1672
1673 // Test that when the "presume_writable_when_fully_relayed" flag is set to 1673 // Test that when the "presume_writable_when_fully_relayed" flag is set to
1674 // true and there's a TURN-TURN candidate pair, it's presumed to be writable 1674 // true and there's a TURN-TURN candidate pair, it's presumed to be writable
1675 // as soon as it's created. 1675 // as soon as it's created.
1676 // TODO(deadbeef): Move this and other "presumed writable" tests into a test
1677 // class that operates on a single P2PTransportChannel, once an appropriate one
1678 // (which supports TURN servers and TURN candidate gathering) is available.
1676 TEST_F(P2PTransportChannelTest, TurnToTurnPresumedWritable) { 1679 TEST_F(P2PTransportChannelTest, TurnToTurnPresumedWritable) {
1677 ConfigureEndpoints(OPEN, OPEN, kDefaultPortAllocatorFlags, 1680 ConfigureEndpoints(OPEN, OPEN, kDefaultPortAllocatorFlags,
1678 kDefaultPortAllocatorFlags); 1681 kDefaultPortAllocatorFlags);
1679 // Only configure one channel so we can control when the remote candidate 1682 // Only configure one channel so we can control when the remote candidate
1680 // is added. 1683 // is added.
1681 GetEndpoint(0)->cd1_.ch_.reset(CreateChannel( 1684 GetEndpoint(0)->cd1_.ch_.reset(CreateChannel(
1682 0, ICE_CANDIDATE_COMPONENT_DEFAULT, kIceParams[0], kIceParams[1])); 1685 0, ICE_CANDIDATE_COMPONENT_DEFAULT, kIceParams[0], kIceParams[1]));
1683 IceConfig config; 1686 IceConfig config;
1684 config.presume_writable_when_fully_relayed = true; 1687 config.presume_writable_when_fully_relayed = true;
1685 ep1_ch1()->SetIceConfig(config); 1688 ep1_ch1()->SetIceConfig(config);
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
1791 CreateUdpCandidate(RELAY_PORT_TYPE, "2.2.2.2", 2, 0)); 1794 CreateUdpCandidate(RELAY_PORT_TYPE, "2.2.2.2", 2, 0));
1792 EXPECT_EQ(RELAY_PORT_TYPE, LocalCandidate(ep1_ch1())->type()); 1795 EXPECT_EQ(RELAY_PORT_TYPE, LocalCandidate(ep1_ch1())->type());
1793 EXPECT_EQ(RELAY_PORT_TYPE, RemoteCandidate(ep1_ch1())->type()); 1796 EXPECT_EQ(RELAY_PORT_TYPE, RemoteCandidate(ep1_ch1())->type());
1794 EXPECT_TRUE(ep1_ch1()->writable()); 1797 EXPECT_TRUE(ep1_ch1()->writable());
1795 EXPECT_TRUE(GetEndpoint(0)->ready_to_send_); 1798 EXPECT_TRUE(GetEndpoint(0)->ready_to_send_);
1796 EXPECT_NE(old_selected_connection, ep1_ch1()->selected_connection()); 1799 EXPECT_NE(old_selected_connection, ep1_ch1()->selected_connection());
1797 // Explitly destroy channels, before fake clock is destroyed. 1800 // Explitly destroy channels, before fake clock is destroyed.
1798 DestroyChannels(); 1801 DestroyChannels();
1799 } 1802 }
1800 1803
1804 // Ensure that "SignalReadyToSend" is fired as expected with a "presumed
1805 // writable" connection. Previously this did not work.
1806 TEST_F(P2PTransportChannelTest, SignalReadyToSendWithPresumedWritable) {
1807 ConfigureEndpoints(OPEN, OPEN, kDefaultPortAllocatorFlags,
1808 kDefaultPortAllocatorFlags);
1809 // Only test one endpoint, so we can ensure the connection doesn't receive a
1810 // binding response and advance beyond being "presumed" writable.
1811 GetEndpoint(0)->cd1_.ch_.reset(CreateChannel(
1812 0, ICE_CANDIDATE_COMPONENT_DEFAULT, kIceParams[0], kIceParams[1]));
1813 IceConfig config;
1814 config.presume_writable_when_fully_relayed = true;
1815 ep1_ch1()->SetIceConfig(config);
1816 ep1_ch1()->MaybeStartGathering();
1817 EXPECT_EQ_WAIT(IceGatheringState::kIceGatheringComplete,
1818 ep1_ch1()->gathering_state(), kDefaultTimeout);
1819 ep1_ch1()->AddRemoteCandidate(
1820 CreateUdpCandidate(RELAY_PORT_TYPE, "1.1.1.1", 1, 0));
1821 // Sanity checking the type of the connection.
1822 EXPECT_TRUE(ep1_ch1()->selected_connection() != nullptr);
1823 EXPECT_EQ(RELAY_PORT_TYPE, LocalCandidate(ep1_ch1())->type());
1824 EXPECT_EQ(RELAY_PORT_TYPE, RemoteCandidate(ep1_ch1())->type());
1825
1826 // Tell the socket server to block packets (returning EWOULDBLOCK).
1827 virtual_socket_server()->SetSendingBlocked(true);
1828 const char* data = "test";
1829 int len = static_cast<int>(strlen(data));
1830 EXPECT_EQ(-1, SendData(ep1_ch1(), data, len));
1831
1832 // Reset |ready_to_send_| flag, which is set to true if the event fires as it
1833 // should.
1834 GetEndpoint(0)->ready_to_send_ = false;
1835 virtual_socket_server()->SetSendingBlocked(false);
1836 EXPECT_TRUE(GetEndpoint(0)->ready_to_send_);
1837 EXPECT_EQ(len, SendData(ep1_ch1(), data, len));
1838 }
1839
1801 // Test what happens when we have 2 users behind the same NAT. This can lead 1840 // Test what happens when we have 2 users behind the same NAT. This can lead
1802 // to interesting behavior because the STUN server will only give out the 1841 // to interesting behavior because the STUN server will only give out the
1803 // address of the outermost NAT. 1842 // address of the outermost NAT.
1804 class P2PTransportChannelSameNatTest : public P2PTransportChannelTestBase { 1843 class P2PTransportChannelSameNatTest : public P2PTransportChannelTestBase {
1805 protected: 1844 protected:
1806 void ConfigureEndpoints(Config nat_type, Config config1, Config config2) { 1845 void ConfigureEndpoints(Config nat_type, Config config1, Config config2) {
1807 ASSERT(nat_type >= NAT_FULL_CONE && nat_type <= NAT_SYMMETRIC); 1846 ASSERT(nat_type >= NAT_FULL_CONE && nat_type <= NAT_SYMMETRIC);
1808 rtc::NATSocketServer::Translator* outer_nat = 1847 rtc::NATSocketServer::Translator* outer_nat =
1809 nat()->AddTranslator(kPublicAddrs[0], kNatAddrs[0], 1848 nat()->AddTranslator(kPublicAddrs[0], kNatAddrs[0],
1810 static_cast<rtc::NATType>(nat_type - NAT_FULL_CONE)); 1849 static_cast<rtc::NATType>(nat_type - NAT_FULL_CONE));
(...skipping 2190 matching lines...) Expand 10 before | Expand all | Expand 10 after
4001 4040
4002 // TCP Relay/Relay is the next. 4041 // TCP Relay/Relay is the next.
4003 VerifyNextPingableConnection(RELAY_PORT_TYPE, RELAY_PORT_TYPE, 4042 VerifyNextPingableConnection(RELAY_PORT_TYPE, RELAY_PORT_TYPE,
4004 TCP_PROTOCOL_NAME); 4043 TCP_PROTOCOL_NAME);
4005 4044
4006 // Finally, Local/Relay will be pinged. 4045 // Finally, Local/Relay will be pinged.
4007 VerifyNextPingableConnection(LOCAL_PORT_TYPE, RELAY_PORT_TYPE); 4046 VerifyNextPingableConnection(LOCAL_PORT_TYPE, RELAY_PORT_TYPE);
4008 } 4047 }
4009 4048
4010 } // namespace cricket { 4049 } // namespace cricket {
OLDNEW
« no previous file with comments | « no previous file | webrtc/p2p/base/port.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698