| OLD | NEW | 
|---|
| 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 14 matching lines...) Expand all  Loading... | 
| 25 #include "webrtc/base/physicalsocketserver.h" | 25 #include "webrtc/base/physicalsocketserver.h" | 
| 26 #include "webrtc/base/proxyserver.h" | 26 #include "webrtc/base/proxyserver.h" | 
| 27 #include "webrtc/base/socketaddress.h" | 27 #include "webrtc/base/socketaddress.h" | 
| 28 #include "webrtc/base/ssladapter.h" | 28 #include "webrtc/base/ssladapter.h" | 
| 29 #include "webrtc/base/thread.h" | 29 #include "webrtc/base/thread.h" | 
| 30 #include "webrtc/base/virtualsocketserver.h" | 30 #include "webrtc/base/virtualsocketserver.h" | 
| 31 | 31 | 
| 32 using cricket::kDefaultPortAllocatorFlags; | 32 using cricket::kDefaultPortAllocatorFlags; | 
| 33 using cricket::kMinimumStepDelay; | 33 using cricket::kMinimumStepDelay; | 
| 34 using cricket::kDefaultStepDelay; | 34 using cricket::kDefaultStepDelay; | 
| 35 using cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG; |  | 
| 36 using cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET; | 35 using cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET; | 
| 37 using cricket::ServerAddresses; | 36 using cricket::ServerAddresses; | 
| 38 using rtc::SocketAddress; | 37 using rtc::SocketAddress; | 
| 39 | 38 | 
| 40 static const int kDefaultTimeout = 1000; | 39 static const int kDefaultTimeout = 1000; | 
| 41 static const int kOnlyLocalPorts = cricket::PORTALLOCATOR_DISABLE_STUN | | 40 static const int kOnlyLocalPorts = cricket::PORTALLOCATOR_DISABLE_STUN | | 
| 42                                    cricket::PORTALLOCATOR_DISABLE_RELAY | | 41                                    cricket::PORTALLOCATOR_DISABLE_RELAY | | 
| 43                                    cricket::PORTALLOCATOR_DISABLE_TCP; | 42                                    cricket::PORTALLOCATOR_DISABLE_TCP; | 
| 44 // Addresses on the public internet. | 43 // Addresses on the public internet. | 
| 45 static const SocketAddress kPublicAddrs[2] = | 44 static const SocketAddress kPublicAddrs[2] = | 
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 210     } | 209     } | 
| 211     cricket::TransportChannel* channel; | 210     cricket::TransportChannel* channel; | 
| 212     cricket::Candidate candidate; | 211     cricket::Candidate candidate; | 
| 213   }; | 212   }; | 
| 214 | 213 | 
| 215   struct Endpoint { | 214   struct Endpoint { | 
| 216     Endpoint() | 215     Endpoint() | 
| 217         : role_(cricket::ICEROLE_UNKNOWN), | 216         : role_(cricket::ICEROLE_UNKNOWN), | 
| 218           tiebreaker_(0), | 217           tiebreaker_(0), | 
| 219           role_conflict_(false), | 218           role_conflict_(false), | 
| 220           save_candidates_(false), | 219           save_candidates_(false) {} | 
| 221           protocol_type_(cricket::ICEPROTO_GOOGLE) {} |  | 
| 222     bool HasChannel(cricket::TransportChannel* ch) { | 220     bool HasChannel(cricket::TransportChannel* ch) { | 
| 223       return (ch == cd1_.ch_.get() || ch == cd2_.ch_.get()); | 221       return (ch == cd1_.ch_.get() || ch == cd2_.ch_.get()); | 
| 224     } | 222     } | 
| 225     ChannelData* GetChannelData(cricket::TransportChannel* ch) { | 223     ChannelData* GetChannelData(cricket::TransportChannel* ch) { | 
| 226       if (!HasChannel(ch)) return NULL; | 224       if (!HasChannel(ch)) return NULL; | 
| 227       if (cd1_.ch_.get() == ch) | 225       if (cd1_.ch_.get() == ch) | 
| 228         return &cd1_; | 226         return &cd1_; | 
| 229       else | 227       else | 
| 230         return &cd2_; | 228         return &cd2_; | 
| 231     } | 229     } | 
| 232 | 230 | 
| 233     void SetIceRole(cricket::IceRole role) { role_ = role; } | 231     void SetIceRole(cricket::IceRole role) { role_ = role; } | 
| 234     cricket::IceRole ice_role() { return role_; } | 232     cricket::IceRole ice_role() { return role_; } | 
| 235     void SetIceProtocolType(cricket::IceProtocolType type) { |  | 
| 236       protocol_type_ = type; |  | 
| 237     } |  | 
| 238     cricket::IceProtocolType protocol_type() { return protocol_type_; } |  | 
| 239     void SetIceTiebreaker(uint64 tiebreaker) { tiebreaker_ = tiebreaker; } | 233     void SetIceTiebreaker(uint64 tiebreaker) { tiebreaker_ = tiebreaker; } | 
| 240     uint64 GetIceTiebreaker() { return tiebreaker_; } | 234     uint64 GetIceTiebreaker() { return tiebreaker_; } | 
| 241     void OnRoleConflict(bool role_conflict) { role_conflict_ = role_conflict; } | 235     void OnRoleConflict(bool role_conflict) { role_conflict_ = role_conflict; } | 
| 242     bool role_conflict() { return role_conflict_; } | 236     bool role_conflict() { return role_conflict_; } | 
| 243     void SetAllocationStepDelay(uint32 delay) { | 237     void SetAllocationStepDelay(uint32 delay) { | 
| 244       allocator_->set_step_delay(delay); | 238       allocator_->set_step_delay(delay); | 
| 245     } | 239     } | 
| 246     void SetAllowTcpListen(bool allow_tcp_listen) { | 240     void SetAllowTcpListen(bool allow_tcp_listen) { | 
| 247       allocator_->set_allow_tcp_listen(allow_tcp_listen); | 241       allocator_->set_allow_tcp_listen(allow_tcp_listen); | 
| 248     } | 242     } | 
| 249 | 243 | 
| 250     rtc::FakeNetworkManager network_manager_; | 244     rtc::FakeNetworkManager network_manager_; | 
| 251     rtc::scoped_ptr<cricket::BasicPortAllocator> allocator_; | 245     rtc::scoped_ptr<cricket::BasicPortAllocator> allocator_; | 
| 252     ChannelData cd1_; | 246     ChannelData cd1_; | 
| 253     ChannelData cd2_; | 247     ChannelData cd2_; | 
| 254     cricket::IceRole role_; | 248     cricket::IceRole role_; | 
| 255     uint64 tiebreaker_; | 249     uint64 tiebreaker_; | 
| 256     bool role_conflict_; | 250     bool role_conflict_; | 
| 257     bool save_candidates_; | 251     bool save_candidates_; | 
| 258     cricket::IceProtocolType protocol_type_; |  | 
| 259     std::vector<CandidateData*> saved_candidates_; | 252     std::vector<CandidateData*> saved_candidates_; | 
| 260   }; | 253   }; | 
| 261 | 254 | 
| 262   ChannelData* GetChannelData(cricket::TransportChannel* channel) { | 255   ChannelData* GetChannelData(cricket::TransportChannel* channel) { | 
| 263     if (ep1_.HasChannel(channel)) | 256     if (ep1_.HasChannel(channel)) | 
| 264       return ep1_.GetChannelData(channel); | 257       return ep1_.GetChannelData(channel); | 
| 265     else | 258     else | 
| 266       return ep2_.GetChannelData(channel); | 259       return ep2_.GetChannelData(channel); | 
| 267   } | 260   } | 
| 268 | 261 | 
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 304     cricket::P2PTransportChannel* channel = new cricket::P2PTransportChannel( | 297     cricket::P2PTransportChannel* channel = new cricket::P2PTransportChannel( | 
| 305         "test content name", component, NULL, GetAllocator(endpoint)); | 298         "test content name", component, NULL, GetAllocator(endpoint)); | 
| 306     channel->SignalRequestSignaling.connect( | 299     channel->SignalRequestSignaling.connect( | 
| 307         this, &P2PTransportChannelTestBase::OnChannelRequestSignaling); | 300         this, &P2PTransportChannelTestBase::OnChannelRequestSignaling); | 
| 308     channel->SignalCandidateReady.connect(this, | 301     channel->SignalCandidateReady.connect(this, | 
| 309         &P2PTransportChannelTestBase::OnCandidate); | 302         &P2PTransportChannelTestBase::OnCandidate); | 
| 310     channel->SignalReadPacket.connect( | 303     channel->SignalReadPacket.connect( | 
| 311         this, &P2PTransportChannelTestBase::OnReadPacket); | 304         this, &P2PTransportChannelTestBase::OnReadPacket); | 
| 312     channel->SignalRoleConflict.connect( | 305     channel->SignalRoleConflict.connect( | 
| 313         this, &P2PTransportChannelTestBase::OnRoleConflict); | 306         this, &P2PTransportChannelTestBase::OnRoleConflict); | 
| 314     channel->SetIceProtocolType(GetEndpoint(endpoint)->protocol_type()); |  | 
| 315     channel->SetIceCredentials(local_ice_ufrag, local_ice_pwd); | 307     channel->SetIceCredentials(local_ice_ufrag, local_ice_pwd); | 
| 316     if (clear_remote_candidates_ufrag_pwd_) { | 308     if (clear_remote_candidates_ufrag_pwd_) { | 
| 317       // This only needs to be set if we're clearing them from the | 309       // This only needs to be set if we're clearing them from the | 
| 318       // candidates.  Some unit tests rely on this not being set. | 310       // candidates.  Some unit tests rely on this not being set. | 
| 319       channel->SetRemoteIceCredentials(remote_ice_ufrag, remote_ice_pwd); | 311       channel->SetRemoteIceCredentials(remote_ice_ufrag, remote_ice_pwd); | 
| 320     } | 312     } | 
| 321     channel->SetIceRole(GetEndpoint(endpoint)->ice_role()); | 313     channel->SetIceRole(GetEndpoint(endpoint)->ice_role()); | 
| 322     channel->SetIceTiebreaker(GetEndpoint(endpoint)->GetIceTiebreaker()); | 314     channel->SetIceTiebreaker(GetEndpoint(endpoint)->GetIceTiebreaker()); | 
| 323     channel->Connect(); | 315     channel->Connect(); | 
| 324     return channel; | 316     return channel; | 
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 372   void SetProxy(int endpoint, rtc::ProxyType type) { | 364   void SetProxy(int endpoint, rtc::ProxyType type) { | 
| 373     rtc::ProxyInfo info; | 365     rtc::ProxyInfo info; | 
| 374     info.type = type; | 366     info.type = type; | 
| 375     info.address = (type == rtc::PROXY_HTTPS) ? | 367     info.address = (type == rtc::PROXY_HTTPS) ? | 
| 376         kHttpsProxyAddrs[endpoint] : kSocksProxyAddrs[endpoint]; | 368         kHttpsProxyAddrs[endpoint] : kSocksProxyAddrs[endpoint]; | 
| 377     GetAllocator(endpoint)->set_proxy("unittest/1.0", info); | 369     GetAllocator(endpoint)->set_proxy("unittest/1.0", info); | 
| 378   } | 370   } | 
| 379   void SetAllocatorFlags(int endpoint, int flags) { | 371   void SetAllocatorFlags(int endpoint, int flags) { | 
| 380     GetAllocator(endpoint)->set_flags(flags); | 372     GetAllocator(endpoint)->set_flags(flags); | 
| 381   } | 373   } | 
| 382   void SetIceProtocol(int endpoint, cricket::IceProtocolType type) { |  | 
| 383     GetEndpoint(endpoint)->SetIceProtocolType(type); |  | 
| 384   } |  | 
| 385   void SetIceRole(int endpoint, cricket::IceRole role) { | 374   void SetIceRole(int endpoint, cricket::IceRole role) { | 
| 386     GetEndpoint(endpoint)->SetIceRole(role); | 375     GetEndpoint(endpoint)->SetIceRole(role); | 
| 387   } | 376   } | 
| 388   void SetIceTiebreaker(int endpoint, uint64 tiebreaker) { | 377   void SetIceTiebreaker(int endpoint, uint64 tiebreaker) { | 
| 389     GetEndpoint(endpoint)->SetIceTiebreaker(tiebreaker); | 378     GetEndpoint(endpoint)->SetIceTiebreaker(tiebreaker); | 
| 390   } | 379   } | 
| 391   bool GetRoleConflict(int endpoint) { | 380   bool GetRoleConflict(int endpoint) { | 
| 392     return GetEndpoint(endpoint)->role_conflict(); | 381     return GetEndpoint(endpoint)->role_conflict(); | 
| 393   } | 382   } | 
| 394   void SetAllocationStepDelay(int endpoint, uint32 delay) { | 383   void SetAllocationStepDelay(int endpoint, uint32 delay) { | 
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 436       // Also do EXPECT_EQ on each part so that failures are more verbose. | 425       // Also do EXPECT_EQ on each part so that failures are more verbose. | 
| 437       EXPECT_EQ(expected.local_type, LocalCandidate(ep1_ch1())->type()); | 426       EXPECT_EQ(expected.local_type, LocalCandidate(ep1_ch1())->type()); | 
| 438       EXPECT_EQ(expected.local_proto, LocalCandidate(ep1_ch1())->protocol()); | 427       EXPECT_EQ(expected.local_proto, LocalCandidate(ep1_ch1())->protocol()); | 
| 439       EXPECT_EQ(expected.remote_type, RemoteCandidate(ep1_ch1())->type()); | 428       EXPECT_EQ(expected.remote_type, RemoteCandidate(ep1_ch1())->type()); | 
| 440       EXPECT_EQ(expected.remote_proto, RemoteCandidate(ep1_ch1())->protocol()); | 429       EXPECT_EQ(expected.remote_proto, RemoteCandidate(ep1_ch1())->protocol()); | 
| 441 | 430 | 
| 442       // Verifying remote channel best connection information. This is done | 431       // Verifying remote channel best connection information. This is done | 
| 443       // only for the RFC 5245 as controlled agent will use USE-CANDIDATE | 432       // only for the RFC 5245 as controlled agent will use USE-CANDIDATE | 
| 444       // from controlling (ep1) agent. We can easily predict from EP1 result | 433       // from controlling (ep1) agent. We can easily predict from EP1 result | 
| 445       // matrix. | 434       // matrix. | 
| 446       if (ep2_.protocol_type_ == cricket::ICEPROTO_RFC5245) { |  | 
| 447         // Checking for best connection candidates information at remote. |  | 
| 448         EXPECT_TRUE_WAIT( |  | 
| 449             LocalCandidate(ep2_ch1())->type() == expected.local_type2 && |  | 
| 450             LocalCandidate(ep2_ch1())->protocol() == expected.local_proto2 && |  | 
| 451             RemoteCandidate(ep2_ch1())->protocol() == expected.remote_proto2, |  | 
| 452             kDefaultTimeout); |  | 
| 453 | 435 | 
| 454         // For verbose | 436       // Checking for best connection candidates information at remote. | 
| 455         EXPECT_EQ(expected.local_type2, LocalCandidate(ep2_ch1())->type()); | 437       EXPECT_TRUE_WAIT( | 
| 456         EXPECT_EQ(expected.local_proto2, LocalCandidate(ep2_ch1())->protocol()); | 438           LocalCandidate(ep2_ch1())->type() == expected.local_type2 && | 
| 457         EXPECT_EQ(expected.remote_proto2, | 439           LocalCandidate(ep2_ch1())->protocol() == expected.local_proto2 && | 
| 458                   RemoteCandidate(ep2_ch1())->protocol()); | 440           RemoteCandidate(ep2_ch1())->protocol() == expected.remote_proto2, | 
| 459         // Removed remote_type comparision aginst best connection remote | 441           kDefaultTimeout); | 
| 460         // candidate. This is done to handle remote type discrepancy from | 442 | 
| 461         // local to stun based on the test type. | 443       // For verbose | 
| 462         // For example in case of Open -> NAT, ep2 channels will have LULU | 444       EXPECT_EQ(expected.local_type2, LocalCandidate(ep2_ch1())->type()); | 
| 463         // and in other cases like NAT -> NAT it will be LUSU. To avoid these | 445       EXPECT_EQ(expected.local_proto2, LocalCandidate(ep2_ch1())->protocol()); | 
| 464         // mismatches and we are doing comparision in different way. | 446       EXPECT_EQ(expected.remote_proto2, | 
| 465         // i.e. when don't match its remote type is either local or stun. | 447                 RemoteCandidate(ep2_ch1())->protocol()); | 
| 466         // TODO(ronghuawu): Refine the test criteria. | 448       // Removed remote_type comparision aginst best connection remote | 
| 467         // https://code.google.com/p/webrtc/issues/detail?id=1953 | 449       // candidate. This is done to handle remote type discrepancy from | 
| 468         if (expected.remote_type2 != RemoteCandidate(ep2_ch1())->type()) { | 450       // local to stun based on the test type. | 
| 469           EXPECT_TRUE(expected.remote_type2 == cricket::LOCAL_PORT_TYPE || | 451       // For example in case of Open -> NAT, ep2 channels will have LULU | 
| 470                       expected.remote_type2 == cricket::STUN_PORT_TYPE); | 452       // and in other cases like NAT -> NAT it will be LUSU. To avoid these | 
| 471           EXPECT_TRUE( | 453       // mismatches and we are doing comparision in different way. | 
| 472               RemoteCandidate(ep2_ch1())->type() == cricket::LOCAL_PORT_TYPE || | 454       // i.e. when don't match its remote type is either local or stun. | 
| 473               RemoteCandidate(ep2_ch1())->type() == cricket::STUN_PORT_TYPE || | 455       // TODO(ronghuawu): Refine the test criteria. | 
| 474               RemoteCandidate(ep2_ch1())->type() == cricket::PRFLX_PORT_TYPE); | 456       // https://code.google.com/p/webrtc/issues/detail?id=1953 | 
| 475         } | 457       if (expected.remote_type2 != RemoteCandidate(ep2_ch1())->type()) { | 
|  | 458         EXPECT_TRUE(expected.remote_type2 == cricket::LOCAL_PORT_TYPE || | 
|  | 459                     expected.remote_type2 == cricket::STUN_PORT_TYPE); | 
|  | 460         EXPECT_TRUE( | 
|  | 461             RemoteCandidate(ep2_ch1())->type() == cricket::LOCAL_PORT_TYPE || | 
|  | 462             RemoteCandidate(ep2_ch1())->type() == cricket::STUN_PORT_TYPE || | 
|  | 463             RemoteCandidate(ep2_ch1())->type() == cricket::PRFLX_PORT_TYPE); | 
| 476       } | 464       } | 
| 477 | 465 | 
| 478       converge_time = rtc::TimeSince(converge_start); | 466       converge_time = rtc::TimeSince(converge_start); | 
| 479       if (converge_time < converge_wait) { | 467       if (converge_time < converge_wait) { | 
| 480         LOG(LS_INFO) << "Converge time: " << converge_time << " ms"; | 468         LOG(LS_INFO) << "Converge time: " << converge_time << " ms"; | 
| 481       } else { | 469       } else { | 
| 482         LOG(LS_INFO) << "Converge time: " << "TIMEOUT (" | 470         LOG(LS_INFO) << "Converge time: " << "TIMEOUT (" | 
| 483                      << converge_wait << " ms)"; | 471                      << converge_wait << " ms)"; | 
| 484       } | 472       } | 
| 485     } | 473     } | 
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 543                             old_remote_candidate1->generation(), | 531                             old_remote_candidate1->generation(), | 
| 544                             1000, 1000); | 532                             1000, 1000); | 
| 545     EXPECT_TRUE_WAIT_MARGIN(RemoteCandidate(ep2_ch1())->generation() != | 533     EXPECT_TRUE_WAIT_MARGIN(RemoteCandidate(ep2_ch1())->generation() != | 
| 546                             old_remote_candidate2->generation(), | 534                             old_remote_candidate2->generation(), | 
| 547                             1000, 1000); | 535                             1000, 1000); | 
| 548     EXPECT_EQ(1u, RemoteCandidate(ep2_ch1())->generation()); | 536     EXPECT_EQ(1u, RemoteCandidate(ep2_ch1())->generation()); | 
| 549     EXPECT_EQ(1u, RemoteCandidate(ep1_ch1())->generation()); | 537     EXPECT_EQ(1u, RemoteCandidate(ep1_ch1())->generation()); | 
| 550   } | 538   } | 
| 551 | 539 | 
| 552   void TestSignalRoleConflict() { | 540   void TestSignalRoleConflict() { | 
| 553     SetIceProtocol(0, cricket::ICEPROTO_RFC5245); |  | 
| 554     SetIceTiebreaker(0, kTiebreaker1);  // Default EP1 is in controlling state. | 541     SetIceTiebreaker(0, kTiebreaker1);  // Default EP1 is in controlling state. | 
| 555 | 542 | 
| 556     SetIceProtocol(1, cricket::ICEPROTO_RFC5245); |  | 
| 557     SetIceRole(1, cricket::ICEROLE_CONTROLLING); | 543     SetIceRole(1, cricket::ICEROLE_CONTROLLING); | 
| 558     SetIceTiebreaker(1, kTiebreaker2); | 544     SetIceTiebreaker(1, kTiebreaker2); | 
| 559 | 545 | 
| 560     // Creating channels with both channels role set to CONTROLLING. | 546     // Creating channels with both channels role set to CONTROLLING. | 
| 561     CreateChannels(1); | 547     CreateChannels(1); | 
| 562     // Since both the channels initiated with controlling state and channel2 | 548     // Since both the channels initiated with controlling state and channel2 | 
| 563     // has higher tiebreaker value, channel1 should receive SignalRoleConflict. | 549     // has higher tiebreaker value, channel1 should receive SignalRoleConflict. | 
| 564     EXPECT_TRUE_WAIT(GetRoleConflict(0), 1000); | 550     EXPECT_TRUE_WAIT(GetRoleConflict(0), 1000); | 
| 565     EXPECT_FALSE(GetRoleConflict(1)); | 551     EXPECT_FALSE(GetRoleConflict(1)); | 
| 566 | 552 | 
| 567     EXPECT_TRUE_WAIT(ep1_ch1()->readable() && | 553     EXPECT_TRUE_WAIT(ep1_ch1()->readable() && | 
| 568                      ep1_ch1()->writable() && | 554                      ep1_ch1()->writable() && | 
| 569                      ep2_ch1()->readable() && | 555                      ep2_ch1()->readable() && | 
| 570                      ep2_ch1()->writable(), | 556                      ep2_ch1()->writable(), | 
| 571                      1000); | 557                      1000); | 
| 572 | 558 | 
| 573     EXPECT_TRUE(ep1_ch1()->best_connection() && | 559     EXPECT_TRUE(ep1_ch1()->best_connection() && | 
| 574                 ep2_ch1()->best_connection()); | 560                 ep2_ch1()->best_connection()); | 
| 575 | 561 | 
| 576     TestSendRecv(1); | 562     TestSendRecv(1); | 
| 577   } | 563   } | 
| 578 | 564 | 
| 579   void TestHybridConnectivity(cricket::IceProtocolType proto) { |  | 
| 580     AddAddress(0, kPublicAddrs[0]); |  | 
| 581     AddAddress(1, kPublicAddrs[1]); |  | 
| 582 |  | 
| 583     SetAllocationStepDelay(0, kMinimumStepDelay); |  | 
| 584     SetAllocationStepDelay(1, kMinimumStepDelay); |  | 
| 585 |  | 
| 586     SetIceRole(0, cricket::ICEROLE_CONTROLLING); |  | 
| 587     SetIceProtocol(0, cricket::ICEPROTO_HYBRID); |  | 
| 588     SetIceTiebreaker(0, kTiebreaker1); |  | 
| 589     SetIceRole(1, cricket::ICEROLE_CONTROLLED); |  | 
| 590     SetIceProtocol(1, proto); |  | 
| 591     SetIceTiebreaker(1, kTiebreaker2); |  | 
| 592 |  | 
| 593     CreateChannels(1); |  | 
| 594     // When channel is in hybrid and it's controlling agent, channel will |  | 
| 595     // receive ping request from the remote. Hence connection is readable. |  | 
| 596     // Since channel is in hybrid, it will not send any pings, so no writable |  | 
| 597     // connection. Since channel2 is in controlled state, it will not have |  | 
| 598     // any connections which are readable or writable, as it didn't received |  | 
| 599     // pings (or none) with USE-CANDIDATE attribute. |  | 
| 600     EXPECT_TRUE_WAIT(ep1_ch1()->readable(), 1000); |  | 
| 601 |  | 
| 602     // Set real protocol type. |  | 
| 603     ep1_ch1()->SetIceProtocolType(proto); |  | 
| 604 |  | 
| 605     // Channel should able to send ping requests and connections become writable |  | 
| 606     // in both directions. |  | 
| 607     EXPECT_TRUE_WAIT(ep1_ch1()->readable() && ep1_ch1()->writable() && |  | 
| 608                      ep2_ch1()->readable() && ep2_ch1()->writable(), |  | 
| 609                      1000); |  | 
| 610     EXPECT_TRUE( |  | 
| 611         ep1_ch1()->best_connection() && ep2_ch1()->best_connection() && |  | 
| 612         LocalCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[0]) && |  | 
| 613         RemoteCandidate(ep1_ch1())->address().EqualIPs(kPublicAddrs[1])); |  | 
| 614 |  | 
| 615     TestSendRecv(1); |  | 
| 616     DestroyChannels(); |  | 
| 617   } |  | 
| 618 |  | 
| 619   void OnChannelRequestSignaling(cricket::TransportChannelImpl* channel) { | 565   void OnChannelRequestSignaling(cricket::TransportChannelImpl* channel) { | 
| 620     channel->OnSignalingReady(); | 566     channel->OnSignalingReady(); | 
| 621   } | 567   } | 
| 622   // We pass the candidates directly to the other side. | 568   // We pass the candidates directly to the other side. | 
| 623   void OnCandidate(cricket::TransportChannelImpl* ch, | 569   void OnCandidate(cricket::TransportChannelImpl* ch, | 
| 624                    const cricket::Candidate& c) { | 570                    const cricket::Candidate& c) { | 
| 625     if (force_relay_ && c.type() != cricket::RELAY_PORT_TYPE) | 571     if (force_relay_ && c.type() != cricket::RELAY_PORT_TYPE) | 
| 626       return; | 572       return; | 
| 627 | 573 | 
| 628     if (GetEndpoint(ch)->save_candidates_) { | 574     if (GetEndpoint(ch)->save_candidates_) { | 
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 788 | 734 | 
| 789 // Test the matrix of all the connectivity types we expect to see in the wild. | 735 // Test the matrix of all the connectivity types we expect to see in the wild. | 
| 790 // Just test every combination of the configs in the Config enum. | 736 // Just test every combination of the configs in the Config enum. | 
| 791 class P2PTransportChannelTest : public P2PTransportChannelTestBase { | 737 class P2PTransportChannelTest : public P2PTransportChannelTestBase { | 
| 792  protected: | 738  protected: | 
| 793   static const Result* kMatrix[NUM_CONFIGS][NUM_CONFIGS]; | 739   static const Result* kMatrix[NUM_CONFIGS][NUM_CONFIGS]; | 
| 794   static const Result* kMatrixSharedUfrag[NUM_CONFIGS][NUM_CONFIGS]; | 740   static const Result* kMatrixSharedUfrag[NUM_CONFIGS][NUM_CONFIGS]; | 
| 795   static const Result* kMatrixSharedSocketAsGice[NUM_CONFIGS][NUM_CONFIGS]; | 741   static const Result* kMatrixSharedSocketAsGice[NUM_CONFIGS][NUM_CONFIGS]; | 
| 796   static const Result* kMatrixSharedSocketAsIce[NUM_CONFIGS][NUM_CONFIGS]; | 742   static const Result* kMatrixSharedSocketAsIce[NUM_CONFIGS][NUM_CONFIGS]; | 
| 797   void ConfigureEndpoints(Config config1, Config config2, | 743   void ConfigureEndpoints(Config config1, Config config2, | 
| 798       int allocator_flags1, int allocator_flags2, | 744                           int allocator_flags1, int allocator_flags2) { | 
| 799       int delay1, int delay2, |  | 
| 800       cricket::IceProtocolType type) { |  | 
| 801     // Ideally we want to use TURN server for both GICE and ICE, but in case |  | 
| 802     // of GICE, TURN server usage is not producing results reliabally. |  | 
| 803     // TODO(mallinath): Remove Relay and use TURN server for all tests. |  | 
| 804     ServerAddresses stun_servers; | 745     ServerAddresses stun_servers; | 
| 805     stun_servers.insert(kStunAddr); | 746     stun_servers.insert(kStunAddr); | 
| 806     GetEndpoint(0)->allocator_.reset( | 747     GetEndpoint(0)->allocator_.reset( | 
| 807         new cricket::BasicPortAllocator(&(GetEndpoint(0)->network_manager_), | 748         new cricket::BasicPortAllocator(&(GetEndpoint(0)->network_manager_), | 
| 808         stun_servers, | 749         stun_servers, | 
| 809         rtc::SocketAddress(), rtc::SocketAddress(), | 750         rtc::SocketAddress(), rtc::SocketAddress(), | 
| 810         rtc::SocketAddress())); | 751         rtc::SocketAddress())); | 
| 811     GetEndpoint(1)->allocator_.reset( | 752     GetEndpoint(1)->allocator_.reset( | 
| 812         new cricket::BasicPortAllocator(&(GetEndpoint(1)->network_manager_), | 753         new cricket::BasicPortAllocator(&(GetEndpoint(1)->network_manager_), | 
| 813         stun_servers, | 754         stun_servers, | 
| 814         rtc::SocketAddress(), rtc::SocketAddress(), | 755         rtc::SocketAddress(), rtc::SocketAddress(), | 
| 815         rtc::SocketAddress())); | 756         rtc::SocketAddress())); | 
| 816 | 757 | 
| 817     cricket::RelayServerConfig relay_server(cricket::RELAY_GTURN); | 758     cricket::RelayServerConfig relay_server(cricket::RELAY_TURN); | 
| 818     if (type == cricket::ICEPROTO_RFC5245) { | 759     relay_server.credentials = kRelayCredentials; | 
| 819       relay_server.type = cricket::RELAY_TURN; | 760     relay_server.ports.push_back(cricket::ProtocolAddress( | 
| 820       relay_server.credentials = kRelayCredentials; | 761         kTurnUdpIntAddr, cricket::PROTO_UDP, false)); | 
| 821       relay_server.ports.push_back(cricket::ProtocolAddress( |  | 
| 822           kTurnUdpIntAddr, cricket::PROTO_UDP, false)); |  | 
| 823     } else { |  | 
| 824       relay_server.ports.push_back(cricket::ProtocolAddress( |  | 
| 825           kRelayUdpIntAddr, cricket::PROTO_UDP, false)); |  | 
| 826       relay_server.ports.push_back(cricket::ProtocolAddress( |  | 
| 827           kRelayTcpIntAddr, cricket::PROTO_TCP, false)); |  | 
| 828       relay_server.ports.push_back(cricket::ProtocolAddress( |  | 
| 829           kRelaySslTcpIntAddr, cricket::PROTO_SSLTCP, false)); |  | 
| 830     } |  | 
| 831     GetEndpoint(0)->allocator_->AddRelay(relay_server); | 762     GetEndpoint(0)->allocator_->AddRelay(relay_server); | 
| 832     GetEndpoint(1)->allocator_->AddRelay(relay_server); | 763     GetEndpoint(1)->allocator_->AddRelay(relay_server); | 
| 833 | 764 | 
|  | 765     int delay = kMinimumStepDelay; | 
|  | 766     // TODO(pthatcher): Figure out why the BLOCK_UDP cases are so time | 
|  | 767     // sensitive and switch them to kMinimumStepDelay as well. | 
|  | 768     if (config1 == BLOCK_UDP || config2 == BLOCK_UDP) { | 
|  | 769       delay = kDefaultStepDelay; | 
|  | 770     } | 
|  | 771 | 
| 834     ConfigureEndpoint(0, config1); | 772     ConfigureEndpoint(0, config1); | 
| 835     SetIceProtocol(0, type); |  | 
| 836     SetAllocatorFlags(0, allocator_flags1); | 773     SetAllocatorFlags(0, allocator_flags1); | 
| 837     SetAllocationStepDelay(0, delay1); | 774     SetAllocationStepDelay(0, delay); | 
| 838     ConfigureEndpoint(1, config2); | 775     ConfigureEndpoint(1, config2); | 
| 839     SetIceProtocol(1, type); |  | 
| 840     SetAllocatorFlags(1, allocator_flags2); | 776     SetAllocatorFlags(1, allocator_flags2); | 
| 841     SetAllocationStepDelay(1, delay2); | 777     SetAllocationStepDelay(1, delay); | 
| 842 | 778 | 
| 843     if (type == cricket::ICEPROTO_RFC5245) { | 779     set_clear_remote_candidates_ufrag_pwd(true); | 
| 844       set_clear_remote_candidates_ufrag_pwd(true); |  | 
| 845     } |  | 
| 846   } | 780   } | 
| 847   void ConfigureEndpoint(int endpoint, Config config) { | 781   void ConfigureEndpoint(int endpoint, Config config) { | 
| 848     switch (config) { | 782     switch (config) { | 
| 849       case OPEN: | 783       case OPEN: | 
| 850         AddAddress(endpoint, kPublicAddrs[endpoint]); | 784         AddAddress(endpoint, kPublicAddrs[endpoint]); | 
| 851         break; | 785         break; | 
| 852       case NAT_FULL_CONE: | 786       case NAT_FULL_CONE: | 
| 853       case NAT_ADDR_RESTRICTED: | 787       case NAT_ADDR_RESTRICTED: | 
| 854       case NAT_PORT_RESTRICTED: | 788       case NAT_PORT_RESTRICTED: | 
| 855       case NAT_SYMMETRIC: | 789       case NAT_SYMMETRIC: | 
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1027 /*SC*/ {PULU, PUSU, PUSU, PURU, PURU, PUSU, PURU, NULL, NULL, LSRS, NULL, LTRT}, | 961 /*SC*/ {PULU, PUSU, PUSU, PURU, PURU, PUSU, PURU, NULL, NULL, LSRS, NULL, LTRT}, | 
| 1028 /*!U*/ {PTLT, NULL, NULL, NULL, NULL, NULL, NULL, PTLT, LTPT, LSRS, NULL, LTRT}, | 962 /*!U*/ {PTLT, NULL, NULL, NULL, NULL, NULL, NULL, PTLT, LTPT, LSRS, NULL, LTRT}, | 
| 1029 /*!T*/ {LTRT, NULL, NULL, NULL, NULL, NULL, NULL, PTLT, LTRT, LSRS, NULL, LTRT}, | 963 /*!T*/ {LTRT, NULL, NULL, NULL, NULL, NULL, NULL, PTLT, LTRT, LSRS, NULL, LTRT}, | 
| 1030 /*HT*/ {LSRS, LSRS, LSRS, LSRS, LSRS, LSRS, LSRS, LSRS, LSRS, LSRS, NULL, LSRS}, | 964 /*HT*/ {LSRS, LSRS, LSRS, LSRS, LSRS, LSRS, LSRS, LSRS, LSRS, LSRS, NULL, LSRS}, | 
| 1031 /*PR*/ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, | 965 /*PR*/ {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, | 
| 1032 /*PR*/ {LTRT, LTRT, LTRT, LTRT, LTRT, LTRT, LTRT, LTRT, LTRT, LSRS, NULL, LTRT}, | 966 /*PR*/ {LTRT, LTRT, LTRT, LTRT, LTRT, LTRT, LTRT, LTRT, LTRT, LSRS, NULL, LTRT}, | 
| 1033 }; | 967 }; | 
| 1034 | 968 | 
| 1035 // The actual tests that exercise all the various configurations. | 969 // The actual tests that exercise all the various configurations. | 
| 1036 // Test names are of the form P2PTransportChannelTest_TestOPENToNAT_FULL_CONE | 970 // Test names are of the form P2PTransportChannelTest_TestOPENToNAT_FULL_CONE | 
| 1037 // Same test case is run in both GICE and ICE mode. |  | 
| 1038 // kDefaultStepDelay - is used for all Gice cases. |  | 
| 1039 // kMinimumStepDelay - is used when both end points have |  | 
| 1040 //                     PORTALLOCATOR_ENABLE_SHARED_UFRAG flag enabled. |  | 
| 1041 // Technically we should be able to use kMinimumStepDelay irrespective of |  | 
| 1042 // protocol type. But which might need modifications to current result matrices |  | 
| 1043 // for tests in this file. |  | 
| 1044 #define P2P_TEST_DECLARATION(x, y, z) \ | 971 #define P2P_TEST_DECLARATION(x, y, z) \ | 
| 1045   TEST_F(P2PTransportChannelTest, z##Test##x##To##y##AsGiceNoneSharedUfrag) { \ | 972   TEST_F(P2PTransportChannelTest, z##Test##x##To##y) { \ | 
| 1046     ConfigureEndpoints(x, y, kDefaultPortAllocatorFlags, \ | 973     ConfigureEndpoints(x, y, \ | 
| 1047                        kDefaultPortAllocatorFlags, \ |  | 
| 1048                        kDefaultStepDelay, kDefaultStepDelay, \ |  | 
| 1049                        cricket::ICEPROTO_GOOGLE); \ |  | 
| 1050     if (kMatrix[x][y] != NULL) \ |  | 
| 1051       Test(*kMatrix[x][y]); \ |  | 
| 1052     else \ |  | 
| 1053       LOG(LS_WARNING) << "Not yet implemented"; \ |  | 
| 1054   } \ |  | 
| 1055   TEST_F(P2PTransportChannelTest, z##Test##x##To##y##AsGiceP0SharedUfrag) { \ |  | 
| 1056     ConfigureEndpoints(x, y, PORTALLOCATOR_ENABLE_SHARED_UFRAG, \ |  | 
| 1057                        kDefaultPortAllocatorFlags, \ |  | 
| 1058                        kDefaultStepDelay, kDefaultStepDelay, \ |  | 
| 1059                        cricket::ICEPROTO_GOOGLE); \ |  | 
| 1060     if (kMatrix[x][y] != NULL) \ |  | 
| 1061       Test(*kMatrix[x][y]); \ |  | 
| 1062     else \ |  | 
| 1063       LOG(LS_WARNING) << "Not yet implemented"; \ |  | 
| 1064   } \ |  | 
| 1065   TEST_F(P2PTransportChannelTest, z##Test##x##To##y##AsGiceP1SharedUfrag) { \ |  | 
| 1066     ConfigureEndpoints(x, y, kDefaultPortAllocatorFlags, \ |  | 
| 1067                        PORTALLOCATOR_ENABLE_SHARED_UFRAG, \ |  | 
| 1068                        kDefaultStepDelay, kDefaultStepDelay, \ |  | 
| 1069                        cricket::ICEPROTO_GOOGLE); \ |  | 
| 1070     if (kMatrixSharedUfrag[x][y] != NULL) \ |  | 
| 1071       Test(*kMatrixSharedUfrag[x][y]); \ |  | 
| 1072     else \ |  | 
| 1073       LOG(LS_WARNING) << "Not yet implemented"; \ |  | 
| 1074   } \ |  | 
| 1075   TEST_F(P2PTransportChannelTest, z##Test##x##To##y##AsGiceBothSharedUfrag) { \ |  | 
| 1076     ConfigureEndpoints(x, y, PORTALLOCATOR_ENABLE_SHARED_UFRAG, \ |  | 
| 1077                        PORTALLOCATOR_ENABLE_SHARED_UFRAG, \ |  | 
| 1078                        kDefaultStepDelay, kDefaultStepDelay, \ |  | 
| 1079                        cricket::ICEPROTO_GOOGLE); \ |  | 
| 1080     if (kMatrixSharedUfrag[x][y] != NULL) \ |  | 
| 1081       Test(*kMatrixSharedUfrag[x][y]); \ |  | 
| 1082     else \ |  | 
| 1083       LOG(LS_WARNING) << "Not yet implemented"; \ |  | 
| 1084   } \ |  | 
| 1085   TEST_F(P2PTransportChannelTest, \ |  | 
| 1086          z##Test##x##To##y##AsGiceBothSharedUfragWithMinimumStepDelay) { \ |  | 
| 1087     ConfigureEndpoints(x, y, PORTALLOCATOR_ENABLE_SHARED_UFRAG, \ |  | 
| 1088                        PORTALLOCATOR_ENABLE_SHARED_UFRAG, \ |  | 
| 1089                        kMinimumStepDelay, kMinimumStepDelay, \ |  | 
| 1090                        cricket::ICEPROTO_GOOGLE); \ |  | 
| 1091     if (kMatrixSharedUfrag[x][y] != NULL) \ |  | 
| 1092       Test(*kMatrixSharedUfrag[x][y]); \ |  | 
| 1093     else \ |  | 
| 1094       LOG(LS_WARNING) << "Not yet implemented"; \ |  | 
| 1095   } \ |  | 
| 1096   TEST_F(P2PTransportChannelTest, \ |  | 
| 1097          z##Test##x##To##y##AsGiceBothSharedUfragSocket) { \ |  | 
| 1098     ConfigureEndpoints(x, y, PORTALLOCATOR_ENABLE_SHARED_UFRAG | \ |  | 
| 1099                        PORTALLOCATOR_ENABLE_SHARED_SOCKET, \ | 974                        PORTALLOCATOR_ENABLE_SHARED_SOCKET, \ | 
| 1100                        PORTALLOCATOR_ENABLE_SHARED_UFRAG | \ | 975                        PORTALLOCATOR_ENABLE_SHARED_SOCKET);  \ | 
| 1101                        PORTALLOCATOR_ENABLE_SHARED_SOCKET, \ |  | 
| 1102                        kMinimumStepDelay, kMinimumStepDelay, \ |  | 
| 1103                        cricket::ICEPROTO_GOOGLE); \ |  | 
| 1104     if (kMatrixSharedSocketAsGice[x][y] != NULL) \ |  | 
| 1105       Test(*kMatrixSharedSocketAsGice[x][y]); \ |  | 
| 1106     else \ |  | 
| 1107     LOG(LS_WARNING) << "Not yet implemented"; \ |  | 
| 1108   } \ |  | 
| 1109   TEST_F(P2PTransportChannelTest, z##Test##x##To##y##AsIce) { \ |  | 
| 1110     ConfigureEndpoints(x, y, PORTALLOCATOR_ENABLE_SHARED_UFRAG | \ |  | 
| 1111                        PORTALLOCATOR_ENABLE_SHARED_SOCKET, \ |  | 
| 1112                        PORTALLOCATOR_ENABLE_SHARED_UFRAG | \ |  | 
| 1113                        PORTALLOCATOR_ENABLE_SHARED_SOCKET, \ |  | 
| 1114                        kMinimumStepDelay, kMinimumStepDelay, \ |  | 
| 1115                        cricket::ICEPROTO_RFC5245); \ |  | 
| 1116     if (kMatrixSharedSocketAsIce[x][y] != NULL) \ | 976     if (kMatrixSharedSocketAsIce[x][y] != NULL) \ | 
| 1117       Test(*kMatrixSharedSocketAsIce[x][y]); \ | 977       Test(*kMatrixSharedSocketAsIce[x][y]); \ | 
| 1118     else \ | 978     else \ | 
| 1119     LOG(LS_WARNING) << "Not yet implemented"; \ | 979     LOG(LS_WARNING) << "Not yet implemented"; \ | 
| 1120   } | 980   } | 
| 1121 | 981 | 
| 1122 #define P2P_TEST(x, y) \ | 982 #define P2P_TEST(x, y) \ | 
| 1123   P2P_TEST_DECLARATION(x, y,) | 983   P2P_TEST_DECLARATION(x, y,) | 
| 1124 | 984 | 
| 1125 #define FLAKY_P2P_TEST(x, y) \ | 985 #define FLAKY_P2P_TEST(x, y) \ | 
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1163 P2P_TEST_SET(NAT_DOUBLE_CONE) | 1023 P2P_TEST_SET(NAT_DOUBLE_CONE) | 
| 1164 P2P_TEST_SET(NAT_SYMMETRIC_THEN_CONE) | 1024 P2P_TEST_SET(NAT_SYMMETRIC_THEN_CONE) | 
| 1165 P2P_TEST_SET(BLOCK_UDP) | 1025 P2P_TEST_SET(BLOCK_UDP) | 
| 1166 P2P_TEST_SET(BLOCK_UDP_AND_INCOMING_TCP) | 1026 P2P_TEST_SET(BLOCK_UDP_AND_INCOMING_TCP) | 
| 1167 P2P_TEST_SET(BLOCK_ALL_BUT_OUTGOING_HTTP) | 1027 P2P_TEST_SET(BLOCK_ALL_BUT_OUTGOING_HTTP) | 
| 1168 P2P_TEST_SET(PROXY_HTTPS) | 1028 P2P_TEST_SET(PROXY_HTTPS) | 
| 1169 P2P_TEST_SET(PROXY_SOCKS) | 1029 P2P_TEST_SET(PROXY_SOCKS) | 
| 1170 | 1030 | 
| 1171 // Test that we restart candidate allocation when local ufrag&pwd changed. | 1031 // Test that we restart candidate allocation when local ufrag&pwd changed. | 
| 1172 // Standard Ice protocol is used. | 1032 // Standard Ice protocol is used. | 
| 1173 TEST_F(P2PTransportChannelTest, HandleUfragPwdChangeAsIce) { | 1033 TEST_F(P2PTransportChannelTest, HandleUfragPwdChange) { | 
| 1174   ConfigureEndpoints(OPEN, OPEN, | 1034   ConfigureEndpoints(OPEN, OPEN, | 
| 1175                      PORTALLOCATOR_ENABLE_SHARED_UFRAG, | 1035                      kDefaultPortAllocatorFlags, | 
| 1176                      PORTALLOCATOR_ENABLE_SHARED_UFRAG, | 1036                      kDefaultPortAllocatorFlags); | 
| 1177                      kMinimumStepDelay, kMinimumStepDelay, |  | 
| 1178                      cricket::ICEPROTO_RFC5245); |  | 
| 1179   CreateChannels(1); | 1037   CreateChannels(1); | 
| 1180   TestHandleIceUfragPasswordChanged(); | 1038   TestHandleIceUfragPasswordChanged(); | 
| 1181   DestroyChannels(); | 1039   DestroyChannels(); | 
| 1182 } |  | 
| 1183 |  | 
| 1184 // Test that we restart candidate allocation when local ufrag&pwd changed. |  | 
| 1185 // Google Ice protocol is used. |  | 
| 1186 TEST_F(P2PTransportChannelTest, HandleUfragPwdChangeAsGice) { |  | 
| 1187   ConfigureEndpoints(OPEN, OPEN, |  | 
| 1188                      PORTALLOCATOR_ENABLE_SHARED_UFRAG, |  | 
| 1189                      PORTALLOCATOR_ENABLE_SHARED_UFRAG, |  | 
| 1190                      kDefaultStepDelay, kDefaultStepDelay, |  | 
| 1191                      cricket::ICEPROTO_GOOGLE); |  | 
| 1192   CreateChannels(1); |  | 
| 1193   TestHandleIceUfragPasswordChanged(); |  | 
| 1194   DestroyChannels(); |  | 
| 1195 } | 1040 } | 
| 1196 | 1041 | 
| 1197 // Test the operation of GetStats. | 1042 // Test the operation of GetStats. | 
| 1198 TEST_F(P2PTransportChannelTest, GetStats) { | 1043 TEST_F(P2PTransportChannelTest, GetStats) { | 
| 1199   ConfigureEndpoints(OPEN, OPEN, | 1044   ConfigureEndpoints(OPEN, OPEN, | 
| 1200                      kDefaultPortAllocatorFlags, | 1045                      kDefaultPortAllocatorFlags, | 
| 1201                      kDefaultPortAllocatorFlags, | 1046                      kDefaultPortAllocatorFlags); | 
| 1202                      kDefaultStepDelay, kDefaultStepDelay, |  | 
| 1203                      cricket::ICEPROTO_GOOGLE); |  | 
| 1204   CreateChannels(1); | 1047   CreateChannels(1); | 
| 1205   EXPECT_TRUE_WAIT_MARGIN(ep1_ch1()->readable() && ep1_ch1()->writable() && | 1048   EXPECT_TRUE_WAIT_MARGIN(ep1_ch1()->readable() && ep1_ch1()->writable() && | 
| 1206                           ep2_ch1()->readable() && ep2_ch1()->writable(), | 1049                           ep2_ch1()->readable() && ep2_ch1()->writable(), | 
| 1207                           1000, 1000); | 1050                           1000, 1000); | 
| 1208   TestSendRecv(1); | 1051   TestSendRecv(1); | 
| 1209   cricket::ConnectionInfos infos; | 1052   cricket::ConnectionInfos infos; | 
| 1210   ASSERT_TRUE(ep1_ch1()->GetStats(&infos)); | 1053   ASSERT_TRUE(ep1_ch1()->GetStats(&infos)); | 
| 1211   ASSERT_EQ(1U, infos.size()); | 1054   ASSERT_EQ(1U, infos.size()); | 
| 1212   EXPECT_TRUE(infos[0].new_connection); | 1055   EXPECT_TRUE(infos[0].new_connection); | 
| 1213   EXPECT_TRUE(infos[0].best_connection); | 1056   EXPECT_TRUE(infos[0].best_connection); | 
| 1214   EXPECT_TRUE(infos[0].readable); | 1057   EXPECT_TRUE(infos[0].readable); | 
| 1215   EXPECT_TRUE(infos[0].writable); | 1058   EXPECT_TRUE(infos[0].writable); | 
| 1216   EXPECT_FALSE(infos[0].timeout); | 1059   EXPECT_FALSE(infos[0].timeout); | 
| 1217   EXPECT_EQ(10U, infos[0].sent_total_packets); | 1060   EXPECT_EQ(10U, infos[0].sent_total_packets); | 
| 1218   EXPECT_EQ(0U, infos[0].sent_discarded_packets); | 1061   EXPECT_EQ(0U, infos[0].sent_discarded_packets); | 
| 1219   EXPECT_EQ(10 * 36U, infos[0].sent_total_bytes); | 1062   EXPECT_EQ(10 * 36U, infos[0].sent_total_bytes); | 
| 1220   EXPECT_EQ(10 * 36U, infos[0].recv_total_bytes); | 1063   EXPECT_EQ(10 * 36U, infos[0].recv_total_bytes); | 
| 1221   EXPECT_GT(infos[0].rtt, 0U); | 1064   EXPECT_GT(infos[0].rtt, 0U); | 
| 1222   DestroyChannels(); | 1065   DestroyChannels(); | 
| 1223 } | 1066 } | 
| 1224 | 1067 | 
| 1225 // Test that we properly create a connection on a STUN ping from unknown address | 1068 // Test that we properly create a connection on a STUN ping from unknown address | 
| 1226 // when the signaling is slow. | 1069 // when the signaling is slow. | 
| 1227 TEST_F(P2PTransportChannelTest, PeerReflexiveCandidateBeforeSignaling) { | 1070 TEST_F(P2PTransportChannelTest, PeerReflexiveCandidateBeforeSignaling) { | 
| 1228   ConfigureEndpoints(OPEN, OPEN, | 1071   ConfigureEndpoints(OPEN, OPEN, | 
| 1229                      PORTALLOCATOR_ENABLE_SHARED_UFRAG, | 1072                      kDefaultPortAllocatorFlags, | 
| 1230                      PORTALLOCATOR_ENABLE_SHARED_UFRAG, | 1073                      kDefaultPortAllocatorFlags); | 
| 1231                      kDefaultStepDelay, kDefaultStepDelay, |  | 
| 1232                      cricket::ICEPROTO_RFC5245); |  | 
| 1233   // Emulate no remote credentials coming in. | 1074   // Emulate no remote credentials coming in. | 
| 1234   set_clear_remote_candidates_ufrag_pwd(false); | 1075   set_clear_remote_candidates_ufrag_pwd(false); | 
| 1235   CreateChannels(1); | 1076   CreateChannels(1); | 
| 1236   // Only have remote credentials come in for ep2, not ep1. | 1077   // Only have remote credentials come in for ep2, not ep1. | 
| 1237   ep2_ch1()->SetRemoteIceCredentials(kIceUfrag[3], kIcePwd[3]); | 1078   ep2_ch1()->SetRemoteIceCredentials(kIceUfrag[3], kIcePwd[3]); | 
| 1238 | 1079 | 
| 1239   // Pause sending ep2's candidates to ep1 until ep1 receives the peer reflexive | 1080   // Pause sending ep2's candidates to ep1 until ep1 receives the peer reflexive | 
| 1240   // candidate. | 1081   // candidate. | 
| 1241   PauseCandidates(1); | 1082   PauseCandidates(1); | 
| 1242 | 1083 | 
| (...skipping 23 matching lines...) Expand all  Loading... | 
| 1266       ep1_ch1()->best_connection()->remote_candidate().type(), | 1107       ep1_ch1()->best_connection()->remote_candidate().type(), | 
| 1267       2000); | 1108       2000); | 
| 1268   EXPECT_EQ(best_connection, ep1_ch1()->best_connection()); | 1109   EXPECT_EQ(best_connection, ep1_ch1()->best_connection()); | 
| 1269   DestroyChannels(); | 1110   DestroyChannels(); | 
| 1270 } | 1111 } | 
| 1271 | 1112 | 
| 1272 // Test that we properly create a connection on a STUN ping from unknown address | 1113 // Test that we properly create a connection on a STUN ping from unknown address | 
| 1273 // when the signaling is slow and the end points are behind NAT. | 1114 // when the signaling is slow and the end points are behind NAT. | 
| 1274 TEST_F(P2PTransportChannelTest, PeerReflexiveCandidateBeforeSignalingWithNAT) { | 1115 TEST_F(P2PTransportChannelTest, PeerReflexiveCandidateBeforeSignalingWithNAT) { | 
| 1275   ConfigureEndpoints(OPEN, NAT_SYMMETRIC, | 1116   ConfigureEndpoints(OPEN, NAT_SYMMETRIC, | 
| 1276                      PORTALLOCATOR_ENABLE_SHARED_UFRAG, | 1117                      kDefaultPortAllocatorFlags, | 
| 1277                      PORTALLOCATOR_ENABLE_SHARED_UFRAG, | 1118                      kDefaultPortAllocatorFlags); | 
| 1278                      kDefaultStepDelay, kDefaultStepDelay, |  | 
| 1279                      cricket::ICEPROTO_RFC5245); |  | 
| 1280   // Emulate no remote credentials coming in. | 1119   // Emulate no remote credentials coming in. | 
| 1281   set_clear_remote_candidates_ufrag_pwd(false); | 1120   set_clear_remote_candidates_ufrag_pwd(false); | 
| 1282   CreateChannels(1); | 1121   CreateChannels(1); | 
| 1283   // Only have remote credentials come in for ep2, not ep1. | 1122   // Only have remote credentials come in for ep2, not ep1. | 
| 1284   ep2_ch1()->SetRemoteIceCredentials(kIceUfrag[3], kIcePwd[3]); | 1123   ep2_ch1()->SetRemoteIceCredentials(kIceUfrag[3], kIcePwd[3]); | 
| 1285   // Pause sending ep2's candidates to ep1 until ep1 receives the peer reflexive | 1124   // Pause sending ep2's candidates to ep1 until ep1 receives the peer reflexive | 
| 1286   // candidate. | 1125   // candidate. | 
| 1287   PauseCandidates(1); | 1126   PauseCandidates(1); | 
| 1288 | 1127 | 
| 1289   // The caller should have the best connection connected to the peer reflexive | 1128   // The caller should have the best connection connected to the peer reflexive | 
| (...skipping 21 matching lines...) Expand all  Loading... | 
| 1311   WAIT(ep1_ch1()->writable(), 2000); | 1150   WAIT(ep1_ch1()->writable(), 2000); | 
| 1312   EXPECT_EQ(ep2_ch1()->best_connection(), best_connection); | 1151   EXPECT_EQ(ep2_ch1()->best_connection(), best_connection); | 
| 1313   EXPECT_EQ("prflx", ep1_ch1()->best_connection()->remote_candidate().type()); | 1152   EXPECT_EQ("prflx", ep1_ch1()->best_connection()->remote_candidate().type()); | 
| 1314   DestroyChannels(); | 1153   DestroyChannels(); | 
| 1315 } | 1154 } | 
| 1316 | 1155 | 
| 1317 // Test that if remote candidates don't have ufrag and pwd, we still work. | 1156 // Test that if remote candidates don't have ufrag and pwd, we still work. | 
| 1318 TEST_F(P2PTransportChannelTest, RemoteCandidatesWithoutUfragPwd) { | 1157 TEST_F(P2PTransportChannelTest, RemoteCandidatesWithoutUfragPwd) { | 
| 1319   set_clear_remote_candidates_ufrag_pwd(true); | 1158   set_clear_remote_candidates_ufrag_pwd(true); | 
| 1320   ConfigureEndpoints(OPEN, OPEN, | 1159   ConfigureEndpoints(OPEN, OPEN, | 
| 1321                      PORTALLOCATOR_ENABLE_SHARED_UFRAG, | 1160                      kDefaultPortAllocatorFlags, | 
| 1322                      PORTALLOCATOR_ENABLE_SHARED_UFRAG, | 1161                      kDefaultPortAllocatorFlags); | 
| 1323                      kMinimumStepDelay, kMinimumStepDelay, |  | 
| 1324                      cricket::ICEPROTO_GOOGLE); |  | 
| 1325   CreateChannels(1); | 1162   CreateChannels(1); | 
| 1326   const cricket::Connection* best_connection = NULL; | 1163   const cricket::Connection* best_connection = NULL; | 
| 1327   // Wait until the callee's connections are created. | 1164   // Wait until the callee's connections are created. | 
| 1328   WAIT((best_connection = ep2_ch1()->best_connection()) != NULL, 1000); | 1165   WAIT((best_connection = ep2_ch1()->best_connection()) != NULL, 1000); | 
| 1329   // Wait to see if they get culled; they shouldn't. | 1166   // Wait to see if they get culled; they shouldn't. | 
| 1330   WAIT(ep2_ch1()->best_connection() != best_connection, 1000); | 1167   WAIT(ep2_ch1()->best_connection() != best_connection, 1000); | 
| 1331   EXPECT_TRUE(ep2_ch1()->best_connection() == best_connection); | 1168   EXPECT_TRUE(ep2_ch1()->best_connection() == best_connection); | 
| 1332   DestroyChannels(); | 1169   DestroyChannels(); | 
| 1333 } | 1170 } | 
| 1334 | 1171 | 
| 1335 // Test that a host behind NAT cannot be reached when incoming_only | 1172 // Test that a host behind NAT cannot be reached when incoming_only | 
| 1336 // is set to true. | 1173 // is set to true. | 
| 1337 TEST_F(P2PTransportChannelTest, IncomingOnlyBlocked) { | 1174 TEST_F(P2PTransportChannelTest, IncomingOnlyBlocked) { | 
| 1338   ConfigureEndpoints(NAT_FULL_CONE, OPEN, | 1175   ConfigureEndpoints(NAT_FULL_CONE, OPEN, | 
| 1339                      kDefaultPortAllocatorFlags, | 1176                      kDefaultPortAllocatorFlags, | 
| 1340                      kDefaultPortAllocatorFlags, | 1177                      kDefaultPortAllocatorFlags); | 
| 1341                      kDefaultStepDelay, kDefaultStepDelay, |  | 
| 1342                      cricket::ICEPROTO_GOOGLE); |  | 
| 1343 | 1178 | 
| 1344   SetAllocatorFlags(0, kOnlyLocalPorts); | 1179   SetAllocatorFlags(0, kOnlyLocalPorts); | 
| 1345   CreateChannels(1); | 1180   CreateChannels(1); | 
| 1346   ep1_ch1()->set_incoming_only(true); | 1181   ep1_ch1()->set_incoming_only(true); | 
| 1347 | 1182 | 
| 1348   // Pump for 1 second and verify that the channels are not connected. | 1183   // Pump for 1 second and verify that the channels are not connected. | 
| 1349   rtc::Thread::Current()->ProcessMessages(1000); | 1184   rtc::Thread::Current()->ProcessMessages(1000); | 
| 1350 | 1185 | 
| 1351   EXPECT_FALSE(ep1_ch1()->readable()); | 1186   EXPECT_FALSE(ep1_ch1()->readable()); | 
| 1352   EXPECT_FALSE(ep1_ch1()->writable()); | 1187   EXPECT_FALSE(ep1_ch1()->writable()); | 
| 1353   EXPECT_FALSE(ep2_ch1()->readable()); | 1188   EXPECT_FALSE(ep2_ch1()->readable()); | 
| 1354   EXPECT_FALSE(ep2_ch1()->writable()); | 1189   EXPECT_FALSE(ep2_ch1()->writable()); | 
| 1355 | 1190 | 
| 1356   DestroyChannels(); | 1191   DestroyChannels(); | 
| 1357 } | 1192 } | 
| 1358 | 1193 | 
| 1359 // Test that a peer behind NAT can connect to a peer that has | 1194 // Test that a peer behind NAT can connect to a peer that has | 
| 1360 // incoming_only flag set. | 1195 // incoming_only flag set. | 
| 1361 TEST_F(P2PTransportChannelTest, IncomingOnlyOpen) { | 1196 TEST_F(P2PTransportChannelTest, IncomingOnlyOpen) { | 
| 1362   ConfigureEndpoints(OPEN, NAT_FULL_CONE, | 1197   ConfigureEndpoints(OPEN, NAT_FULL_CONE, | 
| 1363                      kDefaultPortAllocatorFlags, | 1198                      kDefaultPortAllocatorFlags, | 
| 1364                      kDefaultPortAllocatorFlags, | 1199                      kDefaultPortAllocatorFlags); | 
| 1365                      kDefaultStepDelay, kDefaultStepDelay, |  | 
| 1366                      cricket::ICEPROTO_GOOGLE); |  | 
| 1367 | 1200 | 
| 1368   SetAllocatorFlags(0, kOnlyLocalPorts); | 1201   SetAllocatorFlags(0, kOnlyLocalPorts); | 
| 1369   CreateChannels(1); | 1202   CreateChannels(1); | 
| 1370   ep1_ch1()->set_incoming_only(true); | 1203   ep1_ch1()->set_incoming_only(true); | 
| 1371 | 1204 | 
| 1372   EXPECT_TRUE_WAIT_MARGIN(ep1_ch1() != NULL && ep2_ch1() != NULL && | 1205   EXPECT_TRUE_WAIT_MARGIN(ep1_ch1() != NULL && ep2_ch1() != NULL && | 
| 1373                           ep1_ch1()->readable() && ep1_ch1()->writable() && | 1206                           ep1_ch1()->readable() && ep1_ch1()->writable() && | 
| 1374                           ep2_ch1()->readable() && ep2_ch1()->writable(), | 1207                           ep2_ch1()->readable() && ep2_ch1()->writable(), | 
| 1375                           1000, 1000); | 1208                           1000, 1000); | 
| 1376 | 1209 | 
| 1377   DestroyChannels(); | 1210   DestroyChannels(); | 
| 1378 } | 1211 } | 
| 1379 | 1212 | 
| 1380 TEST_F(P2PTransportChannelTest, TestTcpConnectionsFromActiveToPassive) { | 1213 TEST_F(P2PTransportChannelTest, TestTcpConnectionsFromActiveToPassive) { | 
| 1381   AddAddress(0, kPublicAddrs[0]); | 1214   AddAddress(0, kPublicAddrs[0]); | 
| 1382   AddAddress(1, kPublicAddrs[1]); | 1215   AddAddress(1, kPublicAddrs[1]); | 
| 1383 | 1216 | 
| 1384   SetAllocationStepDelay(0, kMinimumStepDelay); | 1217   SetAllocationStepDelay(0, kMinimumStepDelay); | 
| 1385   SetAllocationStepDelay(1, kMinimumStepDelay); | 1218   SetAllocationStepDelay(1, kMinimumStepDelay); | 
| 1386 | 1219 | 
| 1387   int kOnlyLocalTcpPorts = cricket::PORTALLOCATOR_DISABLE_UDP | | 1220   int kOnlyLocalTcpPorts = cricket::PORTALLOCATOR_DISABLE_UDP | | 
| 1388                            cricket::PORTALLOCATOR_DISABLE_STUN | | 1221                            cricket::PORTALLOCATOR_DISABLE_STUN | | 
| 1389                            cricket::PORTALLOCATOR_DISABLE_RELAY | | 1222                            cricket::PORTALLOCATOR_DISABLE_RELAY; | 
| 1390                            cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG; |  | 
| 1391   // Disable all protocols except TCP. | 1223   // Disable all protocols except TCP. | 
| 1392   SetAllocatorFlags(0, kOnlyLocalTcpPorts); | 1224   SetAllocatorFlags(0, kOnlyLocalTcpPorts); | 
| 1393   SetAllocatorFlags(1, kOnlyLocalTcpPorts); | 1225   SetAllocatorFlags(1, kOnlyLocalTcpPorts); | 
| 1394 | 1226 | 
| 1395   SetAllowTcpListen(0, true);   // actpass. | 1227   SetAllowTcpListen(0, true);   // actpass. | 
| 1396   SetAllowTcpListen(1, false);  // active. | 1228   SetAllowTcpListen(1, false);  // active. | 
| 1397 | 1229 | 
| 1398   CreateChannels(1); | 1230   CreateChannels(1); | 
| 1399 | 1231 | 
| 1400   EXPECT_TRUE_WAIT(ep1_ch1()->readable() && ep1_ch1()->writable() && | 1232   EXPECT_TRUE_WAIT(ep1_ch1()->readable() && ep1_ch1()->writable() && | 
| (...skipping 20 matching lines...) Expand all  Loading... | 
| 1421   TestSignalRoleConflict(); | 1253   TestSignalRoleConflict(); | 
| 1422 } | 1254 } | 
| 1423 | 1255 | 
| 1424 // Tests that the ice configs (protocol, tiebreaker and role) can be passed | 1256 // Tests that the ice configs (protocol, tiebreaker and role) can be passed | 
| 1425 // down to ports. | 1257 // down to ports. | 
| 1426 TEST_F(P2PTransportChannelTest, TestIceConfigWillPassDownToPort) { | 1258 TEST_F(P2PTransportChannelTest, TestIceConfigWillPassDownToPort) { | 
| 1427   AddAddress(0, kPublicAddrs[0]); | 1259   AddAddress(0, kPublicAddrs[0]); | 
| 1428   AddAddress(1, kPublicAddrs[1]); | 1260   AddAddress(1, kPublicAddrs[1]); | 
| 1429 | 1261 | 
| 1430   SetIceRole(0, cricket::ICEROLE_CONTROLLING); | 1262   SetIceRole(0, cricket::ICEROLE_CONTROLLING); | 
| 1431   SetIceProtocol(0, cricket::ICEPROTO_GOOGLE); |  | 
| 1432   SetIceTiebreaker(0, kTiebreaker1); | 1263   SetIceTiebreaker(0, kTiebreaker1); | 
| 1433   SetIceRole(1, cricket::ICEROLE_CONTROLLING); | 1264   SetIceRole(1, cricket::ICEROLE_CONTROLLING); | 
| 1434   SetIceProtocol(1, cricket::ICEPROTO_RFC5245); |  | 
| 1435   SetIceTiebreaker(1, kTiebreaker2); | 1265   SetIceTiebreaker(1, kTiebreaker2); | 
| 1436 | 1266 | 
| 1437   CreateChannels(1); | 1267   CreateChannels(1); | 
| 1438 | 1268 | 
| 1439   EXPECT_EQ_WAIT(2u, ep1_ch1()->ports().size(), 1000); | 1269   EXPECT_EQ_WAIT(2u, ep1_ch1()->ports().size(), 1000); | 
| 1440 | 1270 | 
| 1441   const std::vector<cricket::PortInterface *> ports_before = ep1_ch1()->ports(); | 1271   const std::vector<cricket::PortInterface *> ports_before = ep1_ch1()->ports(); | 
| 1442   for (size_t i = 0; i < ports_before.size(); ++i) { | 1272   for (size_t i = 0; i < ports_before.size(); ++i) { | 
| 1443     EXPECT_EQ(cricket::ICEROLE_CONTROLLING, ports_before[i]->GetIceRole()); | 1273     EXPECT_EQ(cricket::ICEROLE_CONTROLLING, ports_before[i]->GetIceRole()); | 
| 1444     EXPECT_EQ(cricket::ICEPROTO_GOOGLE, ports_before[i]->IceProtocol()); |  | 
| 1445     EXPECT_EQ(kTiebreaker1, ports_before[i]->IceTiebreaker()); | 1274     EXPECT_EQ(kTiebreaker1, ports_before[i]->IceTiebreaker()); | 
| 1446   } | 1275   } | 
| 1447 | 1276 | 
| 1448   ep1_ch1()->SetIceRole(cricket::ICEROLE_CONTROLLED); | 1277   ep1_ch1()->SetIceRole(cricket::ICEROLE_CONTROLLED); | 
| 1449   ep1_ch1()->SetIceProtocolType(cricket::ICEPROTO_RFC5245); |  | 
| 1450   ep1_ch1()->SetIceTiebreaker(kTiebreaker2); | 1278   ep1_ch1()->SetIceTiebreaker(kTiebreaker2); | 
| 1451 | 1279 | 
| 1452   const std::vector<cricket::PortInterface *> ports_after = ep1_ch1()->ports(); | 1280   const std::vector<cricket::PortInterface *> ports_after = ep1_ch1()->ports(); | 
| 1453   for (size_t i = 0; i < ports_after.size(); ++i) { | 1281   for (size_t i = 0; i < ports_after.size(); ++i) { | 
| 1454     EXPECT_EQ(cricket::ICEROLE_CONTROLLED, ports_before[i]->GetIceRole()); | 1282     EXPECT_EQ(cricket::ICEROLE_CONTROLLED, ports_before[i]->GetIceRole()); | 
| 1455     EXPECT_EQ(cricket::ICEPROTO_RFC5245, ports_before[i]->IceProtocol()); |  | 
| 1456     // SetIceTiebreaker after Connect() has been called will fail. So expect the | 1283     // SetIceTiebreaker after Connect() has been called will fail. So expect the | 
| 1457     // original value. | 1284     // original value. | 
| 1458     EXPECT_EQ(kTiebreaker1, ports_before[i]->IceTiebreaker()); | 1285     EXPECT_EQ(kTiebreaker1, ports_before[i]->IceTiebreaker()); | 
| 1459   } | 1286   } | 
| 1460 | 1287 | 
| 1461   EXPECT_TRUE_WAIT(ep1_ch1()->readable() && | 1288   EXPECT_TRUE_WAIT(ep1_ch1()->readable() && | 
| 1462                    ep1_ch1()->writable() && | 1289                    ep1_ch1()->writable() && | 
| 1463                    ep2_ch1()->readable() && | 1290                    ep2_ch1()->readable() && | 
| 1464                    ep2_ch1()->writable(), | 1291                    ep2_ch1()->writable(), | 
| 1465                    1000); | 1292                    1000); | 
| 1466 | 1293 | 
| 1467   EXPECT_TRUE(ep1_ch1()->best_connection() && | 1294   EXPECT_TRUE(ep1_ch1()->best_connection() && | 
| 1468               ep2_ch1()->best_connection()); | 1295               ep2_ch1()->best_connection()); | 
| 1469 | 1296 | 
| 1470   TestSendRecv(1); | 1297   TestSendRecv(1); | 
| 1471   DestroyChannels(); | 1298   DestroyChannels(); | 
| 1472 } | 1299 } | 
| 1473 | 1300 | 
| 1474 // This test verifies channel can handle ice messages when channel is in |  | 
| 1475 // hybrid mode. |  | 
| 1476 TEST_F(P2PTransportChannelTest, TestConnectivityBetweenHybridandIce) { |  | 
| 1477   TestHybridConnectivity(cricket::ICEPROTO_RFC5245); |  | 
| 1478 } |  | 
| 1479 |  | 
| 1480 // This test verifies channel can handle Gice messages when channel is in |  | 
| 1481 // hybrid mode. |  | 
| 1482 TEST_F(P2PTransportChannelTest, TestConnectivityBetweenHybridandGice) { |  | 
| 1483   TestHybridConnectivity(cricket::ICEPROTO_GOOGLE); |  | 
| 1484 } |  | 
| 1485 |  | 
| 1486 // Verify that we can set DSCP value and retrieve properly from P2PTC. | 1301 // Verify that we can set DSCP value and retrieve properly from P2PTC. | 
| 1487 TEST_F(P2PTransportChannelTest, TestDefaultDscpValue) { | 1302 TEST_F(P2PTransportChannelTest, TestDefaultDscpValue) { | 
| 1488   AddAddress(0, kPublicAddrs[0]); | 1303   AddAddress(0, kPublicAddrs[0]); | 
| 1489   AddAddress(1, kPublicAddrs[1]); | 1304   AddAddress(1, kPublicAddrs[1]); | 
| 1490 | 1305 | 
| 1491   CreateChannels(1); | 1306   CreateChannels(1); | 
| 1492   EXPECT_EQ(rtc::DSCP_NO_CHANGE, | 1307   EXPECT_EQ(rtc::DSCP_NO_CHANGE, | 
| 1493             GetEndpoint(0)->cd1_.ch_->DefaultDscpValue()); | 1308             GetEndpoint(0)->cd1_.ch_->DefaultDscpValue()); | 
| 1494   EXPECT_EQ(rtc::DSCP_NO_CHANGE, | 1309   EXPECT_EQ(rtc::DSCP_NO_CHANGE, | 
| 1495             GetEndpoint(1)->cd1_.ch_->DefaultDscpValue()); | 1310             GetEndpoint(1)->cd1_.ch_->DefaultDscpValue()); | 
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1536       RemoteCandidate(ep1_ch1())->address().EqualIPs(kIPv6PublicAddrs[1])); | 1351       RemoteCandidate(ep1_ch1())->address().EqualIPs(kIPv6PublicAddrs[1])); | 
| 1537 | 1352 | 
| 1538   TestSendRecv(1); | 1353   TestSendRecv(1); | 
| 1539   DestroyChannels(); | 1354   DestroyChannels(); | 
| 1540 } | 1355 } | 
| 1541 | 1356 | 
| 1542 // Testing forceful TURN connections. | 1357 // Testing forceful TURN connections. | 
| 1543 TEST_F(P2PTransportChannelTest, TestForceTurn) { | 1358 TEST_F(P2PTransportChannelTest, TestForceTurn) { | 
| 1544   ConfigureEndpoints(NAT_PORT_RESTRICTED, NAT_SYMMETRIC, | 1359   ConfigureEndpoints(NAT_PORT_RESTRICTED, NAT_SYMMETRIC, | 
| 1545                      kDefaultPortAllocatorFlags | | 1360                      kDefaultPortAllocatorFlags | | 
| 1546                          cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET | | 1361                          cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET, | 
| 1547                          cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG, |  | 
| 1548                      kDefaultPortAllocatorFlags | | 1362                      kDefaultPortAllocatorFlags | | 
| 1549                          cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET | | 1363                          cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); | 
| 1550                          cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG, |  | 
| 1551                      kDefaultStepDelay, kDefaultStepDelay, |  | 
| 1552                      cricket::ICEPROTO_RFC5245); |  | 
| 1553   set_force_relay(true); | 1364   set_force_relay(true); | 
| 1554 | 1365 | 
| 1555   SetAllocationStepDelay(0, kMinimumStepDelay); | 1366   SetAllocationStepDelay(0, kMinimumStepDelay); | 
| 1556   SetAllocationStepDelay(1, kMinimumStepDelay); | 1367   SetAllocationStepDelay(1, kMinimumStepDelay); | 
| 1557 | 1368 | 
| 1558   CreateChannels(1); | 1369   CreateChannels(1); | 
| 1559 | 1370 | 
| 1560   EXPECT_TRUE_WAIT(ep1_ch1()->readable() && | 1371   EXPECT_TRUE_WAIT(ep1_ch1()->readable() && | 
| 1561                    ep1_ch1()->writable() && | 1372                    ep1_ch1()->writable() && | 
| 1562                    ep2_ch1()->readable() && | 1373                    ep2_ch1()->readable() && | 
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1707  public: | 1518  public: | 
| 1708   P2PTransportChannelPingTest() | 1519   P2PTransportChannelPingTest() | 
| 1709       : pss_(new rtc::PhysicalSocketServer), | 1520       : pss_(new rtc::PhysicalSocketServer), | 
| 1710         vss_(new rtc::VirtualSocketServer(pss_.get())), | 1521         vss_(new rtc::VirtualSocketServer(pss_.get())), | 
| 1711         ss_scope_(vss_.get()) {} | 1522         ss_scope_(vss_.get()) {} | 
| 1712 | 1523 | 
| 1713  protected: | 1524  protected: | 
| 1714   void PrepareChannel(cricket::P2PTransportChannel* ch) { | 1525   void PrepareChannel(cricket::P2PTransportChannel* ch) { | 
| 1715     ch->SignalRequestSignaling.connect( | 1526     ch->SignalRequestSignaling.connect( | 
| 1716         this, &P2PTransportChannelPingTest::OnChannelRequestSignaling); | 1527         this, &P2PTransportChannelPingTest::OnChannelRequestSignaling); | 
| 1717     ch->SetIceProtocolType(cricket::ICEPROTO_RFC5245); |  | 
| 1718     ch->SetIceRole(cricket::ICEROLE_CONTROLLING); | 1528     ch->SetIceRole(cricket::ICEROLE_CONTROLLING); | 
| 1719     ch->SetIceCredentials(kIceUfrag[0], kIcePwd[0]); | 1529     ch->SetIceCredentials(kIceUfrag[0], kIcePwd[0]); | 
| 1720     ch->SetRemoteIceCredentials(kIceUfrag[1], kIcePwd[1]); | 1530     ch->SetRemoteIceCredentials(kIceUfrag[1], kIcePwd[1]); | 
| 1721   } | 1531   } | 
| 1722 | 1532 | 
| 1723   void OnChannelRequestSignaling(cricket::TransportChannelImpl* channel) { | 1533   void OnChannelRequestSignaling(cricket::TransportChannelImpl* channel) { | 
| 1724     channel->OnSignalingReady(); | 1534     channel->OnSignalingReady(); | 
| 1725   } | 1535   } | 
| 1726 | 1536 | 
| 1727   cricket::Candidate CreateCandidate(const std::string& ip, | 1537   cricket::Candidate CreateCandidate(const std::string& ip, | 
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1877   ch.OnCandidate(CreateCandidate("1.1.1.1", 1, 1)); | 1687   ch.OnCandidate(CreateCandidate("1.1.1.1", 1, 1)); | 
| 1878   cricket::Connection* conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1); | 1688   cricket::Connection* conn1 = WaitForConnectionTo(&ch, "1.1.1.1", 1); | 
| 1879   ASSERT_TRUE(conn1 != nullptr); | 1689   ASSERT_TRUE(conn1 != nullptr); | 
| 1880 | 1690 | 
| 1881   conn1->ReceivedPing(); | 1691   conn1->ReceivedPing(); | 
| 1882   conn1->OnReadPacket("ABC", 3, rtc::CreatePacketTime(0)); | 1692   conn1->OnReadPacket("ABC", 3, rtc::CreatePacketTime(0)); | 
| 1883   EXPECT_TRUE_WAIT(ch.best_connection() != nullptr, 1000) | 1693   EXPECT_TRUE_WAIT(ch.best_connection() != nullptr, 1000) | 
| 1884   EXPECT_TRUE_WAIT(ch.receiving(), 1000); | 1694   EXPECT_TRUE_WAIT(ch.receiving(), 1000); | 
| 1885   EXPECT_TRUE_WAIT(!ch.receiving(), 1000); | 1695   EXPECT_TRUE_WAIT(!ch.receiving(), 1000); | 
| 1886 } | 1696 } | 
| OLD | NEW | 
|---|