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

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

Issue 1362503003: Use suffixed {uint,int}{8,16,32,64}_t types. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: google::int32 Created 5 years, 3 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 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 86
87 // Based on ICE_UFRAG_LENGTH 87 // Based on ICE_UFRAG_LENGTH
88 static const char* kIceUfrag[4] = {"TESTICEUFRAG0000", "TESTICEUFRAG0001", 88 static const char* kIceUfrag[4] = {"TESTICEUFRAG0000", "TESTICEUFRAG0001",
89 "TESTICEUFRAG0002", "TESTICEUFRAG0003"}; 89 "TESTICEUFRAG0002", "TESTICEUFRAG0003"};
90 // Based on ICE_PWD_LENGTH 90 // Based on ICE_PWD_LENGTH
91 static const char* kIcePwd[4] = {"TESTICEPWD00000000000000", 91 static const char* kIcePwd[4] = {"TESTICEPWD00000000000000",
92 "TESTICEPWD00000000000001", 92 "TESTICEPWD00000000000001",
93 "TESTICEPWD00000000000002", 93 "TESTICEPWD00000000000002",
94 "TESTICEPWD00000000000003"}; 94 "TESTICEPWD00000000000003"};
95 95
96 static const uint64 kTiebreaker1 = 11111; 96 static const uint64_t kTiebreaker1 = 11111;
97 static const uint64 kTiebreaker2 = 22222; 97 static const uint64_t kTiebreaker2 = 22222;
98 98
99 enum { 99 enum {
100 MSG_CANDIDATE 100 MSG_CANDIDATE
101 }; 101 };
102 102
103 // This test simulates 2 P2P endpoints that want to establish connectivity 103 // This test simulates 2 P2P endpoints that want to establish connectivity
104 // with each other over various network topologies and conditions, which can be 104 // with each other over various network topologies and conditions, which can be
105 // specified in each individial test. 105 // specified in each individial test.
106 // A virtual network (via VirtualSocketServer) along with virtual firewalls and 106 // A virtual network (via VirtualSocketServer) along with virtual firewalls and
107 // NATs (via Firewall/NATSocketServer) are used to simulate the various network 107 // NATs (via Firewall/NATSocketServer) are used to simulate the various network
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 ChannelData* GetChannelData(cricket::TransportChannel* ch) { 224 ChannelData* GetChannelData(cricket::TransportChannel* ch) {
225 if (!HasChannel(ch)) return NULL; 225 if (!HasChannel(ch)) return NULL;
226 if (cd1_.ch_.get() == ch) 226 if (cd1_.ch_.get() == ch)
227 return &cd1_; 227 return &cd1_;
228 else 228 else
229 return &cd2_; 229 return &cd2_;
230 } 230 }
231 231
232 void SetIceRole(cricket::IceRole role) { role_ = role; } 232 void SetIceRole(cricket::IceRole role) { role_ = role; }
233 cricket::IceRole ice_role() { return role_; } 233 cricket::IceRole ice_role() { return role_; }
234 void SetIceTiebreaker(uint64 tiebreaker) { tiebreaker_ = tiebreaker; } 234 void SetIceTiebreaker(uint64_t tiebreaker) { tiebreaker_ = tiebreaker; }
235 uint64 GetIceTiebreaker() { return tiebreaker_; } 235 uint64_t GetIceTiebreaker() { return tiebreaker_; }
236 void OnRoleConflict(bool role_conflict) { role_conflict_ = role_conflict; } 236 void OnRoleConflict(bool role_conflict) { role_conflict_ = role_conflict; }
237 bool role_conflict() { return role_conflict_; } 237 bool role_conflict() { return role_conflict_; }
238 void SetAllocationStepDelay(uint32 delay) { 238 void SetAllocationStepDelay(uint32_t delay) {
239 allocator_->set_step_delay(delay); 239 allocator_->set_step_delay(delay);
240 } 240 }
241 void SetAllowTcpListen(bool allow_tcp_listen) { 241 void SetAllowTcpListen(bool allow_tcp_listen) {
242 allocator_->set_allow_tcp_listen(allow_tcp_listen); 242 allocator_->set_allow_tcp_listen(allow_tcp_listen);
243 } 243 }
244 244
245 rtc::FakeNetworkManager network_manager_; 245 rtc::FakeNetworkManager network_manager_;
246 rtc::scoped_ptr<cricket::BasicPortAllocator> allocator_; 246 rtc::scoped_ptr<cricket::BasicPortAllocator> allocator_;
247 ChannelData cd1_; 247 ChannelData cd1_;
248 ChannelData cd2_; 248 ChannelData cd2_;
249 cricket::IceRole role_; 249 cricket::IceRole role_;
250 uint64 tiebreaker_; 250 uint64_t tiebreaker_;
251 bool role_conflict_; 251 bool role_conflict_;
252 bool save_candidates_; 252 bool save_candidates_;
253 std::vector<CandidateData*> saved_candidates_; 253 std::vector<CandidateData*> saved_candidates_;
254 }; 254 };
255 255
256 ChannelData* GetChannelData(cricket::TransportChannel* channel) { 256 ChannelData* GetChannelData(cricket::TransportChannel* channel) {
257 if (ep1_.HasChannel(channel)) 257 if (ep1_.HasChannel(channel))
258 return ep1_.GetChannelData(channel); 258 return ep1_.GetChannelData(channel);
259 else 259 else
260 return ep2_.GetChannelData(channel); 260 return ep2_.GetChannelData(channel);
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 info.address = (type == rtc::PROXY_HTTPS) ? 368 info.address = (type == rtc::PROXY_HTTPS) ?
369 kHttpsProxyAddrs[endpoint] : kSocksProxyAddrs[endpoint]; 369 kHttpsProxyAddrs[endpoint] : kSocksProxyAddrs[endpoint];
370 GetAllocator(endpoint)->set_proxy("unittest/1.0", info); 370 GetAllocator(endpoint)->set_proxy("unittest/1.0", info);
371 } 371 }
372 void SetAllocatorFlags(int endpoint, int flags) { 372 void SetAllocatorFlags(int endpoint, int flags) {
373 GetAllocator(endpoint)->set_flags(flags); 373 GetAllocator(endpoint)->set_flags(flags);
374 } 374 }
375 void SetIceRole(int endpoint, cricket::IceRole role) { 375 void SetIceRole(int endpoint, cricket::IceRole role) {
376 GetEndpoint(endpoint)->SetIceRole(role); 376 GetEndpoint(endpoint)->SetIceRole(role);
377 } 377 }
378 void SetIceTiebreaker(int endpoint, uint64 tiebreaker) { 378 void SetIceTiebreaker(int endpoint, uint64_t tiebreaker) {
379 GetEndpoint(endpoint)->SetIceTiebreaker(tiebreaker); 379 GetEndpoint(endpoint)->SetIceTiebreaker(tiebreaker);
380 } 380 }
381 bool GetRoleConflict(int endpoint) { 381 bool GetRoleConflict(int endpoint) {
382 return GetEndpoint(endpoint)->role_conflict(); 382 return GetEndpoint(endpoint)->role_conflict();
383 } 383 }
384 void SetAllocationStepDelay(int endpoint, uint32 delay) { 384 void SetAllocationStepDelay(int endpoint, uint32_t delay) {
385 return GetEndpoint(endpoint)->SetAllocationStepDelay(delay); 385 return GetEndpoint(endpoint)->SetAllocationStepDelay(delay);
386 } 386 }
387 void SetAllowTcpListen(int endpoint, bool allow_tcp_listen) { 387 void SetAllowTcpListen(int endpoint, bool allow_tcp_listen) {
388 return GetEndpoint(endpoint)->SetAllowTcpListen(allow_tcp_listen); 388 return GetEndpoint(endpoint)->SetAllowTcpListen(allow_tcp_listen);
389 } 389 }
390 390
391 bool IsLocalToPrflxOrTheReverse(const Result& expected) { 391 bool IsLocalToPrflxOrTheReverse(const Result& expected) {
392 return ((expected.local_type == "local" && 392 return ((expected.local_type == "local" &&
393 expected.remote_type == "prflx") || 393 expected.remote_type == "prflx") ||
394 (expected.local_type == "prflx" && 394 (expected.local_type == "prflx" &&
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 if (remote_type != expected.remote_type2) { 479 if (remote_type != expected.remote_type2) {
480 EXPECT_TRUE(expected.remote_type2 == cricket::LOCAL_PORT_TYPE || 480 EXPECT_TRUE(expected.remote_type2 == cricket::LOCAL_PORT_TYPE ||
481 expected.remote_type2 == cricket::STUN_PORT_TYPE); 481 expected.remote_type2 == cricket::STUN_PORT_TYPE);
482 EXPECT_TRUE(remote_type == cricket::LOCAL_PORT_TYPE || 482 EXPECT_TRUE(remote_type == cricket::LOCAL_PORT_TYPE ||
483 remote_type == cricket::STUN_PORT_TYPE || 483 remote_type == cricket::STUN_PORT_TYPE ||
484 remote_type == cricket::PRFLX_PORT_TYPE); 484 remote_type == cricket::PRFLX_PORT_TYPE);
485 } 485 }
486 } 486 }
487 487
488 void Test(const Result& expected) { 488 void Test(const Result& expected) {
489 int32 connect_start = rtc::Time(), connect_time; 489 int32_t connect_start = rtc::Time(), connect_time;
490 490
491 // Create the channels and wait for them to connect. 491 // Create the channels and wait for them to connect.
492 CreateChannels(1); 492 CreateChannels(1);
493 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1() != NULL && 493 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1() != NULL &&
494 ep2_ch1() != NULL && 494 ep2_ch1() != NULL &&
495 ep1_ch1()->receiving() && 495 ep1_ch1()->receiving() &&
496 ep1_ch1()->writable() && 496 ep1_ch1()->writable() &&
497 ep2_ch1()->receiving() && 497 ep2_ch1()->receiving() &&
498 ep2_ch1()->writable(), 498 ep2_ch1()->writable(),
499 expected.connect_wait, 499 expected.connect_wait,
500 1000); 500 1000);
501 connect_time = rtc::TimeSince(connect_start); 501 connect_time = rtc::TimeSince(connect_start);
502 if (connect_time < expected.connect_wait) { 502 if (connect_time < expected.connect_wait) {
503 LOG(LS_INFO) << "Connect time: " << connect_time << " ms"; 503 LOG(LS_INFO) << "Connect time: " << connect_time << " ms";
504 } else { 504 } else {
505 LOG(LS_INFO) << "Connect time: " << "TIMEOUT (" 505 LOG(LS_INFO) << "Connect time: " << "TIMEOUT ("
506 << expected.connect_wait << " ms)"; 506 << expected.connect_wait << " ms)";
507 } 507 }
508 508
509 // Allow a few turns of the crank for the best connections to emerge. 509 // Allow a few turns of the crank for the best connections to emerge.
510 // This may take up to 2 seconds. 510 // This may take up to 2 seconds.
511 if (ep1_ch1()->best_connection() && 511 if (ep1_ch1()->best_connection() &&
512 ep2_ch1()->best_connection()) { 512 ep2_ch1()->best_connection()) {
513 int32 converge_start = rtc::Time(), converge_time; 513 int32_t converge_start = rtc::Time(), converge_time;
514 int converge_wait = 2000; 514 int converge_wait = 2000;
515 EXPECT_TRUE_WAIT_MARGIN(CheckCandidate1(expected), 515 EXPECT_TRUE_WAIT_MARGIN(CheckCandidate1(expected),
516 converge_wait, converge_wait); 516 converge_wait, converge_wait);
517 // Also do EXPECT_EQ on each part so that failures are more verbose. 517 // Also do EXPECT_EQ on each part so that failures are more verbose.
518 ExpectCandidate1(expected); 518 ExpectCandidate1(expected);
519 519
520 // Verifying remote channel best connection information. This is done 520 // Verifying remote channel best connection information. This is done
521 // only for the RFC 5245 as controlled agent will use USE-CANDIDATE 521 // only for the RFC 5245 as controlled agent will use USE-CANDIDATE
522 // from controlling (ep1) agent. We can easily predict from EP1 result 522 // from controlling (ep1) agent. We can easily predict from EP1 result
523 // matrix. 523 // matrix.
(...skipping 1170 matching lines...) Expand 10 before | Expand all | Expand 10 after
1694 TEST_F(P2PTransportChannelPingTest, ConnectionResurrection) { 1694 TEST_F(P2PTransportChannelPingTest, ConnectionResurrection) {
1695 cricket::FakePortAllocator pa(rtc::Thread::Current(), nullptr); 1695 cricket::FakePortAllocator pa(rtc::Thread::Current(), nullptr);
1696 cricket::P2PTransportChannel ch("connection resurrection", 1, nullptr, &pa); 1696 cricket::P2PTransportChannel ch("connection resurrection", 1, nullptr, &pa);
1697 PrepareChannel(&ch); 1697 PrepareChannel(&ch);
1698 ch.Connect(); 1698 ch.Connect();
1699 1699
1700 // Create conn1 and keep track of original candidate priority. 1700 // Create conn1 and keep track of original candidate priority.
1701 ch.OnCandidate(CreateCandidate("1.1.1.1", 1, 1)); 1701 ch.OnCandidate(CreateCandidate("1.1.1.1", 1, 1));
1702 cricket::Connection* conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1); 1702 cricket::Connection* conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1);
1703 ASSERT_TRUE(conn1 != nullptr); 1703 ASSERT_TRUE(conn1 != nullptr);
1704 uint32 remote_priority = conn1->remote_candidate().priority(); 1704 uint32_t remote_priority = conn1->remote_candidate().priority();
1705 1705
1706 // Create a higher priority candidate and make the connection 1706 // Create a higher priority candidate and make the connection
1707 // receiving/writable. This will prune conn1. 1707 // receiving/writable. This will prune conn1.
1708 ch.OnCandidate(CreateCandidate("2.2.2.2", 2, 2)); 1708 ch.OnCandidate(CreateCandidate("2.2.2.2", 2, 2));
1709 cricket::Connection* conn2 = WaitForConnectionTo(&ch, "2.2.2.2", 2); 1709 cricket::Connection* conn2 = WaitForConnectionTo(&ch, "2.2.2.2", 2);
1710 ASSERT_TRUE(conn2 != nullptr); 1710 ASSERT_TRUE(conn2 != nullptr);
1711 conn2->ReceivedPing(); 1711 conn2->ReceivedPing();
1712 conn2->ReceivedPingResponse(); 1712 conn2->ReceivedPingResponse();
1713 1713
1714 // Wait for conn1 to be destroyed. 1714 // Wait for conn1 to be destroyed.
1715 EXPECT_TRUE_WAIT(GetConnectionTo(&ch, "1.1.1.1", 1) == nullptr, 3000); 1715 EXPECT_TRUE_WAIT(GetConnectionTo(&ch, "1.1.1.1", 1) == nullptr, 3000);
1716 cricket::Port* port = GetPort(&ch); 1716 cricket::Port* port = GetPort(&ch);
1717 1717
1718 // Create a minimal STUN message with prflx priority. 1718 // Create a minimal STUN message with prflx priority.
1719 cricket::IceMessage request; 1719 cricket::IceMessage request;
1720 request.SetType(cricket::STUN_BINDING_REQUEST); 1720 request.SetType(cricket::STUN_BINDING_REQUEST);
1721 request.AddAttribute(new cricket::StunByteStringAttribute( 1721 request.AddAttribute(new cricket::StunByteStringAttribute(
1722 cricket::STUN_ATTR_USERNAME, kIceUfrag[1])); 1722 cricket::STUN_ATTR_USERNAME, kIceUfrag[1]));
1723 uint32 prflx_priority = cricket::ICE_TYPE_PREFERENCE_PRFLX << 24; 1723 uint32_t prflx_priority = cricket::ICE_TYPE_PREFERENCE_PRFLX << 24;
1724 request.AddAttribute(new cricket::StunUInt32Attribute( 1724 request.AddAttribute(new cricket::StunUInt32Attribute(
1725 cricket::STUN_ATTR_PRIORITY, prflx_priority)); 1725 cricket::STUN_ATTR_PRIORITY, prflx_priority));
1726 EXPECT_NE(prflx_priority, remote_priority); 1726 EXPECT_NE(prflx_priority, remote_priority);
1727 1727
1728 // conn1 should be resurrected with original priority. 1728 // conn1 should be resurrected with original priority.
1729 port->SignalUnknownAddress(port, rtc::SocketAddress("1.1.1.1", 1), 1729 port->SignalUnknownAddress(port, rtc::SocketAddress("1.1.1.1", 1),
1730 cricket::PROTO_UDP, &request, kIceUfrag[1], false); 1730 cricket::PROTO_UDP, &request, kIceUfrag[1], false);
1731 conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1); 1731 conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1);
1732 ASSERT_TRUE(conn1 != nullptr); 1732 ASSERT_TRUE(conn1 != nullptr);
1733 EXPECT_EQ(conn1->remote_candidate().priority(), remote_priority); 1733 EXPECT_EQ(conn1->remote_candidate().priority(), remote_priority);
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
1826 cricket::FakePortAllocator pa(rtc::Thread::Current(), nullptr); 1826 cricket::FakePortAllocator pa(rtc::Thread::Current(), nullptr);
1827 cricket::P2PTransportChannel ch("receiving state change", 1, nullptr, &pa); 1827 cricket::P2PTransportChannel ch("receiving state change", 1, nullptr, &pa);
1828 PrepareChannel(&ch); 1828 PrepareChannel(&ch);
1829 ch.SetIceRole(cricket::ICEROLE_CONTROLLED); 1829 ch.SetIceRole(cricket::ICEROLE_CONTROLLED);
1830 ch.Connect(); 1830 ch.Connect();
1831 // A minimal STUN message with prflx priority. 1831 // A minimal STUN message with prflx priority.
1832 cricket::IceMessage request; 1832 cricket::IceMessage request;
1833 request.SetType(cricket::STUN_BINDING_REQUEST); 1833 request.SetType(cricket::STUN_BINDING_REQUEST);
1834 request.AddAttribute(new cricket::StunByteStringAttribute( 1834 request.AddAttribute(new cricket::StunByteStringAttribute(
1835 cricket::STUN_ATTR_USERNAME, kIceUfrag[1])); 1835 cricket::STUN_ATTR_USERNAME, kIceUfrag[1]));
1836 uint32 prflx_priority = cricket::ICE_TYPE_PREFERENCE_PRFLX << 24; 1836 uint32_t prflx_priority = cricket::ICE_TYPE_PREFERENCE_PRFLX << 24;
1837 request.AddAttribute(new cricket::StunUInt32Attribute( 1837 request.AddAttribute(new cricket::StunUInt32Attribute(
1838 cricket::STUN_ATTR_PRIORITY, prflx_priority)); 1838 cricket::STUN_ATTR_PRIORITY, prflx_priority));
1839 cricket::Port* port = GetPort(&ch); 1839 cricket::Port* port = GetPort(&ch);
1840 port->SignalUnknownAddress(port, rtc::SocketAddress("1.1.1.1", 1), 1840 port->SignalUnknownAddress(port, rtc::SocketAddress("1.1.1.1", 1),
1841 cricket::PROTO_UDP, &request, kIceUfrag[1], false); 1841 cricket::PROTO_UDP, &request, kIceUfrag[1], false);
1842 cricket::Connection* conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1); 1842 cricket::Connection* conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1);
1843 ASSERT_TRUE(conn1 != nullptr); 1843 ASSERT_TRUE(conn1 != nullptr);
1844 EXPECT_EQ(conn1, ch.best_connection()); 1844 EXPECT_EQ(conn1, ch.best_connection());
1845 conn1->ReceivedPingResponse(); 1845 conn1->ReceivedPingResponse();
1846 EXPECT_EQ(conn1, ch.best_connection()); 1846 EXPECT_EQ(conn1, ch.best_connection());
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1912 // Switch because it is writable. 1912 // Switch because it is writable.
1913 conn2->OnReadPacket("DEF", 3, rtc::CreatePacketTime(0)); 1913 conn2->OnReadPacket("DEF", 3, rtc::CreatePacketTime(0));
1914 EXPECT_EQ(conn2, ch.best_connection()); 1914 EXPECT_EQ(conn2, ch.best_connection());
1915 1915
1916 // Now another STUN message with an unknown address and use_candidate will 1916 // Now another STUN message with an unknown address and use_candidate will
1917 // nominate the best connection. 1917 // nominate the best connection.
1918 cricket::IceMessage request; 1918 cricket::IceMessage request;
1919 request.SetType(cricket::STUN_BINDING_REQUEST); 1919 request.SetType(cricket::STUN_BINDING_REQUEST);
1920 request.AddAttribute(new cricket::StunByteStringAttribute( 1920 request.AddAttribute(new cricket::StunByteStringAttribute(
1921 cricket::STUN_ATTR_USERNAME, kIceUfrag[1])); 1921 cricket::STUN_ATTR_USERNAME, kIceUfrag[1]));
1922 uint32 prflx_priority = cricket::ICE_TYPE_PREFERENCE_PRFLX << 24; 1922 uint32_t prflx_priority = cricket::ICE_TYPE_PREFERENCE_PRFLX << 24;
1923 request.AddAttribute(new cricket::StunUInt32Attribute( 1923 request.AddAttribute(new cricket::StunUInt32Attribute(
1924 cricket::STUN_ATTR_PRIORITY, prflx_priority)); 1924 cricket::STUN_ATTR_PRIORITY, prflx_priority));
1925 request.AddAttribute( 1925 request.AddAttribute(
1926 new cricket::StunByteStringAttribute(cricket::STUN_ATTR_USE_CANDIDATE)); 1926 new cricket::StunByteStringAttribute(cricket::STUN_ATTR_USE_CANDIDATE));
1927 cricket::Port* port = GetPort(&ch); 1927 cricket::Port* port = GetPort(&ch);
1928 port->SignalUnknownAddress(port, rtc::SocketAddress("3.3.3.3", 3), 1928 port->SignalUnknownAddress(port, rtc::SocketAddress("3.3.3.3", 3),
1929 cricket::PROTO_UDP, &request, kIceUfrag[1], false); 1929 cricket::PROTO_UDP, &request, kIceUfrag[1], false);
1930 cricket::Connection* conn3 = WaitForConnectionTo(&ch, "3.3.3.3", 3); 1930 cricket::Connection* conn3 = WaitForConnectionTo(&ch, "3.3.3.3", 3);
1931 ASSERT_TRUE(conn3 != nullptr); 1931 ASSERT_TRUE(conn3 != nullptr);
1932 EXPECT_EQ(conn2, ch.best_connection()); // Not writable yet. 1932 EXPECT_EQ(conn2, ch.best_connection()); // Not writable yet.
1933 conn3->ReceivedPingResponse(); // Become writable. 1933 conn3->ReceivedPingResponse(); // Become writable.
1934 EXPECT_EQ(conn3, ch.best_connection()); 1934 EXPECT_EQ(conn3, ch.best_connection());
1935 1935
1936 // Now another data packet will not switch the best connection because the 1936 // Now another data packet will not switch the best connection because the
1937 // best connection was nominated by the controlling side. 1937 // best connection was nominated by the controlling side.
1938 conn2->ReceivedPing(); 1938 conn2->ReceivedPing();
1939 conn2->ReceivedPingResponse(); 1939 conn2->ReceivedPingResponse();
1940 conn2->OnReadPacket("XYZ", 3, rtc::CreatePacketTime(0)); 1940 conn2->OnReadPacket("XYZ", 3, rtc::CreatePacketTime(0));
1941 EXPECT_EQ(conn3, ch.best_connection()); 1941 EXPECT_EQ(conn3, ch.best_connection());
1942 } 1942 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698