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

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

Issue 1356103002: Revert of 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: 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()->receiving() && 495 ep1_ch1()->readable() &&
496 ep1_ch1()->writable() && 496 ep1_ch1()->writable() &&
497 ep2_ch1()->receiving() && 497 ep2_ch1()->readable() &&
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 receiving and writable on both 564 // This test waits for the transport to become readable 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()->receiving() && ep1_ch1()->writable() && 572 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1()->readable() && ep1_ch1()->writable() &&
573 ep2_ch1()->receiving() && ep2_ch1()->writable(), 573 ep2_ch1()->readable() && 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()->receiving() && 617 EXPECT_TRUE_WAIT(ep1_ch1()->readable() &&
618 ep1_ch1()->writable() && 618 ep1_ch1()->writable() &&
619 ep2_ch1()->receiving() && 619 ep2_ch1()->readable() &&
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()->receiving() && ep1_ch1()->writable() && 1106 EXPECT_TRUE_WAIT_MARGIN(ep1_ch1()->readable() && ep1_ch1()->writable() &&
1107 ep2_ch1()->receiving() && ep2_ch1()->writable(), 1107 ep2_ch1()->readable() && 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].receiving); 1115 EXPECT_TRUE(infos[0].readable);
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()->receiving()); 1244 EXPECT_FALSE(ep1_ch1()->readable());
1245 EXPECT_FALSE(ep1_ch1()->writable()); 1245 EXPECT_FALSE(ep1_ch1()->writable());
1246 EXPECT_FALSE(ep2_ch1()->receiving()); 1246 EXPECT_FALSE(ep2_ch1()->readable());
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()->receiving() && ep1_ch1()->writable() && 1264 ep1_ch1()->readable() && ep1_ch1()->writable() &&
1265 ep2_ch1()->receiving() && ep2_ch1()->writable(), 1265 ep2_ch1()->readable() && 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()->receiving() && ep1_ch1()->writable() && 1290 EXPECT_TRUE_WAIT(ep1_ch1()->readable() && ep1_ch1()->writable() &&
1291 ep2_ch1()->receiving() && ep2_ch1()->writable(), 1291 ep2_ch1()->readable() && 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()->receiving() && 1346 EXPECT_TRUE_WAIT(ep1_ch1()->readable() &&
1347 ep1_ch1()->writable() && 1347 ep1_ch1()->writable() &&
1348 ep2_ch1()->receiving() && 1348 ep2_ch1()->readable() &&
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()->receiving() && ep1_ch1()->writable() && 1403 EXPECT_TRUE_WAIT(ep1_ch1()->readable() && ep1_ch1()->writable() &&
1404 ep2_ch1()->receiving() && ep2_ch1()->writable(), 1404 ep2_ch1()->readable() && 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()->receiving() && ep1_ch1()->writable() && 1429 EXPECT_TRUE_WAIT(ep1_ch1()->readable() &&
1430 ep2_ch1()->receiving() && ep2_ch1()->writable(), 1430 ep1_ch1()->writable() &&
1431 ep2_ch1()->readable() &&
1432 ep2_ch1()->writable(),
1431 2000); 1433 2000);
1432 1434
1433 EXPECT_TRUE(ep1_ch1()->best_connection() && 1435 EXPECT_TRUE(ep1_ch1()->best_connection() &&
1434 ep2_ch1()->best_connection()); 1436 ep2_ch1()->best_connection());
1435 1437
1436 EXPECT_EQ("relay", RemoteCandidate(ep1_ch1())->type()); 1438 EXPECT_EQ("relay", RemoteCandidate(ep1_ch1())->type());
1437 EXPECT_EQ("relay", LocalCandidate(ep1_ch1())->type()); 1439 EXPECT_EQ("relay", LocalCandidate(ep1_ch1())->type());
1438 EXPECT_EQ("relay", RemoteCandidate(ep2_ch1())->type()); 1440 EXPECT_EQ("relay", RemoteCandidate(ep2_ch1())->type());
1439 EXPECT_EQ("relay", LocalCandidate(ep2_ch1())->type()); 1441 EXPECT_EQ("relay", LocalCandidate(ep2_ch1())->type());
1440 1442
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1499 // priority than others. This is due to FakeNetwork::AddInterface method. 1501 // priority than others. This is due to FakeNetwork::AddInterface method.
1500 AddAddress(1, kAlternateAddrs[1]); 1502 AddAddress(1, kAlternateAddrs[1]);
1501 AddAddress(1, kPublicAddrs[1]); 1503 AddAddress(1, kPublicAddrs[1]);
1502 1504
1503 // Use only local ports for simplicity. 1505 // Use only local ports for simplicity.
1504 SetAllocatorFlags(0, kOnlyLocalPorts); 1506 SetAllocatorFlags(0, kOnlyLocalPorts);
1505 SetAllocatorFlags(1, kOnlyLocalPorts); 1507 SetAllocatorFlags(1, kOnlyLocalPorts);
1506 1508
1507 // Create channels and let them go writable, as usual. 1509 // Create channels and let them go writable, as usual.
1508 CreateChannels(1); 1510 CreateChannels(1);
1509 EXPECT_TRUE_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() && 1511 EXPECT_TRUE_WAIT(ep1_ch1()->readable() && ep1_ch1()->writable() &&
1510 ep2_ch1()->receiving() && ep2_ch1()->writable(), 1512 ep2_ch1()->readable() && ep2_ch1()->writable(),
1511 1000); 1513 1000);
1512 EXPECT_TRUE( 1514 EXPECT_TRUE(
1513 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() && 1515 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() &&
1514 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) && 1516 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) &&
1515 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); 1517 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1]));
1516 1518
1517 // Blackhole any traffic to or from the public addrs. 1519 // Blackhole any traffic to or from the public addrs.
1518 LOG(LS_INFO) << "Failing over..."; 1520 LOG(LS_INFO) << "Failing over...";
1519 fw()->AddRule(false, rtc::FP_ANY, rtc::FD_ANY, 1521 fw()->AddRule(false, rtc::FP_ANY, rtc::FD_ANY,
1520 kPublicAddrs[1]); 1522 kPublicAddrs[1]);
(...skipping 22 matching lines...) Expand all
1543 // Test that we can switch links in a coordinated fashion. 1545 // Test that we can switch links in a coordinated fashion.
1544 TEST_F(P2PTransportChannelMultihomedTest, TestDrain) { 1546 TEST_F(P2PTransportChannelMultihomedTest, TestDrain) {
1545 AddAddress(0, kPublicAddrs[0]); 1547 AddAddress(0, kPublicAddrs[0]);
1546 AddAddress(1, kPublicAddrs[1]); 1548 AddAddress(1, kPublicAddrs[1]);
1547 // Use only local ports for simplicity. 1549 // Use only local ports for simplicity.
1548 SetAllocatorFlags(0, kOnlyLocalPorts); 1550 SetAllocatorFlags(0, kOnlyLocalPorts);
1549 SetAllocatorFlags(1, kOnlyLocalPorts); 1551 SetAllocatorFlags(1, kOnlyLocalPorts);
1550 1552
1551 // Create channels and let them go writable, as usual. 1553 // Create channels and let them go writable, as usual.
1552 CreateChannels(1); 1554 CreateChannels(1);
1553 EXPECT_TRUE_WAIT(ep1_ch1()->receiving() && ep1_ch1()->writable() && 1555 EXPECT_TRUE_WAIT(ep1_ch1()->readable() && ep1_ch1()->writable() &&
1554 ep2_ch1()->receiving() && ep2_ch1()->writable(), 1556 ep2_ch1()->readable() && ep2_ch1()->writable(),
1555 1000); 1557 1000);
1556 EXPECT_TRUE( 1558 EXPECT_TRUE(
1557 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() && 1559 ep1_ch1()->best_connection() && ep2_ch1()->best_connection() &&
1558 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) && 1560 LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) &&
1559 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); 1561 RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1]));
1560 1562
1561 1563
1562 // Remove the public interface, add the alternate interface, and allocate 1564 // Remove the public interface, add the alternate interface, and allocate
1563 // a new generation of candidates for the new interface (via Connect()). 1565 // a new generation of candidates for the new interface (via Connect()).
1564 LOG(LS_INFO) << "Draining..."; 1566 LOG(LS_INFO) << "Draining...";
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
1697 PrepareChannel(&ch); 1699 PrepareChannel(&ch);
1698 ch.Connect(); 1700 ch.Connect();
1699 1701
1700 // Create conn1 and keep track of original candidate priority. 1702 // Create conn1 and keep track of original candidate priority.
1701 ch.OnCandidate(CreateCandidate("1.1.1.1", 1, 1)); 1703 ch.OnCandidate(CreateCandidate("1.1.1.1", 1, 1));
1702 cricket::Connection* conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1); 1704 cricket::Connection* conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1);
1703 ASSERT_TRUE(conn1 != nullptr); 1705 ASSERT_TRUE(conn1 != nullptr);
1704 uint32 remote_priority = conn1->remote_candidate().priority(); 1706 uint32 remote_priority = conn1->remote_candidate().priority();
1705 1707
1706 // Create a higher priority candidate and make the connection 1708 // Create a higher priority candidate and make the connection
1707 // receiving/writable. This will prune conn1. 1709 // readable/writable. This will prune conn1.
1708 ch.OnCandidate(CreateCandidate("2.2.2.2", 2, 2)); 1710 ch.OnCandidate(CreateCandidate("2.2.2.2", 2, 2));
1709 cricket::Connection* conn2 = WaitForConnectionTo(&ch, "2.2.2.2", 2); 1711 cricket::Connection* conn2 = WaitForConnectionTo(&ch, "2.2.2.2", 2);
1710 ASSERT_TRUE(conn2 != nullptr); 1712 ASSERT_TRUE(conn2 != nullptr);
1711 conn2->ReceivedPing(); 1713 conn2->ReceivedPing();
1712 conn2->ReceivedPingResponse(); 1714 conn2->ReceivedPingResponse();
1713 1715
1714 // Wait for conn1 to be destroyed. 1716 // Wait for conn1 being destroyed.
1715 EXPECT_TRUE_WAIT(GetConnectionTo(&ch, "1.1.1.1", 1) == nullptr, 3000); 1717 EXPECT_TRUE_WAIT(GetConnectionTo(&ch, "1.1.1.1", 1) == nullptr, 3000);
1716 cricket::Port* port = GetPort(&ch); 1718 cricket::Port* port = GetPort(&ch);
1717 1719
1718 // Create a minimal STUN message with prflx priority. 1720 // Create a minimal STUN message with prflx priority.
1719 cricket::IceMessage request; 1721 cricket::IceMessage request;
1720 request.SetType(cricket::STUN_BINDING_REQUEST); 1722 request.SetType(cricket::STUN_BINDING_REQUEST);
1721 request.AddAttribute(new cricket::StunByteStringAttribute( 1723 request.AddAttribute(new cricket::StunByteStringAttribute(
1722 cricket::STUN_ATTR_USERNAME, kIceUfrag[1])); 1724 cricket::STUN_ATTR_USERNAME, kIceUfrag[1]));
1723 uint32 prflx_priority = cricket::ICE_TYPE_PREFERENCE_PRFLX << 24; 1725 uint32 prflx_priority = cricket::ICE_TYPE_PREFERENCE_PRFLX << 24;
1724 request.AddAttribute(new cricket::StunUInt32Attribute( 1726 request.AddAttribute(new cricket::StunUInt32Attribute(
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
1896 cricket::Connection* conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1); 1898 cricket::Connection* conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1);
1897 ASSERT_TRUE(conn1 != nullptr); 1899 ASSERT_TRUE(conn1 != nullptr);
1898 EXPECT_EQ(conn1, ch.best_connection()); 1900 EXPECT_EQ(conn1, ch.best_connection());
1899 1901
1900 // If a data packet is received on conn2, the best connection should 1902 // If a data packet is received on conn2, the best connection should
1901 // switch to conn2 because the controlled side must mirror the media path 1903 // switch to conn2 because the controlled side must mirror the media path
1902 // chosen by the controlling side. 1904 // chosen by the controlling side.
1903 ch.OnCandidate(CreateCandidate("2.2.2.2", 2, 1)); 1905 ch.OnCandidate(CreateCandidate("2.2.2.2", 2, 1));
1904 cricket::Connection* conn2 = WaitForConnectionTo(&ch, "2.2.2.2", 2); 1906 cricket::Connection* conn2 = WaitForConnectionTo(&ch, "2.2.2.2", 2);
1905 ASSERT_TRUE(conn2 != nullptr); 1907 ASSERT_TRUE(conn2 != nullptr);
1906 conn2->ReceivedPing(); // Start receiving. 1908 conn2->ReceivedPing(); // Become readable.
1907 // Do not switch because it is not writable. 1909 // Do not switch because it is not writable.
1908 conn2->OnReadPacket("ABC", 3, rtc::CreatePacketTime(0)); 1910 conn2->OnReadPacket("ABC", 3, rtc::CreatePacketTime(0));
1909 EXPECT_EQ(conn1, ch.best_connection()); 1911 EXPECT_EQ(conn1, ch.best_connection());
1910 1912
1911 conn2->ReceivedPingResponse(); // Become writable. 1913 conn2->ReceivedPingResponse(); // Become writable.
1912 // Switch because it is writable. 1914 // Switch because it is writable.
1913 conn2->OnReadPacket("DEF", 3, rtc::CreatePacketTime(0)); 1915 conn2->OnReadPacket("DEF", 3, rtc::CreatePacketTime(0));
1914 EXPECT_EQ(conn2, ch.best_connection()); 1916 EXPECT_EQ(conn2, ch.best_connection());
1915 1917
1916 // Now another STUN message with an unknown address and use_candidate will 1918 // Now another STUN message with an unknown address and use_candidate will
(...skipping 16 matching lines...) Expand all
1933 conn3->ReceivedPingResponse(); // Become writable. 1935 conn3->ReceivedPingResponse(); // Become writable.
1934 EXPECT_EQ(conn3, ch.best_connection()); 1936 EXPECT_EQ(conn3, ch.best_connection());
1935 1937
1936 // Now another data packet will not switch the best connection because the 1938 // Now another data packet will not switch the best connection because the
1937 // best connection was nominated by the controlling side. 1939 // best connection was nominated by the controlling side.
1938 conn2->ReceivedPing(); 1940 conn2->ReceivedPing();
1939 conn2->ReceivedPingResponse(); 1941 conn2->ReceivedPingResponse();
1940 conn2->OnReadPacket("XYZ", 3, rtc::CreatePacketTime(0)); 1942 conn2->OnReadPacket("XYZ", 3, rtc::CreatePacketTime(0));
1941 EXPECT_EQ(conn3, ch.best_connection()); 1943 EXPECT_EQ(conn3, ch.best_connection());
1942 } 1944 }
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