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

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

Issue 1345913004: Replace readable with receiving where receiving means receiving anything (stun ping, response or da… (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Address comments 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
« no previous file with comments | « webrtc/p2p/base/p2ptransportchannel.cc ('k') | webrtc/p2p/base/port.h » ('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 474 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 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()->readable() && 495 ep1_ch1()->receiving() &&
496 ep1_ch1()->writable() && 496 ep1_ch1()->writable() &&
497 ep2_ch1()->readable() && 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 }
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 if (channels == 2 && ep1_ch2() && ep2_ch2()) { 554 if (channels == 2 && ep1_ch2() && ep2_ch2()) {
555 // local_channel2 <==> remote_channel2 555 // local_channel2 <==> remote_channel2
556 EXPECT_EQ_WAIT(len, SendData(ep1_ch2(), data, len), 1000); 556 EXPECT_EQ_WAIT(len, SendData(ep1_ch2(), data, len), 1000);
557 EXPECT_TRUE_WAIT(CheckDataOnChannel(ep2_ch2(), data, len), 1000); 557 EXPECT_TRUE_WAIT(CheckDataOnChannel(ep2_ch2(), data, len), 1000);
558 EXPECT_EQ_WAIT(len, SendData(ep2_ch2(), data, len), 1000); 558 EXPECT_EQ_WAIT(len, SendData(ep2_ch2(), data, len), 1000);
559 EXPECT_TRUE_WAIT(CheckDataOnChannel(ep1_ch2(), data, len), 1000); 559 EXPECT_TRUE_WAIT(CheckDataOnChannel(ep1_ch2(), data, len), 1000);
560 } 560 }
561 } 561 }
562 } 562 }
563 563
564 // This test waits for the transport to become readable and writable on both 564 // This test waits for the transport to become receiving and writable on both
565 // end points. Once they are, the end points set new local ice credentials to 565 // end points. Once they are, the end points set new local ice credentials to
566 // restart the ice gathering. Finally it waits for the transport to select a 566 // restart the ice gathering. Finally it waits for the transport to select a
567 // new connection using the newly generated ice candidates. 567 // new connection using the newly generated ice candidates.
568 // Before calling this function the end points must be configured. 568 // Before calling this function the end points must be configured.
569 void TestHandleIceUfragPasswordChanged() { 569 void TestHandleIceUfragPasswordChanged() {
570 ep1_ch1()->SetRemoteIceCredentials(kIceUfrag[1], kIcePwd[1]); 570 ep1_ch1()->SetRemoteIceCredentials(kIceUfrag[1], kIcePwd[1]);
571 ep2_ch1()->SetRemoteIceCredentials(kIceUfrag[0], kIcePwd[0]); 571 ep2_ch1()->SetRemoteIceCredentials(kIceUfrag[0], kIcePwd[0]);
572 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1()->readable() && ep1_ch1()->writable() && 572 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1()->receiving() && ep1_ch1()->writable() &&
573 ep2_ch1()->readable() && ep2_ch1()->writable(), 573 ep2_ch1()->receiving() && ep2_ch1()->writable(),
574 1000, 1000); 574 1000, 1000);
575 575
576 const cricket::Candidate* old_local_candidate1 = LocalCandidate(ep1_ch1()); 576 const cricket::Candidate* old_local_candidate1 = LocalCandidate(ep1_ch1());
577 const cricket::Candidate* old_local_candidate2 = LocalCandidate(ep2_ch1()); 577 const cricket::Candidate* old_local_candidate2 = LocalCandidate(ep2_ch1());
578 const cricket::Candidate* old_remote_candidate1 = 578 const cricket::Candidate* old_remote_candidate1 =
579 RemoteCandidate(ep1_ch1()); 579 RemoteCandidate(ep1_ch1());
580 const cricket::Candidate* old_remote_candidate2 = 580 const cricket::Candidate* old_remote_candidate2 =
581 RemoteCandidate(ep2_ch1()); 581 RemoteCandidate(ep2_ch1());
582 582
583 ep1_ch1()->SetIceCredentials(kIceUfrag[2], kIcePwd[2]); 583 ep1_ch1()->SetIceCredentials(kIceUfrag[2], kIcePwd[2]);
(...skipping 23 matching lines...) Expand all
607 SetIceRole(1, cricket::ICEROLE_CONTROLLING); 607 SetIceRole(1, cricket::ICEROLE_CONTROLLING);
608 SetIceTiebreaker(1, kTiebreaker2); 608 SetIceTiebreaker(1, kTiebreaker2);
609 609
610 // Creating channels with both channels role set to CONTROLLING. 610 // Creating channels with both channels role set to CONTROLLING.
611 CreateChannels(1); 611 CreateChannels(1);
612 // Since both the channels initiated with controlling state and channel2 612 // Since both the channels initiated with controlling state and channel2
613 // has higher tiebreaker value, channel1 should receive SignalRoleConflict. 613 // has higher tiebreaker value, channel1 should receive SignalRoleConflict.
614 EXPECT_TRUE_WAIT(GetRoleConflict(0), 1000); 614 EXPECT_TRUE_WAIT(GetRoleConflict(0), 1000);
615 EXPECT_FALSE(GetRoleConflict(1)); 615 EXPECT_FALSE(GetRoleConflict(1));
616 616
617 EXPECT_TRUE_WAIT(ep1_ch1()->readable() && 617 EXPECT_TRUE_WAIT(ep1_ch1()->receiving() &&
618 ep1_ch1()->writable() && 618 ep1_ch1()->writable() &&
619 ep2_ch1()->readable() && 619 ep2_ch1()->receiving() &&
620 ep2_ch1()->writable(), 620 ep2_ch1()->writable(),
621 1000); 621 1000);
622 622
623 EXPECT_TRUE(ep1_ch1()->best_connection() && 623 EXPECT_TRUE(ep1_ch1()->best_connection() &&
624 ep2_ch1()->best_connection()); 624 ep2_ch1()->best_connection());
625 625
626 TestSendRecv(1); 626 TestSendRecv(1);
627 } 627 }
628 628
629 void OnChannelRequestSignaling(cricket::TransportChannelImpl* channel) { 629 void OnChannelRequestSignaling(cricket::TransportChannelImpl* channel) {
(...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after
1096 TestHandleIceUfragPasswordChanged(); 1096 TestHandleIceUfragPasswordChanged();
1097 DestroyChannels(); 1097 DestroyChannels();
1098 } 1098 }
1099 1099
1100 // Test the operation of GetStats. 1100 // Test the operation of GetStats.
1101 TEST_F(P2PTransportChannelTest, GetStats) { 1101 TEST_F(P2PTransportChannelTest, GetStats) {
1102 ConfigureEndpoints(OPEN, OPEN, 1102 ConfigureEndpoints(OPEN, OPEN,
1103 kDefaultPortAllocatorFlags, 1103 kDefaultPortAllocatorFlags,
1104 kDefaultPortAllocatorFlags); 1104 kDefaultPortAllocatorFlags);
1105 CreateChannels(1); 1105 CreateChannels(1);
1106 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1()->readable() && ep1_ch1()->writable() && 1106 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1()->receiving() && ep1_ch1()->writable() &&
1107 ep2_ch1()->readable() && ep2_ch1()->writable(), 1107 ep2_ch1()->receiving() && ep2_ch1()->writable(),
1108 1000, 1000); 1108 1000, 1000);
1109 TestSendRecv(1); 1109 TestSendRecv(1);
1110 cricket::ConnectionInfos infos; 1110 cricket::ConnectionInfos infos;
1111 ASSERT_TRUE(ep1_ch1()->GetStats(&infos)); 1111 ASSERT_TRUE(ep1_ch1()->GetStats(&infos));
1112 ASSERT_EQ(1U, infos.size()); 1112 ASSERT_EQ(1U, infos.size());
1113 EXPECT_TRUE(infos[0].new_connection); 1113 EXPECT_TRUE(infos[0].new_connection);
1114 EXPECT_TRUE(infos[0].best_connection); 1114 EXPECT_TRUE(infos[0].best_connection);
1115 EXPECT_TRUE(infos[0].readable); 1115 EXPECT_TRUE(infos[0].receiving);
1116 EXPECT_TRUE(infos[0].writable); 1116 EXPECT_TRUE(infos[0].writable);
1117 EXPECT_FALSE(infos[0].timeout); 1117 EXPECT_FALSE(infos[0].timeout);
1118 EXPECT_EQ(10U, infos[0].sent_total_packets); 1118 EXPECT_EQ(10U, infos[0].sent_total_packets);
1119 EXPECT_EQ(0U, infos[0].sent_discarded_packets); 1119 EXPECT_EQ(0U, infos[0].sent_discarded_packets);
1120 EXPECT_EQ(10 * 36U, infos[0].sent_total_bytes); 1120 EXPECT_EQ(10 * 36U, infos[0].sent_total_bytes);
1121 EXPECT_EQ(10 * 36U, infos[0].recv_total_bytes); 1121 EXPECT_EQ(10 * 36U, infos[0].recv_total_bytes);
1122 EXPECT_GT(infos[0].rtt, 0U); 1122 EXPECT_GT(infos[0].rtt, 0U);
1123 DestroyChannels(); 1123 DestroyChannels();
1124 } 1124 }
1125 1125
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
1234 kDefaultPortAllocatorFlags, 1234 kDefaultPortAllocatorFlags,
1235 kDefaultPortAllocatorFlags); 1235 kDefaultPortAllocatorFlags);
1236 1236
1237 SetAllocatorFlags(0, kOnlyLocalPorts); 1237 SetAllocatorFlags(0, kOnlyLocalPorts);
1238 CreateChannels(1); 1238 CreateChannels(1);
1239 ep1_ch1()->set_incoming_only(true); 1239 ep1_ch1()->set_incoming_only(true);
1240 1240
1241 // Pump for 1 second and verify that the channels are not connected. 1241 // Pump for 1 second and verify that the channels are not connected.
1242 rtc::Thread::Current()->ProcessMessages(1000); 1242 rtc::Thread::Current()->ProcessMessages(1000);
1243 1243
1244 EXPECT_FALSE(ep1_ch1()->readable()); 1244 EXPECT_FALSE(ep1_ch1()->receiving());
1245 EXPECT_FALSE(ep1_ch1()->writable()); 1245 EXPECT_FALSE(ep1_ch1()->writable());
1246 EXPECT_FALSE(ep2_ch1()->readable()); 1246 EXPECT_FALSE(ep2_ch1()->receiving());
1247 EXPECT_FALSE(ep2_ch1()->writable()); 1247 EXPECT_FALSE(ep2_ch1()->writable());
1248 1248
1249 DestroyChannels(); 1249 DestroyChannels();
1250 } 1250 }
1251 1251
1252 // Test that a peer behind NAT can connect to a peer that has 1252 // Test that a peer behind NAT can connect to a peer that has
1253 // incoming_only flag set. 1253 // incoming_only flag set.
1254 TEST_F(P2PTransportChannelTest, IncomingOnlyOpen) { 1254 TEST_F(P2PTransportChannelTest, IncomingOnlyOpen) {
1255 ConfigureEndpoints(OPEN, NAT_FULL_CONE, 1255 ConfigureEndpoints(OPEN, NAT_FULL_CONE,
1256 kDefaultPortAllocatorFlags, 1256 kDefaultPortAllocatorFlags,
1257 kDefaultPortAllocatorFlags); 1257 kDefaultPortAllocatorFlags);
1258 1258
1259 SetAllocatorFlags(0, kOnlyLocalPorts); 1259 SetAllocatorFlags(0, kOnlyLocalPorts);
1260 CreateChannels(1); 1260 CreateChannels(1);
1261 ep1_ch1()->set_incoming_only(true); 1261 ep1_ch1()->set_incoming_only(true);
1262 1262
1263 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1() != NULL && ep2_ch1() != NULL && 1263 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1() != NULL && ep2_ch1() != NULL &&
1264 ep1_ch1()->readable() && ep1_ch1()->writable() && 1264 ep1_ch1()->receiving() && ep1_ch1()->writable() &&
1265 ep2_ch1()->readable() && ep2_ch1()->writable(), 1265 ep2_ch1()->receiving() && ep2_ch1()->writable(),
1266 1000, 1000); 1266 1000, 1000);
1267 1267
1268 DestroyChannels(); 1268 DestroyChannels();
1269 } 1269 }
1270 1270
1271 TEST_F(P2PTransportChannelTest, TestTcpConnectionsFromActiveToPassive) { 1271 TEST_F(P2PTransportChannelTest, TestTcpConnectionsFromActiveToPassive) {
1272 AddAddress(0, kPublicAddrs[0]); 1272 AddAddress(0, kPublicAddrs[0]);
1273 AddAddress(1, kPublicAddrs[1]); 1273 AddAddress(1, kPublicAddrs[1]);
1274 1274
1275 SetAllocationStepDelay(0, kMinimumStepDelay); 1275 SetAllocationStepDelay(0, kMinimumStepDelay);
1276 SetAllocationStepDelay(1, kMinimumStepDelay); 1276 SetAllocationStepDelay(1, kMinimumStepDelay);
1277 1277
1278 int kOnlyLocalTcpPorts = cricket::PORTALLOCATOR_DISABLE_UDP | 1278 int kOnlyLocalTcpPorts = cricket::PORTALLOCATOR_DISABLE_UDP |
1279 cricket::PORTALLOCATOR_DISABLE_STUN | 1279 cricket::PORTALLOCATOR_DISABLE_STUN |
1280 cricket::PORTALLOCATOR_DISABLE_RELAY; 1280 cricket::PORTALLOCATOR_DISABLE_RELAY;
1281 // Disable all protocols except TCP. 1281 // Disable all protocols except TCP.
1282 SetAllocatorFlags(0, kOnlyLocalTcpPorts); 1282 SetAllocatorFlags(0, kOnlyLocalTcpPorts);
1283 SetAllocatorFlags(1, kOnlyLocalTcpPorts); 1283 SetAllocatorFlags(1, kOnlyLocalTcpPorts);
1284 1284
1285 SetAllowTcpListen(0, true); // actpass. 1285 SetAllowTcpListen(0, true); // actpass.
1286 SetAllowTcpListen(1, false); // active. 1286 SetAllowTcpListen(1, false); // active.
1287 1287
1288 CreateChannels(1); 1288 CreateChannels(1);
1289 1289
1290 EXPECT_TRUE_WAIT(ep1_ch1()->readable() && ep1_ch1()->writable() && 1290 EXPECT_TRUE_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() &&
1291 ep2_ch1()->readable() && ep2_ch1()->writable(), 1291 ep2_ch1()->receiving() && ep2_ch1()->writable(),
1292 1000); 1292 1000);
1293 EXPECT_TRUE( 1293 EXPECT_TRUE(
1294 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() && 1294 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() &&
1295 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) && 1295 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) &&
1296 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); 1296 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1]));
1297 1297
1298 std::string kTcpProtocol = "tcp"; 1298 std::string kTcpProtocol = "tcp";
1299 EXPECT_EQ(kTcpProtocol, RemoteCandidate(ep1_ch1())->protocol()); 1299 EXPECT_EQ(kTcpProtocol, RemoteCandidate(ep1_ch1())->protocol());
1300 EXPECT_EQ(kTcpProtocol, LocalCandidate(ep1_ch1())->protocol()); 1300 EXPECT_EQ(kTcpProtocol, LocalCandidate(ep1_ch1())->protocol());
1301 EXPECT_EQ(kTcpProtocol, RemoteCandidate(ep2_ch1())->protocol()); 1301 EXPECT_EQ(kTcpProtocol, RemoteCandidate(ep2_ch1())->protocol());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1336 ep1_ch1()->SetIceTiebreaker(kTiebreaker2); 1336 ep1_ch1()->SetIceTiebreaker(kTiebreaker2);
1337 1337
1338 const std::vector<cricket::PortInterface *> ports_after = ep1_ch1()->ports(); 1338 const std::vector<cricket::PortInterface *> ports_after = ep1_ch1()->ports();
1339 for (size_t i = 0; i < ports_after.size(); ++i) { 1339 for (size_t i = 0; i < ports_after.size(); ++i) {
1340 EXPECT_EQ(cricket::ICEROLE_CONTROLLED, ports_before[i]->GetIceRole()); 1340 EXPECT_EQ(cricket::ICEROLE_CONTROLLED, ports_before[i]->GetIceRole());
1341 // SetIceTiebreaker after Connect() has been called will fail. So expect the 1341 // SetIceTiebreaker after Connect() has been called will fail. So expect the
1342 // original value. 1342 // original value.
1343 EXPECT_EQ(kTiebreaker1, ports_before[i]->IceTiebreaker()); 1343 EXPECT_EQ(kTiebreaker1, ports_before[i]->IceTiebreaker());
1344 } 1344 }
1345 1345
1346 EXPECT_TRUE_WAIT(ep1_ch1()->readable() && 1346 EXPECT_TRUE_WAIT(ep1_ch1()->receiving() &&
1347 ep1_ch1()->writable() && 1347 ep1_ch1()->writable() &&
1348 ep2_ch1()->readable() && 1348 ep2_ch1()->receiving() &&
1349 ep2_ch1()->writable(), 1349 ep2_ch1()->writable(),
1350 1000); 1350 1000);
1351 1351
1352 EXPECT_TRUE(ep1_ch1()->best_connection() && 1352 EXPECT_TRUE(ep1_ch1()->best_connection() &&
1353 ep2_ch1()->best_connection()); 1353 ep2_ch1()->best_connection());
1354 1354
1355 TestSendRecv(1); 1355 TestSendRecv(1);
1356 DestroyChannels(); 1356 DestroyChannels();
1357 } 1357 }
1358 1358
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1393 1393
1394 SetAllocationStepDelay(0, kMinimumStepDelay); 1394 SetAllocationStepDelay(0, kMinimumStepDelay);
1395 SetAllocationStepDelay(1, kMinimumStepDelay); 1395 SetAllocationStepDelay(1, kMinimumStepDelay);
1396 1396
1397 // Enable IPv6 1397 // Enable IPv6
1398 SetAllocatorFlags(0, cricket::PORTALLOCATOR_ENABLE_IPV6); 1398 SetAllocatorFlags(0, cricket::PORTALLOCATOR_ENABLE_IPV6);
1399 SetAllocatorFlags(1, cricket::PORTALLOCATOR_ENABLE_IPV6); 1399 SetAllocatorFlags(1, cricket::PORTALLOCATOR_ENABLE_IPV6);
1400 1400
1401 CreateChannels(1); 1401 CreateChannels(1);
1402 1402
1403 EXPECT_TRUE_WAIT(ep1_ch1()->readable() && ep1_ch1()->writable() && 1403 EXPECT_TRUE_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() &&
1404 ep2_ch1()->readable() && ep2_ch1()->writable(), 1404 ep2_ch1()->receiving() && ep2_ch1()->writable(),
1405 1000); 1405 1000);
1406 EXPECT_TRUE( 1406 EXPECT_TRUE(
1407 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() && 1407 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() &&
1408 LocalCandidate(ep1_ch1())->address().EqualIPs(kIPv6PublicAddrs[0]) && 1408 LocalCandidate(ep1_ch1())->address().EqualIPs(kIPv6PublicAddrs[0]) &&
1409 RemoteCandidate(ep1_ch1())->address().EqualIPs(kIPv6PublicAddrs[1])); 1409 RemoteCandidate(ep1_ch1())->address().EqualIPs(kIPv6PublicAddrs[1]));
1410 1410
1411 TestSendRecv(1); 1411 TestSendRecv(1);
1412 DestroyChannels(); 1412 DestroyChannels();
1413 } 1413 }
1414 1414
1415 // Testing forceful TURN connections. 1415 // Testing forceful TURN connections.
1416 TEST_F(P2PTransportChannelTest, TestForceTurn) { 1416 TEST_F(P2PTransportChannelTest, TestForceTurn) {
1417 ConfigureEndpoints(NAT_PORT_RESTRICTED, NAT_SYMMETRIC, 1417 ConfigureEndpoints(NAT_PORT_RESTRICTED, NAT_SYMMETRIC,
1418 kDefaultPortAllocatorFlags | 1418 kDefaultPortAllocatorFlags |
1419 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET, 1419 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET,
1420 kDefaultPortAllocatorFlags | 1420 kDefaultPortAllocatorFlags |
1421 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); 1421 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET);
1422 set_force_relay(true); 1422 set_force_relay(true);
1423 1423
1424 SetAllocationStepDelay(0, kMinimumStepDelay); 1424 SetAllocationStepDelay(0, kMinimumStepDelay);
1425 SetAllocationStepDelay(1, kMinimumStepDelay); 1425 SetAllocationStepDelay(1, kMinimumStepDelay);
1426 1426
1427 CreateChannels(1); 1427 CreateChannels(1);
1428 1428
1429 EXPECT_TRUE_WAIT(ep1_ch1()->readable() && 1429 EXPECT_TRUE_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() &&
1430 ep1_ch1()->writable() && 1430 ep2_ch1()->receiving() && ep2_ch1()->writable(),
1431 ep2_ch1()->readable() &&
1432 ep2_ch1()->writable(),
1433 2000); 1431 2000);
1434 1432
1435 EXPECT_TRUE(ep1_ch1()->best_connection() && 1433 EXPECT_TRUE(ep1_ch1()->best_connection() &&
1436 ep2_ch1()->best_connection()); 1434 ep2_ch1()->best_connection());
1437 1435
1438 EXPECT_EQ("relay", RemoteCandidate(ep1_ch1())->type()); 1436 EXPECT_EQ("relay", RemoteCandidate(ep1_ch1())->type());
1439 EXPECT_EQ("relay", LocalCandidate(ep1_ch1())->type()); 1437 EXPECT_EQ("relay", LocalCandidate(ep1_ch1())->type());
1440 EXPECT_EQ("relay", RemoteCandidate(ep2_ch1())->type()); 1438 EXPECT_EQ("relay", RemoteCandidate(ep2_ch1())->type());
1441 EXPECT_EQ("relay", LocalCandidate(ep2_ch1())->type()); 1439 EXPECT_EQ("relay", LocalCandidate(ep2_ch1())->type());
1442 1440
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1501 // priority than others. This is due to FakeNetwork::AddInterface method. 1499 // priority than others. This is due to FakeNetwork::AddInterface method.
1502 AddAddress(1, kAlternateAddrs[1]); 1500 AddAddress(1, kAlternateAddrs[1]);
1503 AddAddress(1, kPublicAddrs[1]); 1501 AddAddress(1, kPublicAddrs[1]);
1504 1502
1505 // Use only local ports for simplicity. 1503 // Use only local ports for simplicity.
1506 SetAllocatorFlags(0, kOnlyLocalPorts); 1504 SetAllocatorFlags(0, kOnlyLocalPorts);
1507 SetAllocatorFlags(1, kOnlyLocalPorts); 1505 SetAllocatorFlags(1, kOnlyLocalPorts);
1508 1506
1509 // Create channels and let them go writable, as usual. 1507 // Create channels and let them go writable, as usual.
1510 CreateChannels(1); 1508 CreateChannels(1);
1511 EXPECT_TRUE_WAIT(ep1_ch1()->readable() && ep1_ch1()->writable() && 1509 EXPECT_TRUE_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() &&
1512 ep2_ch1()->readable() && ep2_ch1()->writable(), 1510 ep2_ch1()->receiving() && ep2_ch1()->writable(),
1513 1000); 1511 1000);
1514 EXPECT_TRUE( 1512 EXPECT_TRUE(
1515 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() && 1513 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() &&
1516 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) && 1514 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) &&
1517 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); 1515 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1]));
1518 1516
1519 // Blackhole any traffic to or from the public addrs. 1517 // Blackhole any traffic to or from the public addrs.
1520 LOG(LS_INFO) << "Failing over..."; 1518 LOG(LS_INFO) << "Failing over...";
1521 fw()->AddRule(false, rtc::FP_ANY, rtc::FD_ANY, 1519 fw()->AddRule(false, rtc::FP_ANY, rtc::FD_ANY,
1522 kPublicAddrs[1]); 1520 kPublicAddrs[1]);
(...skipping 22 matching lines...) Expand all
1545 // Test that we can switch links in a coordinated fashion. 1543 // Test that we can switch links in a coordinated fashion.
1546 TEST_F(P2PTransportChannelMultihomedTest, TestDrain) { 1544 TEST_F(P2PTransportChannelMultihomedTest, TestDrain) {
1547 AddAddress(0, kPublicAddrs[0]); 1545 AddAddress(0, kPublicAddrs[0]);
1548 AddAddress(1, kPublicAddrs[1]); 1546 AddAddress(1, kPublicAddrs[1]);
1549 // Use only local ports for simplicity. 1547 // Use only local ports for simplicity.
1550 SetAllocatorFlags(0, kOnlyLocalPorts); 1548 SetAllocatorFlags(0, kOnlyLocalPorts);
1551 SetAllocatorFlags(1, kOnlyLocalPorts); 1549 SetAllocatorFlags(1, kOnlyLocalPorts);
1552 1550
1553 // Create channels and let them go writable, as usual. 1551 // Create channels and let them go writable, as usual.
1554 CreateChannels(1); 1552 CreateChannels(1);
1555 EXPECT_TRUE_WAIT(ep1_ch1()->readable() && ep1_ch1()->writable() && 1553 EXPECT_TRUE_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() &&
1556 ep2_ch1()->readable() && ep2_ch1()->writable(), 1554 ep2_ch1()->receiving() && ep2_ch1()->writable(),
1557 1000); 1555 1000);
1558 EXPECT_TRUE( 1556 EXPECT_TRUE(
1559 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() && 1557 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() &&
1560 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) && 1558 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) &&
1561 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); 1559 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1]));
1562 1560
1563 1561
1564 // Remove the public interface, add the alternate interface, and allocate 1562 // Remove the public interface, add the alternate interface, and allocate
1565 // a new generation of candidates for the new interface (via Connect()). 1563 // a new generation of candidates for the new interface (via Connect()).
1566 LOG(LS_INFO) << "Draining..."; 1564 LOG(LS_INFO) << "Draining...";
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
1699 PrepareChannel(&ch); 1697 PrepareChannel(&ch);
1700 ch.Connect(); 1698 ch.Connect();
1701 1699
1702 // Create conn1 and keep track of original candidate priority. 1700 // Create conn1 and keep track of original candidate priority.
1703 ch.OnCandidate(CreateCandidate("1.1.1.1", 1, 1)); 1701 ch.OnCandidate(CreateCandidate("1.1.1.1", 1, 1));
1704 cricket::Connection* conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1); 1702 cricket::Connection* conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1);
1705 ASSERT_TRUE(conn1 != nullptr); 1703 ASSERT_TRUE(conn1 != nullptr);
1706 uint32 remote_priority = conn1->remote_candidate().priority(); 1704 uint32 remote_priority = conn1->remote_candidate().priority();
1707 1705
1708 // Create a higher priority candidate and make the connection 1706 // Create a higher priority candidate and make the connection
1709 // readable/writable. This will prune conn1. 1707 // receiving/writable. This will prune conn1.
1710 ch.OnCandidate(CreateCandidate("2.2.2.2", 2, 2)); 1708 ch.OnCandidate(CreateCandidate("2.2.2.2", 2, 2));
1711 cricket::Connection* conn2 = WaitForConnectionTo(&ch, "2.2.2.2", 2); 1709 cricket::Connection* conn2 = WaitForConnectionTo(&ch, "2.2.2.2", 2);
1712 ASSERT_TRUE(conn2 != nullptr); 1710 ASSERT_TRUE(conn2 != nullptr);
1713 conn2->ReceivedPing(); 1711 conn2->ReceivedPing();
1714 conn2->ReceivedPingResponse(); 1712 conn2->ReceivedPingResponse();
1715 1713
1716 // Wait for conn1 being destroyed. 1714 // Wait for conn1 to be destroyed.
1717 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);
1718 cricket::Port* port = GetPort(&ch); 1716 cricket::Port* port = GetPort(&ch);
1719 1717
1720 // Create a minimal STUN message with prflx priority. 1718 // Create a minimal STUN message with prflx priority.
1721 cricket::IceMessage request; 1719 cricket::IceMessage request;
1722 request.SetType(cricket::STUN_BINDING_REQUEST); 1720 request.SetType(cricket::STUN_BINDING_REQUEST);
1723 request.AddAttribute(new cricket::StunByteStringAttribute( 1721 request.AddAttribute(new cricket::StunByteStringAttribute(
1724 cricket::STUN_ATTR_USERNAME, kIceUfrag[1])); 1722 cricket::STUN_ATTR_USERNAME, kIceUfrag[1]));
1725 uint32 prflx_priority = cricket::ICE_TYPE_PREFERENCE_PRFLX << 24; 1723 uint32 prflx_priority = cricket::ICE_TYPE_PREFERENCE_PRFLX << 24;
1726 request.AddAttribute(new cricket::StunUInt32Attribute( 1724 request.AddAttribute(new cricket::StunUInt32Attribute(
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
1898 cricket::Connection* conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1); 1896 cricket::Connection* conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1);
1899 ASSERT_TRUE(conn1 != nullptr); 1897 ASSERT_TRUE(conn1 != nullptr);
1900 EXPECT_EQ(conn1, ch.best_connection()); 1898 EXPECT_EQ(conn1, ch.best_connection());
1901 1899
1902 // If a data packet is received on conn2, the best connection should 1900 // If a data packet is received on conn2, the best connection should
1903 // switch to conn2 because the controlled side must mirror the media path 1901 // switch to conn2 because the controlled side must mirror the media path
1904 // chosen by the controlling side. 1902 // chosen by the controlling side.
1905 ch.OnCandidate(CreateCandidate("2.2.2.2", 2, 1)); 1903 ch.OnCandidate(CreateCandidate("2.2.2.2", 2, 1));
1906 cricket::Connection* conn2 = WaitForConnectionTo(&ch, "2.2.2.2", 2); 1904 cricket::Connection* conn2 = WaitForConnectionTo(&ch, "2.2.2.2", 2);
1907 ASSERT_TRUE(conn2 != nullptr); 1905 ASSERT_TRUE(conn2 != nullptr);
1908 conn2->ReceivedPing(); // Become readable. 1906 conn2->ReceivedPing(); // Start receiving.
1909 // Do not switch because it is not writable. 1907 // Do not switch because it is not writable.
1910 conn2->OnReadPacket("ABC", 3, rtc::CreatePacketTime(0)); 1908 conn2->OnReadPacket("ABC", 3, rtc::CreatePacketTime(0));
1911 EXPECT_EQ(conn1, ch.best_connection()); 1909 EXPECT_EQ(conn1, ch.best_connection());
1912 1910
1913 conn2->ReceivedPingResponse(); // Become writable. 1911 conn2->ReceivedPingResponse(); // Become writable.
1914 // Switch because it is writable. 1912 // Switch because it is writable.
1915 conn2->OnReadPacket("DEF", 3, rtc::CreatePacketTime(0)); 1913 conn2->OnReadPacket("DEF", 3, rtc::CreatePacketTime(0));
1916 EXPECT_EQ(conn2, ch.best_connection()); 1914 EXPECT_EQ(conn2, ch.best_connection());
1917 1915
1918 // 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
(...skipping 16 matching lines...) Expand all
1935 conn3->ReceivedPingResponse(); // Become writable. 1933 conn3->ReceivedPingResponse(); // Become writable.
1936 EXPECT_EQ(conn3, ch.best_connection()); 1934 EXPECT_EQ(conn3, ch.best_connection());
1937 1935
1938 // 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
1939 // best connection was nominated by the controlling side. 1937 // best connection was nominated by the controlling side.
1940 conn2->ReceivedPing(); 1938 conn2->ReceivedPing();
1941 conn2->ReceivedPingResponse(); 1939 conn2->ReceivedPingResponse();
1942 conn2->OnReadPacket("XYZ", 3, rtc::CreatePacketTime(0)); 1940 conn2->OnReadPacket("XYZ", 3, rtc::CreatePacketTime(0));
1943 EXPECT_EQ(conn3, ch.best_connection()); 1941 EXPECT_EQ(conn3, ch.best_connection());
1944 } 1942 }
OLDNEW
« no previous file with comments | « webrtc/p2p/base/p2ptransportchannel.cc ('k') | webrtc/p2p/base/port.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698