OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright 2012 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 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
386 offer_answer_options_.ice_restart = true; | 386 offer_answer_options_.ice_restart = true; |
387 SetExpectIceRestart(true); | 387 SetExpectIceRestart(true); |
388 } | 388 } |
389 | 389 |
390 void SetExpectIceRestart(bool expect_restart) { | 390 void SetExpectIceRestart(bool expect_restart) { |
391 expect_ice_restart_ = expect_restart; | 391 expect_ice_restart_ = expect_restart; |
392 } | 392 } |
393 | 393 |
394 bool ExpectIceRestart() const { return expect_ice_restart_; } | 394 bool ExpectIceRestart() const { return expect_ice_restart_; } |
395 | 395 |
| 396 void SetExpectIceRenomination(bool expect_renomination) { |
| 397 expect_ice_renomination_ = expect_renomination; |
| 398 } |
| 399 void SetExpectRemoteIceRenomination(bool expect_renomination) { |
| 400 expect_remote_ice_renomination_ = expect_renomination; |
| 401 } |
| 402 bool ExpectIceRenomination() { return expect_ice_renomination_; } |
| 403 bool ExpectRemoteIceRenomination() { return expect_remote_ice_renomination_; } |
| 404 |
396 void SetReceiveAudioVideo(bool audio, bool video) { | 405 void SetReceiveAudioVideo(bool audio, bool video) { |
397 SetReceiveAudio(audio); | 406 SetReceiveAudio(audio); |
398 SetReceiveVideo(video); | 407 SetReceiveVideo(video); |
399 ASSERT_EQ(audio, can_receive_audio()); | 408 ASSERT_EQ(audio, can_receive_audio()); |
400 ASSERT_EQ(video, can_receive_video()); | 409 ASSERT_EQ(video, can_receive_video()); |
401 } | 410 } |
402 | 411 |
403 void SetReceiveAudio(bool audio) { | 412 void SetReceiveAudio(bool audio) { |
404 if (audio && can_receive_audio()) | 413 if (audio && can_receive_audio()) |
405 return; | 414 return; |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
663 EXPECT_NE(ufrag_pwd.first, transport_desc->ice_ufrag); | 672 EXPECT_NE(ufrag_pwd.first, transport_desc->ice_ufrag); |
664 EXPECT_NE(ufrag_pwd.second, transport_desc->ice_pwd); | 673 EXPECT_NE(ufrag_pwd.second, transport_desc->ice_pwd); |
665 } else { | 674 } else { |
666 const IceUfragPwdPair& ufrag_pwd = ufragpair_it->second; | 675 const IceUfragPwdPair& ufrag_pwd = ufragpair_it->second; |
667 EXPECT_EQ(ufrag_pwd.first, transport_desc->ice_ufrag); | 676 EXPECT_EQ(ufrag_pwd.first, transport_desc->ice_ufrag); |
668 EXPECT_EQ(ufrag_pwd.second, transport_desc->ice_pwd); | 677 EXPECT_EQ(ufrag_pwd.second, transport_desc->ice_pwd); |
669 } | 678 } |
670 } | 679 } |
671 } | 680 } |
672 | 681 |
| 682 void VerifyLocalIceRenomination() { |
| 683 ASSERT_TRUE(peer_connection_->local_description() != nullptr); |
| 684 const cricket::SessionDescription* desc = |
| 685 peer_connection_->local_description()->description(); |
| 686 const cricket::ContentInfos& contents = desc->contents(); |
| 687 |
| 688 for (auto content : contents) { |
| 689 if (content.rejected) |
| 690 continue; |
| 691 const cricket::TransportDescription* transport_desc = |
| 692 desc->GetTransportDescriptionByName(content.name); |
| 693 const auto& options = transport_desc->transport_options; |
| 694 auto iter = std::find(options.begin(), options.end(), |
| 695 cricket::ICE_RENOMINATION_STR); |
| 696 EXPECT_EQ(ExpectIceRenomination(), iter != options.end()); |
| 697 } |
| 698 } |
| 699 |
| 700 void VerifyRemoteIceRenomination() { |
| 701 ASSERT_TRUE(peer_connection_->remote_description() != nullptr); |
| 702 const cricket::SessionDescription* desc = |
| 703 peer_connection_->remote_description()->description(); |
| 704 const cricket::ContentInfos& contents = desc->contents(); |
| 705 |
| 706 for (auto content : contents) { |
| 707 if (content.rejected) |
| 708 continue; |
| 709 const cricket::TransportDescription* transport_desc = |
| 710 desc->GetTransportDescriptionByName(content.name); |
| 711 const auto& options = transport_desc->transport_options; |
| 712 auto iter = std::find(options.begin(), options.end(), |
| 713 cricket::ICE_RENOMINATION_STR); |
| 714 EXPECT_EQ(ExpectRemoteIceRenomination(), iter != options.end()); |
| 715 } |
| 716 } |
| 717 |
673 int GetAudioOutputLevelStats(webrtc::MediaStreamTrackInterface* track) { | 718 int GetAudioOutputLevelStats(webrtc::MediaStreamTrackInterface* track) { |
674 rtc::scoped_refptr<MockStatsObserver> | 719 rtc::scoped_refptr<MockStatsObserver> |
675 observer(new rtc::RefCountedObject<MockStatsObserver>()); | 720 observer(new rtc::RefCountedObject<MockStatsObserver>()); |
676 EXPECT_TRUE(peer_connection_->GetStats( | 721 EXPECT_TRUE(peer_connection_->GetStats( |
677 observer, track, PeerConnectionInterface::kStatsOutputLevelStandard)); | 722 observer, track, PeerConnectionInterface::kStatsOutputLevelStandard)); |
678 EXPECT_TRUE_WAIT(observer->called(), kMaxWaitMs); | 723 EXPECT_TRUE_WAIT(observer->called(), kMaxWaitMs); |
679 EXPECT_NE(0, observer->timestamp()); | 724 EXPECT_NE(0, observer->timestamp()); |
680 return observer->AudioOutputLevel(); | 725 return observer->AudioOutputLevel(); |
681 } | 726 } |
682 | 727 |
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1023 rtc::scoped_refptr<webrtc::PeerConnectionInterface> peer_connection_; | 1068 rtc::scoped_refptr<webrtc::PeerConnectionInterface> peer_connection_; |
1024 rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> | 1069 rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> |
1025 peer_connection_factory_; | 1070 peer_connection_factory_; |
1026 | 1071 |
1027 bool prefer_constraint_apis_ = true; | 1072 bool prefer_constraint_apis_ = true; |
1028 bool auto_add_stream_ = true; | 1073 bool auto_add_stream_ = true; |
1029 | 1074 |
1030 typedef std::pair<std::string, std::string> IceUfragPwdPair; | 1075 typedef std::pair<std::string, std::string> IceUfragPwdPair; |
1031 std::map<int, IceUfragPwdPair> ice_ufrag_pwd_; | 1076 std::map<int, IceUfragPwdPair> ice_ufrag_pwd_; |
1032 bool expect_ice_restart_ = false; | 1077 bool expect_ice_restart_ = false; |
| 1078 bool expect_ice_renomination_ = false; |
| 1079 bool expect_remote_ice_renomination_ = false; |
1033 | 1080 |
1034 // Needed to keep track of number of frames sent. | 1081 // Needed to keep track of number of frames sent. |
1035 rtc::scoped_refptr<FakeAudioCaptureModule> fake_audio_capture_module_; | 1082 rtc::scoped_refptr<FakeAudioCaptureModule> fake_audio_capture_module_; |
1036 // Needed to keep track of number of frames received. | 1083 // Needed to keep track of number of frames received. |
1037 std::map<std::string, std::unique_ptr<webrtc::FakeVideoTrackRenderer>> | 1084 std::map<std::string, std::unique_ptr<webrtc::FakeVideoTrackRenderer>> |
1038 fake_video_renderers_; | 1085 fake_video_renderers_; |
1039 // Needed to ensure frames aren't received for removed tracks. | 1086 // Needed to ensure frames aren't received for removed tracks. |
1040 std::vector<std::unique_ptr<webrtc::FakeVideoTrackRenderer>> | 1087 std::vector<std::unique_ptr<webrtc::FakeVideoTrackRenderer>> |
1041 removed_fake_video_renderers_; | 1088 removed_fake_video_renderers_; |
1042 // Needed to keep track of number of frames received when external decoder | 1089 // Needed to keep track of number of frames received when external decoder |
(...skipping 1078 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2121 std::string receiver_candidate_restart; | 2168 std::string receiver_candidate_restart; |
2122 EXPECT_TRUE(audio_candidates_reciever_restart->at(0)->ToString( | 2169 EXPECT_TRUE(audio_candidates_reciever_restart->at(0)->ToString( |
2123 &receiver_candidate_restart)); | 2170 &receiver_candidate_restart)); |
2124 | 2171 |
2125 // Verify that the first candidates in the local session descriptions has | 2172 // Verify that the first candidates in the local session descriptions has |
2126 // changed. | 2173 // changed. |
2127 EXPECT_NE(initiator_candidate, initiator_candidate_restart); | 2174 EXPECT_NE(initiator_candidate, initiator_candidate_restart); |
2128 EXPECT_NE(receiver_candidate, receiver_candidate_restart); | 2175 EXPECT_NE(receiver_candidate, receiver_candidate_restart); |
2129 } | 2176 } |
2130 | 2177 |
| 2178 TEST_F(P2PTestConductor, IceRenominationDisabled) { |
| 2179 config()->enable_ice_renomination = false; |
| 2180 ASSERT_TRUE(CreateTestClients()); |
| 2181 LocalP2PTest(); |
| 2182 |
| 2183 initializing_client()->VerifyLocalIceRenomination(); |
| 2184 receiving_client()->VerifyLocalIceRenomination(); |
| 2185 initializing_client()->VerifyRemoteIceRenomination(); |
| 2186 receiving_client()->VerifyRemoteIceRenomination(); |
| 2187 } |
| 2188 |
| 2189 TEST_F(P2PTestConductor, IceRenominationEnabled) { |
| 2190 config()->enable_ice_renomination = true; |
| 2191 ASSERT_TRUE(CreateTestClients()); |
| 2192 initializing_client()->SetExpectIceRenomination(true); |
| 2193 initializing_client()->SetExpectRemoteIceRenomination(true); |
| 2194 receiving_client()->SetExpectIceRenomination(true); |
| 2195 receiving_client()->SetExpectRemoteIceRenomination(true); |
| 2196 LocalP2PTest(); |
| 2197 |
| 2198 initializing_client()->VerifyLocalIceRenomination(); |
| 2199 receiving_client()->VerifyLocalIceRenomination(); |
| 2200 initializing_client()->VerifyRemoteIceRenomination(); |
| 2201 receiving_client()->VerifyRemoteIceRenomination(); |
| 2202 } |
| 2203 |
2131 // This test sets up a call between two parties with audio, and video. | 2204 // This test sets up a call between two parties with audio, and video. |
2132 // It then renegotiates setting the video m-line to "port 0", then later | 2205 // It then renegotiates setting the video m-line to "port 0", then later |
2133 // renegotiates again, enabling video. | 2206 // renegotiates again, enabling video. |
2134 TEST_F(P2PTestConductor, LocalP2PTestVideoDisableEnable) { | 2207 TEST_F(P2PTestConductor, LocalP2PTestVideoDisableEnable) { |
2135 ASSERT_TRUE(CreateTestClients()); | 2208 ASSERT_TRUE(CreateTestClients()); |
2136 | 2209 |
2137 // Do initial negotiation. Will result in video and audio sendonly m-lines. | 2210 // Do initial negotiation. Will result in video and audio sendonly m-lines. |
2138 receiving_client()->set_auto_add_stream(false); | 2211 receiving_client()->set_auto_add_stream(false); |
2139 initializing_client()->AddMediaStream(true, true); | 2212 initializing_client()->AddMediaStream(true, true); |
2140 initializing_client()->Negotiate(); | 2213 initializing_client()->Negotiate(); |
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2480 server.urls.push_back("turn:hostname2"); | 2553 server.urls.push_back("turn:hostname2"); |
2481 servers.push_back(server); | 2554 servers.push_back(server); |
2482 EXPECT_TRUE(webrtc::ParseIceServers(servers, &stun_servers_, &turn_servers_)); | 2555 EXPECT_TRUE(webrtc::ParseIceServers(servers, &stun_servers_, &turn_servers_)); |
2483 EXPECT_EQ(2U, turn_servers_.size()); | 2556 EXPECT_EQ(2U, turn_servers_.size()); |
2484 EXPECT_NE(turn_servers_[0].priority, turn_servers_[1].priority); | 2557 EXPECT_NE(turn_servers_[0].priority, turn_servers_[1].priority); |
2485 } | 2558 } |
2486 | 2559 |
2487 #endif // if !defined(THREAD_SANITIZER) | 2560 #endif // if !defined(THREAD_SANITIZER) |
2488 | 2561 |
2489 } // namespace | 2562 } // namespace |
OLD | NEW |