• Home
  • Raw
  • Download

Lines Matching +full:get +full:- +full:caller +full:- +full:file

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
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
15 // do NOT add it here, but instead add it to the file
110 : PeerConnectionIntegrationBaseTest(std::get<0>(GetParam()), in PeerConnectionIntegrationTest()
111 std::get<1>(GetParam())) {} in PeerConnectionIntegrationTest()
118 // This also ensures peerconnection is closed before switching back to non-fake
159 caller()->AddAudioVideoTracks(); in TEST_P()
160 callee()->AddAudioVideoTracks(); in TEST_P()
162 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
165 EXPECT_EQ(2U, caller()->rtp_receiver_observers().size()); in TEST_P()
166 EXPECT_EQ(2U, callee()->rtp_receiver_observers().size()); in TEST_P()
169 absl::c_all_of(caller()->rtp_receiver_observers(), in TEST_P()
171 return o->first_packet_received(); in TEST_P()
175 absl::c_all_of(callee()->rtp_receiver_observers(), in TEST_P()
177 return o->first_packet_received(); in TEST_P()
182 caller()->ResetRtpReceiverObservers(); in TEST_P()
183 callee()->ResetRtpReceiverObservers(); in TEST_P()
184 EXPECT_EQ(2U, caller()->rtp_receiver_observers().size()); in TEST_P()
185 EXPECT_EQ(2U, callee()->rtp_receiver_observers().size()); in TEST_P()
187 absl::c_all_of(caller()->rtp_receiver_observers(), in TEST_P()
189 return o->first_packet_received(); in TEST_P()
192 absl::c_all_of(callee()->rtp_receiver_observers(), in TEST_P()
194 return o->first_packet_received(); in TEST_P()
222 // We should be able to get a DTMF sender from the local sender. in TestDtmfFromSenderToReceiver()
224 sender->pc()->GetSenders().at(0)->GetDtmfSender(); in TestDtmfFromSenderToReceiver()
227 dtmf_sender->RegisterObserver(&observer); in TestDtmfFromSenderToReceiver()
230 EXPECT_TRUE(dtmf_sender->CanInsertDtmf()); in TestDtmfFromSenderToReceiver()
231 EXPECT_TRUE(dtmf_sender->InsertDtmf("1a", 100, 50)); in TestDtmfFromSenderToReceiver()
236 dtmf_sender->UnregisterObserver(); in TestDtmfFromSenderToReceiver()
237 // TODO(deadbeef): Verify the tones were actually received end-to-end. in TestDtmfFromSenderToReceiver()
246 caller()->AddAudioTrack(); in TEST_P()
247 callee()->AddAudioTrack(); in TEST_P()
248 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
252 TestDtmfFromSenderToReceiver(caller(), callee()); in TEST_P()
253 TestDtmfFromSenderToReceiver(callee(), caller()); in TEST_P()
256 // Basic end-to-end test, verifying media can be encoded/transmitted/decoded
257 // between two connections, using DTLS-SRTP.
264 caller()->AddAudioVideoTracks(); in TEST_P()
265 callee()->AddAudioVideoTracks(); in TEST_P()
266 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
283 caller()->AddAudioVideoTracks(); in TEST_P()
284 callee()->AddAudioVideoTracks(); in TEST_P()
285 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
293 // Basic end-to-end test specifying the `enable_encrypted_rtp_header_extensions`
309 caller()->AddAudioVideoTracks(); in TEST_P()
310 callee()->AddAudioVideoTracks(); in TEST_P()
311 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
330 caller()->AddTrack(caller()->CreateLocalVideoTrackWithConfig(config)); in TEST_P()
331 callee()->AddTrack(callee()->CreateLocalVideoTrackWithConfig(config)); in TEST_P()
335 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
336 ASSERT_TRUE_WAIT(caller()->min_video_frames_received_per_track() > 0 && in TEST_P()
337 callee()->min_video_frames_received_per_track() > 0, in TEST_P()
341 EXPECT_EQ(16.0 / 9, caller()->local_rendered_aspect_ratio()); in TEST_P()
342 EXPECT_EQ(16.0 / 9, caller()->rendered_aspect_ratio()); in TEST_P()
343 EXPECT_EQ(16.0 / 9, callee()->local_rendered_aspect_ratio()); in TEST_P()
344 EXPECT_EQ(16.0 / 9, callee()->rendered_aspect_ratio()); in TEST_P()
347 // This test sets up an one-way call, with media only from caller to
352 caller()->AddAudioVideoTracks(); in TEST_P()
353 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
361 // Tests that send only works without the caller having a decoder factory and
367 // Add one-directional video, from caller to callee. in TEST_P()
369 caller()->CreateLocalVideoTrack(); in TEST_P()
370 caller()->AddTrack(caller_track); in TEST_P()
373 caller()->SetOfferAnswerOptions(options); in TEST_P()
374 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
376 ASSERT_EQ(callee()->pc()->GetReceivers().size(), 1u); in TEST_P()
386 // Tests that receive only works without the caller having an encoder factory
392 // Add one-directional video, from callee to caller. in TEST_P()
394 callee()->CreateLocalVideoTrack(); in TEST_P()
395 callee()->AddTrack(callee_track); in TEST_P()
398 caller()->SetOfferAnswerOptions(options); in TEST_P()
399 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
401 ASSERT_EQ(caller()->pc()->GetReceivers().size(), 1u); in TEST_P()
415 // Add one-directional video, from caller to callee. in TEST_P()
417 caller()->CreateLocalVideoTrack(); in TEST_P()
418 caller()->AddTrack(caller_track); in TEST_P()
419 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
424 callee()->CreateLocalVideoTrack(); in TEST_P()
425 callee()->AddTrack(callee_track); in TEST_P()
426 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
429 // Ensure that video frames are received end-to-end. in TEST_P()
439 // Add one-directional video, from callee to caller. in TEST_P()
441 callee()->CreateLocalVideoTrack(); in TEST_P()
442 callee()->AddTrack(callee_track); in TEST_P()
443 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
448 caller()->CreateLocalVideoTrack(); in TEST_P()
449 caller()->AddTrack(caller_track); in TEST_P()
450 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
463 // Add send video, from caller to callee. in TEST_P()
465 caller()->CreateLocalVideoTrack(); in TEST_P()
467 caller()->AddTrack(caller_track); in TEST_P()
468 // Add receive video, from callee to caller. in TEST_P()
470 callee()->CreateLocalVideoTrack(); in TEST_P()
473 callee()->AddTrack(callee_track); in TEST_P()
474 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
478 callee()->pc()->RemoveTrackOrError(callee_sender); in TEST_P()
480 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
483 // Expect one-directional video. in TEST_P()
495 // Add send video, from caller to callee. in TEST_P()
497 caller()->CreateLocalVideoTrack(); in TEST_P()
499 caller()->AddTrack(caller_track); in TEST_P()
500 // Add receive video, from callee to caller. in TEST_P()
502 callee()->CreateLocalVideoTrack(); in TEST_P()
505 callee()->AddTrack(callee_track); in TEST_P()
506 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
509 // Remove send video (i.e., caller sender track). in TEST_P()
510 caller()->pc()->RemoveTrackOrError(caller_sender); in TEST_P()
512 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
515 // Expect one-directional video. in TEST_P()
529 // Initially, offer an audio/video stream from the caller, but refuse to in TEST_P()
531 caller()->AddAudioVideoTracks(); in TEST_P()
532 callee()->AddAudioTrack(); in TEST_P()
536 callee()->SetOfferAnswerOptions(options); in TEST_P()
538 callee()->SetRemoteOfferHandler([this] { in TEST_P()
540 ->GetFirstTransceiverOfType(cricket::MEDIA_TYPE_VIDEO) in TEST_P()
541 ->StopInternal(); in TEST_P()
544 // Do offer/answer and make sure audio is still received end-to-end. in TEST_P()
545 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
554 ASSERT_NE(nullptr, callee()->pc()->local_description()); in TEST_P()
556 GetFirstVideoContent(callee()->pc()->local_description()->description()); in TEST_P()
558 EXPECT_TRUE(callee_video_content->rejected); in TEST_P()
562 callee()->AddVideoTrack(); in TEST_P()
566 callee()->SetOfferAnswerOptions(options); in TEST_P()
568 callee()->SetRemoteOfferHandler(nullptr); in TEST_P()
569 caller()->SetRemoteOfferHandler([this] { in TEST_P()
570 // The caller creates a new transceiver to receive video on when receiving in TEST_P()
572 auto transceivers = caller()->pc()->GetTransceivers(); in TEST_P()
575 transceivers[1]->receiver()->media_type()); in TEST_P()
576 transceivers[1]->sender()->SetTrack( in TEST_P()
577 caller()->CreateLocalVideoTrack().get()); in TEST_P()
578 transceivers[1]->SetDirectionWithError( in TEST_P()
582 callee()->CreateAndSetAndSignalOffer(); in TEST_P()
593 // video-only connection.
598 caller()->AddVideoTrack(); in TEST_P()
599 callee()->AddVideoTrack(); in TEST_P()
600 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
603 caller()->AddAudioTrack(); in TEST_P()
604 callee()->AddAudioTrack(); in TEST_P()
605 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
607 // Ensure both audio and video frames are received end-to-end. in TEST_P()
613 // This test sets up a non-bundled call and negotiates bundling at the same
615 // the DTLS-SRTP context should be successfully reset.
620 caller()->AddAudioVideoTracks(); in TEST_P()
621 callee()->AddAudioVideoTracks(); in TEST_P()
623 callee()->SetReceivedSdpMunger([](cricket::SessionDescription* desc) { in TEST_P()
624 desc->RemoveGroupByName("BUNDLE"); in TEST_P()
626 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
634 callee()->SetReceivedSdpMunger(nullptr); in TEST_P()
635 caller()->SetOfferAnswerOptions(IceRestartOfferAnswerOptions()); in TEST_P()
636 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
655 caller()->AddTrack( in TEST_P()
656 caller()->CreateLocalVideoTrackWithRotation(webrtc::kVideoRotation_90)); in TEST_P()
657 callee()->AddTrack( in TEST_P()
658 callee()->CreateLocalVideoTrackWithRotation(webrtc::kVideoRotation_270)); in TEST_P()
661 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
663 ASSERT_TRUE_WAIT(caller()->min_video_frames_received_per_track() > 0 && in TEST_P()
664 callee()->min_video_frames_received_per_track() > 0, in TEST_P()
670 EXPECT_EQ(4.0 / 3, caller()->local_rendered_aspect_ratio()); in TEST_P()
671 EXPECT_EQ(4.0 / 3, caller()->rendered_aspect_ratio()); in TEST_P()
672 EXPECT_EQ(4.0 / 3, callee()->local_rendered_aspect_ratio()); in TEST_P()
673 EXPECT_EQ(4.0 / 3, callee()->rendered_aspect_ratio()); in TEST_P()
675 EXPECT_EQ(webrtc::kVideoRotation_270, caller()->rendered_rotation()); in TEST_P()
676 EXPECT_EQ(webrtc::kVideoRotation_90, callee()->rendered_rotation()); in TEST_P()
680 // old-fashioned way, by encoding rotated frames.
685 caller()->AddTrack( in TEST_P()
686 caller()->CreateLocalVideoTrackWithRotation(webrtc::kVideoRotation_90)); in TEST_P()
687 callee()->AddTrack( in TEST_P()
688 callee()->CreateLocalVideoTrackWithRotation(webrtc::kVideoRotation_270)); in TEST_P()
691 callee()->SetReceivedSdpMunger([](cricket::SessionDescription* desc) { in TEST_P()
694 video->ClearRtpHeaderExtensions(); in TEST_P()
697 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
699 ASSERT_TRUE_WAIT(caller()->min_video_frames_received_per_track() > 0 && in TEST_P()
700 callee()->min_video_frames_received_per_track() > 0, in TEST_P()
707 EXPECT_EQ(3.0 / 4, caller()->local_rendered_aspect_ratio()); in TEST_P()
708 EXPECT_EQ(3.0 / 4, caller()->rendered_aspect_ratio()); in TEST_P()
709 EXPECT_EQ(3.0 / 4, callee()->local_rendered_aspect_ratio()); in TEST_P()
710 EXPECT_EQ(3.0 / 4, callee()->rendered_aspect_ratio()); in TEST_P()
712 EXPECT_EQ(webrtc::kVideoRotation_0, caller()->rendered_rotation()); in TEST_P()
713 EXPECT_EQ(webrtc::kVideoRotation_0, callee()->rendered_rotation()); in TEST_P()
721 caller()->AddAudioVideoTracks(); in TEST_P()
727 callee()->SetOfferAnswerOptions(options); in TEST_P()
731 callee()->SetRemoteOfferHandler([this] { in TEST_P()
733 ->GetFirstTransceiverOfType(cricket::MEDIA_TYPE_AUDIO) in TEST_P()
734 ->StopInternal(); in TEST_P()
737 callee()->AddTrack(callee()->CreateLocalVideoTrack()); in TEST_P()
738 // Do offer/answer and wait for successful end-to-end video frames. in TEST_P()
739 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
747 ASSERT_NE(nullptr, callee()->pc()->local_description()); in TEST_P()
749 GetFirstAudioContent(callee()->pc()->local_description()->description()); in TEST_P()
751 EXPECT_TRUE(callee_audio_content->rejected); in TEST_P()
753 // The caller's transceiver should have stopped after receiving the answer, in TEST_P()
756 caller()->GetFirstTransceiverOfType(cricket::MEDIA_TYPE_AUDIO)); in TEST_P()
765 caller()->AddAudioVideoTracks(); in TEST_P()
771 callee()->SetOfferAnswerOptions(options); in TEST_P()
775 callee()->SetRemoteOfferHandler([this] { in TEST_P()
777 ->GetFirstTransceiverOfType(cricket::MEDIA_TYPE_VIDEO) in TEST_P()
778 ->StopInternal(); in TEST_P()
781 callee()->AddTrack(callee()->CreateLocalAudioTrack()); in TEST_P()
782 // Do offer/answer and wait for successful end-to-end audio frames. in TEST_P()
783 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
791 ASSERT_NE(nullptr, callee()->pc()->local_description()); in TEST_P()
793 GetFirstVideoContent(callee()->pc()->local_description()->description()); in TEST_P()
795 EXPECT_TRUE(callee_video_content->rejected); in TEST_P()
797 // The caller's transceiver should have stopped after receiving the answer, in TEST_P()
800 caller()->GetFirstTransceiverOfType(cricket::MEDIA_TYPE_VIDEO)); in TEST_P()
812 caller()->AddAudioVideoTracks(); in TEST_P()
819 callee()->SetOfferAnswerOptions(options); in TEST_P()
821 callee()->SetRemoteOfferHandler([this] { in TEST_P()
823 for (const auto& transceiver : callee()->pc()->GetTransceivers()) { in TEST_P()
824 transceiver->StopInternal(); in TEST_P()
829 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
833 ASSERT_NE(nullptr, callee()->pc()->local_description()); in TEST_P()
835 GetFirstAudioContent(callee()->pc()->local_description()->description()); in TEST_P()
837 EXPECT_TRUE(callee_audio_content->rejected); in TEST_P()
839 GetFirstVideoContent(callee()->pc()->local_description()->description()); in TEST_P()
841 EXPECT_TRUE(callee_video_content->rejected); in TEST_P()
845 // call runs for a while, the caller sends an updated offer with video being
846 // rejected. Once the re-negotiation is done, the video flow should stop and
851 caller()->AddAudioVideoTracks(); in TEST_P()
852 callee()->AddAudioVideoTracks(); in TEST_P()
853 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
862 caller()->SetGeneratedSdpMunger( in TEST_P()
864 for (cricket::ContentInfo& content : description->contents()) { in TEST_P()
871 caller() in TEST_P()
872 ->GetFirstTransceiverOfType(cricket::MEDIA_TYPE_VIDEO) in TEST_P()
873 ->StopInternal(); in TEST_P()
875 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
878 // Sanity check that the caller's description has a rejected video section. in TEST_P()
879 ASSERT_NE(nullptr, caller()->pc()->local_description()); in TEST_P()
881 GetFirstVideoContent(caller()->pc()->local_description()->description()); in TEST_P()
883 EXPECT_TRUE(caller_video_content->rejected); in TEST_P()
894 // section), and another that re-enables it. Regression test for:
902 caller()->CreateLocalAudioTrack(); in TEST_F()
904 caller()->pc()->AddTrack(track, {"stream"}).MoveValue(); in TEST_F()
905 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
910 caller()->pc()->RemoveTrackOrError(sender); in TEST_F()
913 caller()->SetOfferAnswerOptions(options); in TEST_F()
914 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
919 sender = caller()->pc()->AddTrack(track, {"stream"}).MoveValue(); in TEST_F()
921 caller()->SetOfferAnswerOptions(options); in TEST_F()
922 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
930 // Basic end-to-end test, but without SSRC/MSID signaling. This functionality
933 // add a test for an end-to-end test without MID signaling either (basically,
939 caller()->AddAudioVideoTracks(); in TEST_P()
940 callee()->AddAudioVideoTracks(); in TEST_P()
942 callee()->SetReceivedSdpMunger(RemoveSsrcsAndMsids); in TEST_P()
943 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
950 // Basic end-to-end test, without SSRC signaling. This means that the track
959 caller()->AddTrack(caller()->CreateLocalAudioTrack(), {kStreamId}); in TEST_F()
960 callee()->AddAudioTrack(); in TEST_F()
963 callee()->SetReceivedSdpMunger(RemoveSsrcsAndKeepMsids); in TEST_F()
964 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
975 // Add one-directional video, from caller to callee. in TEST_F()
977 caller()->CreateLocalVideoTrack(); in TEST_F()
983 caller()->pc()->AddTransceiver(track, video_transceiver_init).MoveValue(); in TEST_F()
984 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
988 video_sender->SetDirectionWithError(RtpTransceiverDirection::kSendRecv); in TEST_F()
991 callee()->CreateLocalVideoTrack(); in TEST_F()
993 callee()->AddTrack(callee_track); in TEST_F()
994 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
996 // Ensure that video frames are received end-to-end. in TEST_F()
1009 caller()->AddVideoTrack(); in TEST_F()
1010 caller()->AddVideoTrack(); in TEST_F()
1011 callee()->AddVideoTrack(); in TEST_F()
1012 callee()->AddVideoTrack(); in TEST_F()
1014 caller()->SetReceivedSdpMunger(&RemoveSsrcsAndKeepMsids); in TEST_F()
1015 callee()->SetReceivedSdpMunger(&RemoveSsrcsAndKeepMsids); in TEST_F()
1016 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
1018 ASSERT_EQ(2u, caller()->pc()->GetReceivers().size()); in TEST_F()
1019 ASSERT_EQ(2u, callee()->pc()->GetReceivers().size()); in TEST_F()
1030 desc->RemoveGroupByName("BUNDLE"); in RemoveBundleGroupSsrcsAndMidExtension()
1031 for (ContentInfo& content : desc->contents()) { in RemoveBundleGroupSsrcsAndMidExtension()
1033 cricket::RtpHeaderExtensions extensions = media->rtp_header_extensions(); in RemoveBundleGroupSsrcsAndMidExtension()
1040 media->set_rtp_header_extensions(extensions); in RemoveBundleGroupSsrcsAndMidExtension()
1054 caller()->AddVideoTrack(); in TEST_F()
1055 caller()->AddVideoTrack(); in TEST_F()
1056 callee()->AddVideoTrack(); in TEST_F()
1057 callee()->AddVideoTrack(); in TEST_F()
1058 caller()->SetReceivedSdpMunger(&RemoveBundleGroupSsrcsAndMidExtension); in TEST_F()
1059 callee()->SetReceivedSdpMunger(&RemoveBundleGroupSsrcsAndMidExtension); in TEST_F()
1060 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
1062 ASSERT_EQ(2u, caller()->pc()->GetReceivers().size()); in TEST_F()
1063 ASSERT_EQ(2u, callee()->pc()->GetReceivers().size()); in TEST_F()
1065 ASSERT_NE(caller()->pc()->GetSenders()[0]->dtls_transport(), in TEST_F()
1066 caller()->pc()->GetSenders()[1]->dtls_transport()); in TEST_F()
1078 for (ContentInfo& content : desc->contents()) { in ModifyPayloadTypesAndRemoveMidExtension()
1080 cricket::RtpHeaderExtensions extensions = media->rtp_header_extensions(); in ModifyPayloadTypesAndRemoveMidExtension()
1087 media->set_rtp_header_extensions(extensions); in ModifyPayloadTypesAndRemoveMidExtension()
1088 cricket::VideoContentDescription* video = media->as_video(); in ModifyPayloadTypesAndRemoveMidExtension()
1091 video->set_codecs(codecs); in ModifyPayloadTypesAndRemoveMidExtension()
1103 caller()->AddVideoTrack(); in TEST_F()
1104 caller()->AddVideoTrack(); in TEST_F()
1105 callee()->AddVideoTrack(); in TEST_F()
1106 callee()->AddVideoTrack(); in TEST_F()
1107 caller()->SetGeneratedSdpMunger(&ModifyPayloadTypesAndRemoveMidExtension); in TEST_F()
1108 callee()->SetGeneratedSdpMunger(&ModifyPayloadTypesAndRemoveMidExtension); in TEST_F()
1111 caller()->SetReceivedSdpMunger(&RemoveSsrcsAndKeepMsids); in TEST_F()
1112 callee()->SetReceivedSdpMunger(&RemoveSsrcsAndKeepMsids); in TEST_F()
1113 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
1115 ASSERT_EQ(2u, caller()->pc()->GetReceivers().size()); in TEST_F()
1116 ASSERT_EQ(2u, callee()->pc()->GetReceivers().size()); in TEST_F()
1118 ASSERT_EQ(caller()->pc()->GetSenders()[0]->dtls_transport(), in TEST_F()
1119 caller()->pc()->GetSenders()[1]->dtls_transport()); in TEST_F()
1130 caller()->AddAudioTrack(); in TEST_F()
1131 caller()->AddVideoTrack(); in TEST_F()
1132 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
1134 auto callee_receivers = callee()->pc()->GetReceivers(); in TEST_F()
1136 EXPECT_TRUE(callee_receivers[0]->stream_ids().empty()); in TEST_F()
1137 EXPECT_TRUE(callee_receivers[1]->stream_ids().empty()); in TEST_F()
1143 caller()->AddAudioTrack(); in TEST_F()
1144 caller()->AddVideoTrack(); in TEST_F()
1145 callee()->SetReceivedSdpMunger(RemoveSsrcsAndMsids); in TEST_F()
1146 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
1148 auto callee_receivers = callee()->pc()->GetReceivers(); in TEST_F()
1150 ASSERT_EQ(1u, callee_receivers[0]->stream_ids().size()); in TEST_F()
1151 ASSERT_EQ(1u, callee_receivers[1]->stream_ids().size()); in TEST_F()
1152 EXPECT_EQ(callee_receivers[0]->stream_ids()[0], in TEST_F()
1153 callee_receivers[1]->stream_ids()[0]); in TEST_F()
1154 EXPECT_EQ(callee_receivers[0]->streams()[0], in TEST_F()
1155 callee_receivers[1]->streams()[0]); in TEST_F()
1158 // Test that if two video tracks are sent (from caller to callee, in this test),
1159 // they're transmitted correctly end-to-end.
1163 // Add one audio/video stream, and one video-only stream. in TEST_P()
1164 caller()->AddAudioVideoTracks(); in TEST_P()
1165 caller()->AddVideoTrack(); in TEST_P()
1166 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1168 ASSERT_EQ(3u, callee()->pc()->GetReceivers().size()); in TEST_P()
1177 for (cricket::ContentInfo& content : desc->contents()) { in MakeSpecCompliantMaxBundleOffer()
1185 for (cricket::TransportInfo& transport : desc->transport_infos()) { in MakeSpecCompliantMaxBundleOffer()
1198 // "a=bundle-only", omitting "a=fingerprint", "a=setup", "a=ice-ufrag" and
1199 // "a=ice-pwd" for all but the audio "m=" section, negotiation still completes
1201 // TODO(deadbeef): Update this test to also omit "a=rtcp-mux", once that works.
1203 // standards-compliant SDP.
1208 caller()->AddAudioVideoTracks(); in TEST_P()
1209 callee()->AddAudioVideoTracks(); in TEST_P()
1210 // Do the equivalent of setting the port to 0, adding a=bundle-only, and in TEST_P()
1211 // removing a=ice-ufrag, a=ice-pwd, a=fingerprint and a=setup from all in TEST_P()
1213 callee()->SetReceivedSdpMunger(MakeSpecCompliantMaxBundleOffer); in TEST_P()
1214 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1228 caller()->AddAudioTrack(); in TEST_P()
1229 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1232 // Get the audio output level stats. Note that the level is not available in TEST_P()
1234 EXPECT_TRUE_WAIT(callee()->OldGetStats()->AudioOutputLevel() > 0, in TEST_P()
1245 caller()->AddAudioTrack(); in TEST_P()
1246 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1249 // Get the audio input level stats. The level should be available very in TEST_P()
1251 EXPECT_TRUE_WAIT(caller()->OldGetStats()->AudioInputLevel() > 0, in TEST_P()
1255 // Test that we can get incoming byte counts from both audio and video tracks.
1259 caller()->AddAudioVideoTracks(); in TEST_P()
1261 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1268 // Get a handle to the remote tracks created, so they can be used as GetStats in TEST_P()
1270 for (const auto& receiver : callee()->pc()->GetReceivers()) { in TEST_P()
1274 callee()->OldGetStatsForTrack(receiver->track().get())->BytesReceived(), in TEST_P()
1279 // Test that we can get outgoing byte counts from both audio and video tracks.
1283 auto audio_track = caller()->CreateLocalAudioTrack(); in TEST_P()
1284 auto video_track = caller()->CreateLocalVideoTrack(); in TEST_P()
1285 caller()->AddTrack(audio_track); in TEST_P()
1286 caller()->AddTrack(video_track); in TEST_P()
1288 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1296 EXPECT_GT(caller()->OldGetStatsForTrack(audio_track.get())->BytesSent(), 0); in TEST_P()
1297 EXPECT_GT(caller()->OldGetStatsForTrack(video_track.get())->BytesSent(), 0); in TEST_P()
1307 auto audio_sender_1 = caller()->AddAudioTrack(); in TEST_F()
1308 auto video_sender_1 = caller()->AddVideoTrack(); in TEST_F()
1309 auto audio_sender_2 = caller()->AddAudioTrack(); in TEST_F()
1310 auto video_sender_2 = caller()->AddVideoTrack(); in TEST_F()
1311 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
1319 audio_sender_1->track()->id(), video_sender_1->track()->id(), in TEST_F()
1320 audio_sender_2->track()->id(), video_sender_2->track()->id()}; in TEST_F()
1322 auto caller_stats = caller()->OldGetStats(); in TEST_F()
1323 EXPECT_THAT(caller_stats->TrackIds(), UnorderedElementsAreArray(track_ids)); in TEST_F()
1324 auto callee_stats = callee()->OldGetStats(); in TEST_F()
1325 EXPECT_THAT(callee_stats->TrackIds(), UnorderedElementsAreArray(track_ids)); in TEST_F()
1334 auto audio_sender_1 = caller()->AddAudioTrack(); in TEST_P()
1335 auto video_sender_1 = caller()->AddVideoTrack(); in TEST_P()
1336 auto audio_sender_2 = caller()->AddAudioTrack(); in TEST_P()
1337 auto video_sender_2 = caller()->AddVideoTrack(); in TEST_P()
1338 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1346 audio_sender_1->track()->id(), video_sender_1->track()->id(), in TEST_P()
1347 audio_sender_2->track()->id(), video_sender_2->track()->id()}; in TEST_P()
1350 caller()->NewGetStats(); in TEST_P()
1353 caller_report->GetStatsOfType<webrtc::RTCOutboundRTPStreamStats>(); in TEST_P()
1357 ASSERT_TRUE(stat->bytes_sent.is_defined()); in TEST_P()
1358 EXPECT_LT(0u, *stat->bytes_sent); in TEST_P()
1359 if (*stat->kind == "video") { in TEST_P()
1360 ASSERT_TRUE(stat->key_frames_encoded.is_defined()); in TEST_P()
1361 EXPECT_GT(*stat->key_frames_encoded, 0u); in TEST_P()
1362 ASSERT_TRUE(stat->frames_encoded.is_defined()); in TEST_P()
1363 EXPECT_GE(*stat->frames_encoded, *stat->key_frames_encoded); in TEST_P()
1365 ASSERT_TRUE(stat->track_id.is_defined()); in TEST_P()
1367 caller_report->GetAs<webrtc::DEPRECATED_RTCMediaStreamTrackStats>( in TEST_P()
1368 *stat->track_id); in TEST_P()
1370 outbound_track_ids.push_back(*track_stat->track_identifier); in TEST_P()
1375 callee()->NewGetStats(); in TEST_P()
1378 callee_report->GetStatsOfType<webrtc::RTCInboundRTPStreamStats>(); in TEST_P()
1382 ASSERT_TRUE(stat->bytes_received.is_defined()); in TEST_P()
1383 EXPECT_LT(0u, *stat->bytes_received); in TEST_P()
1384 if (*stat->kind == "video") { in TEST_P()
1385 ASSERT_TRUE(stat->key_frames_decoded.is_defined()); in TEST_P()
1386 EXPECT_GT(*stat->key_frames_decoded, 0u); in TEST_P()
1387 ASSERT_TRUE(stat->frames_decoded.is_defined()); in TEST_P()
1388 EXPECT_GE(*stat->frames_decoded, *stat->key_frames_decoded); in TEST_P()
1390 ASSERT_TRUE(stat->track_id.is_defined()); in TEST_P()
1392 callee_report->GetAs<webrtc::DEPRECATED_RTCMediaStreamTrackStats>( in TEST_P()
1393 *stat->track_id); in TEST_P()
1395 inbound_track_ids.push_back(*track_stat->track_identifier); in TEST_P()
1400 // Test that we can get stats (using the new stats implementation) for
1407 caller()->AddAudioTrack(); in TEST_P()
1409 callee()->SetReceivedSdpMunger(RemoveSsrcsAndMsids); in TEST_P()
1410 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1419 callee()->NewGetStats(); in TEST_P()
1422 report->GetStatsOfType<webrtc::RTCInboundRTPStreamStats>(); in TEST_P()
1424 ASSERT_TRUE(inbound_stream_stats[0]->bytes_received.is_defined()); in TEST_P()
1425 ASSERT_GT(*inbound_stream_stats[0]->bytes_received, 0U); in TEST_P()
1426 ASSERT_TRUE(inbound_stream_stats[0]->track_id.is_defined()); in TEST_P()
1434 caller()->AddAudioTrack(); in TEST_P()
1436 callee()->SetReceivedSdpMunger(RemoveSsrcsAndMsids); in TEST_P()
1437 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1446 EXPECT_TRUE_WAIT(callee()->OldGetStats()->BytesReceived() > 0, in TEST_P()
1450 // Test that we can successfully get the media related stats (audio level
1456 caller()->AddAudioVideoTracks(); in TEST_P()
1458 callee()->SetReceivedSdpMunger(RemoveSsrcsAndMsids); in TEST_P()
1459 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1467 callee()->NewGetStats(); in TEST_P()
1471 report->GetStatsOfType<webrtc::DEPRECATED_RTCMediaStreamTrackStats>(); in TEST_P()
1474 EXPECT_TRUE(media_stats[audio_index]->audio_level.is_defined()); in TEST_P()
1479 for (ContentInfo& content : desc->contents()) { in ModifySsrcs()
1481 content.media_description()->mutable_streams()) { in ModifySsrcs()
1508 caller()->AddAudioTrack(); in TEST_P()
1511 callee()->SetReceivedSdpMunger(RemoveSsrcsAndMsids); in TEST_P()
1512 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1523 callee()->NewGetStats(); in TEST_P()
1526 report->GetStatsOfType<webrtc::DEPRECATED_RTCMediaStreamTrackStats>(); in TEST_P()
1528 ASSERT_TRUE(track_stats[0]->total_samples_received.is_defined()); in TEST_P()
1529 ASSERT_GT(*track_stats[0]->total_samples_received, 0U); in TEST_P()
1530 // uint64_t prev_samples_received = *track_stats[0]->total_samples_received; in TEST_P()
1532 // Create a new offer and munge it to cause the caller to use a new SSRC. in TEST_P()
1533 caller()->SetGeneratedSdpMunger(ModifySsrcs); in TEST_P()
1534 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1544 report = callee()->NewGetStats(); in TEST_P()
1547 report->GetStatsOfType<webrtc::DEPRECATED_RTCMediaStreamTrackStats>(); in TEST_P()
1549 ASSERT_TRUE(track_stats[0]->total_samples_received.is_defined()); in TEST_P()
1554 // EXPECT_GT(*track_stats[0]->total_samples_received, prev_samples_received); in TEST_P()
1561 ASSERT_TRUE(track_stats[0]->concealed_samples.is_defined()); in TEST_P()
1562 EXPECT_LT(*track_stats[0]->concealed_samples, in TEST_P()
1563 *track_stats[0]->total_samples_received * in TEST_P()
1572 // report->GetStatsOfType<webrtc::RTCInboundRTPStreamStats>(); in TEST_P()
1585 caller()->AddAudioVideoTracks(); in TEST_P()
1586 callee()->AddAudioVideoTracks(); in TEST_P()
1587 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1601 caller()->AddAudioVideoTracks(); in TEST_P()
1602 callee()->AddAudioVideoTracks(); in TEST_P()
1603 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1606 caller()->OldGetStats()->DtlsCipher(), rtc::KT_DEFAULT), in TEST_P()
1609 caller()->OldGetStats()->SrtpCipher(), kDefaultTimeout); in TEST_P()
1623 caller()->AddAudioVideoTracks(); in TEST_P()
1624 callee()->AddAudioVideoTracks(); in TEST_P()
1625 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1628 caller()->OldGetStats()->DtlsCipher(), rtc::KT_DEFAULT), in TEST_P()
1631 caller()->OldGetStats()->SrtpCipher(), kDefaultTimeout); in TEST_P()
1638 // Test that DTLS 1.0 can be used if the caller supports DTLS 1.2 and the
1650 caller()->AddAudioVideoTracks(); in TEST_P()
1651 callee()->AddAudioVideoTracks(); in TEST_P()
1652 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1659 // Test that DTLS 1.0 can be used if the caller only supports DTLS 1.0 and the
1671 caller()->AddAudioVideoTracks(); in TEST_P()
1672 callee()->AddAudioVideoTracks(); in TEST_P()
1673 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1716 // Test that a non-GCM cipher is used if both sides only support non-GCM.
1726 // Test that a GCM cipher is used if both ends support it and non-GCM is
1737 // Verify that media can be transmitted end-to-end when GCM crypto suites are
1750 caller()->AddAudioVideoTracks(); in TEST_P()
1751 callee()->AddAudioVideoTracks(); in TEST_P()
1752 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1765 caller()->AddAudioVideoTracks(); in TEST_P()
1766 callee()->AddAudioVideoTracks(); in TEST_P()
1767 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1770 caller()->ice_gathering_state(), kMaxWaitForFramesMs); in TEST_P()
1772 callee()->ice_gathering_state(), kMaxWaitForFramesMs); in TEST_P()
1779 caller()->ice_connection_state(), kDefaultTimeout); in TEST_P()
1781 callee()->ice_connection_state(), kDefaultTimeout); in TEST_P()
1818 caller()->SetRemoteAsyncResolver(&callee_async_resolver); in TEST_P()
1819 callee()->SetRemoteAsyncResolver(&caller_async_resolver); in TEST_P()
1822 caller()->SetMdnsResponder( in TEST_P()
1824 callee()->SetMdnsResponder( in TEST_P()
1830 caller()->AddAudioVideoTracks(); in TEST_P()
1831 callee()->AddAudioVideoTracks(); in TEST_P()
1832 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1835 caller()->ice_connection_state(), kDefaultTimeout); in TEST_P()
1837 callee()->ice_connection_state(), kDefaultTimeout); in TEST_P()
1853 : PeerConnectionIntegrationBaseTest(std::get<0>(GetParam())) { in PeerConnectionIntegrationIceStatesTest()
1854 port_allocator_flags_ = std::get<1>(std::get<1>(GetParam())); in PeerConnectionIntegrationIceStatesTest()
1891 caller()->network_manager()->RemoveInterface(kDefaultLocalAddress); in SetUpNetworkInterfaces()
1892 callee()->network_manager()->RemoveInterface(kDefaultLocalAddress); in SetUpNetworkInterfaces()
1896 caller()->network_manager()->AddInterface(caller_address); in SetUpNetworkInterfaces()
1899 callee()->network_manager()->AddInterface(callee_address); in SetUpNetworkInterfaces()
1916 // Tests that if the connection doesn't get set up properly we eventually reach
1920 // Block connections to/from the caller and wait for ICE to become in TEST_P()
1923 firewall()->AddRule(false, rtc::FP_ANY, rtc::FD_ANY, caller_address); in TEST_P()
1930 caller()->AddAudioVideoTracks(); in TEST_P()
1931 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1938 caller()->standardized_ice_connection_state(), in TEST_P()
1957 caller()->AddAudioVideoTracks(); in TEST_P()
1958 callee()->AddAudioVideoTracks(); in TEST_P()
1959 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
1963 caller()->ice_connection_state(), kDefaultTimeout); in TEST_P()
1965 callee()->ice_connection_state(), kDefaultTimeout); in TEST_P()
2016 // During the call, the caller restarts ICE and the test verifies that
2023 caller()->AddAudioVideoTracks(); in TEST_P()
2024 callee()->AddAudioVideoTracks(); in TEST_P()
2025 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2028 caller()->ice_connection_state(), kMaxWaitForFramesMs); in TEST_P()
2030 callee()->ice_connection_state(), kMaxWaitForFramesMs); in TEST_P()
2032 // To verify that the ICE restart actually occurs, get in TEST_P()
2036 caller()->pc()->local_description()->candidates(0); in TEST_P()
2038 callee()->pc()->local_description()->candidates(0); in TEST_P()
2039 ASSERT_GT(audio_candidates_caller->count(), 0u); in TEST_P()
2040 ASSERT_GT(audio_candidates_callee->count(), 0u); in TEST_P()
2043 audio_candidates_caller->at(0)->ToString(&caller_candidate_pre_restart)); in TEST_P()
2046 audio_candidates_callee->at(0)->ToString(&callee_candidate_pre_restart)); in TEST_P()
2048 caller()->pc()->local_description()->description(); in TEST_P()
2050 desc->transport_infos()[0].description.ice_ufrag; in TEST_P()
2051 desc = callee()->pc()->local_description()->description(); in TEST_P()
2053 desc->transport_infos()[0].description.ice_ufrag; in TEST_P()
2055 EXPECT_EQ(caller()->ice_candidate_pair_change_history().size(), 1u); in TEST_P()
2056 // Have the caller initiate an ICE restart. in TEST_P()
2057 caller()->SetOfferAnswerOptions(IceRestartOfferAnswerOptions()); in TEST_P()
2058 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2061 caller()->ice_connection_state(), kMaxWaitForFramesMs); in TEST_P()
2063 callee()->ice_connection_state(), kMaxWaitForFramesMs); in TEST_P()
2066 audio_candidates_caller = caller()->pc()->local_description()->candidates(0); in TEST_P()
2067 audio_candidates_callee = callee()->pc()->local_description()->candidates(0); in TEST_P()
2068 ASSERT_GT(audio_candidates_caller->count(), 0u); in TEST_P()
2069 ASSERT_GT(audio_candidates_callee->count(), 0u); in TEST_P()
2072 audio_candidates_caller->at(0)->ToString(&caller_candidate_post_restart)); in TEST_P()
2075 audio_candidates_callee->at(0)->ToString(&callee_candidate_post_restart)); in TEST_P()
2076 desc = caller()->pc()->local_description()->description(); in TEST_P()
2078 desc->transport_infos()[0].description.ice_ufrag; in TEST_P()
2079 desc = callee()->pc()->local_description()->description(); in TEST_P()
2081 desc->transport_infos()[0].description.ice_ufrag; in TEST_P()
2087 EXPECT_GT(caller()->ice_candidate_pair_change_history().size(), 1u); in TEST_P()
2095 // Verify that audio/video can be received end-to-end when ICE renomination is
2104 caller()->AddAudioVideoTracks(); in TEST_P()
2105 callee()->AddAudioVideoTracks(); in TEST_P()
2106 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2110 caller()->pc()->local_description()->description(); in TEST_P()
2111 for (const cricket::TransportInfo& info : desc->transport_infos()) { in TEST_P()
2114 desc = callee()->pc()->local_description()->description(); in TEST_P()
2115 for (const cricket::TransportInfo& info : desc->transport_infos()) { in TEST_P()
2143 caller()->AddAudioTrack(); in TEST_P()
2144 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2147 caller()->ice_connection_state(), kDefaultTimeout); in TEST_P()
2149 caller()->clear_ice_connection_state_history(); in TEST_P()
2151 caller()->AddVideoTrack(); in TEST_P()
2152 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2155 EXPECT_EQ(0u, caller()->ice_connection_state_history().size()); in TEST_P()
2159 // renegotiates setting the video m-line to "port 0", then later renegotiates
2166 // Do initial negotiation, only sending media from the caller. Will result in in TEST_P()
2168 caller()->AddAudioVideoTracks(); in TEST_P()
2169 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2177 callee()->SetOfferAnswerOptions(options); in TEST_P()
2179 callee()->SetRemoteOfferHandler([this] { in TEST_P()
2181 ->GetFirstTransceiverOfType(cricket::MEDIA_TYPE_VIDEO) in TEST_P()
2182 ->StopInternal(); in TEST_P()
2185 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2189 callee()->pc()->local_description()->description()); in TEST_P()
2191 ASSERT_TRUE(answer_video_content->rejected); in TEST_P()
2194 // end-to-end, also adding media stream to callee. in TEST_P()
2198 callee()->SetOfferAnswerOptions(options); in TEST_P()
2200 // The caller's transceiver is stopped, so we need to add another track. in TEST_P()
2202 caller()->GetFirstTransceiverOfType(cricket::MEDIA_TYPE_VIDEO); in TEST_P()
2203 EXPECT_EQ(nullptr, caller_transceiver.get()); in TEST_P()
2204 caller()->AddVideoTrack(); in TEST_P()
2206 callee()->AddVideoTrack(); in TEST_P()
2207 callee()->SetRemoteOfferHandler(nullptr); in TEST_P()
2208 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2211 // Verify the caller receives frames from the newly added stream, and the in TEST_P()
2212 // callee receives additional frames from the re-enabled video m= section. in TEST_P()
2220 // have a track, then set a track later, frames from the newly-set track are
2221 // received end-to-end.
2227 caller()->pc()->CreateSender("audio", "caller_stream"); in TEST_F()
2229 caller()->pc()->CreateSender("video", "caller_stream"); in TEST_F()
2231 callee()->pc()->CreateSender("audio", "callee_stream"); in TEST_F()
2233 callee()->pc()->CreateSender("video", "callee_stream"); in TEST_F()
2234 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
2238 caller()->ice_connection_state(), kMaxWaitForFramesMs); in TEST_F()
2240 callee()->ice_connection_state(), kMaxWaitForFramesMs); in TEST_F()
2243 caller_audio_sender->SetTrack(caller()->CreateLocalAudioTrack().get())); in TEST_F()
2245 caller_video_sender->SetTrack(caller()->CreateLocalVideoTrack().get())); in TEST_F()
2247 callee_audio_sender->SetTrack(callee()->CreateLocalAudioTrack().get())); in TEST_F()
2249 callee_video_sender->SetTrack(callee()->CreateLocalVideoTrack().get())); in TEST_F()
2256 // have a track, then set a track later, frames from the newly-set tracks are
2257 // received end-to-end.
2262 auto audio_result = caller()->pc()->AddTransceiver(cricket::MEDIA_TYPE_AUDIO); in TEST_F()
2264 auto caller_audio_sender = audio_result.MoveValue()->sender(); in TEST_F()
2265 auto video_result = caller()->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO); in TEST_F()
2267 auto caller_video_sender = video_result.MoveValue()->sender(); in TEST_F()
2268 callee()->SetRemoteOfferHandler([this] { in TEST_F()
2269 ASSERT_EQ(2u, callee()->pc()->GetTransceivers().size()); in TEST_F()
2270 callee()->pc()->GetTransceivers()[0]->SetDirectionWithError( in TEST_F()
2272 callee()->pc()->GetTransceivers()[1]->SetDirectionWithError( in TEST_F()
2275 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
2279 caller()->ice_connection_state(), kMaxWaitForFramesMs); in TEST_F()
2281 callee()->ice_connection_state(), kMaxWaitForFramesMs); in TEST_F()
2283 auto callee_audio_sender = callee()->pc()->GetSenders()[0]; in TEST_F()
2284 auto callee_video_sender = callee()->pc()->GetSenders()[1]; in TEST_F()
2286 caller_audio_sender->SetTrack(caller()->CreateLocalAudioTrack().get())); in TEST_F()
2288 caller_video_sender->SetTrack(caller()->CreateLocalVideoTrack().get())); in TEST_F()
2290 callee_audio_sender->SetTrack(callee()->CreateLocalAudioTrack().get())); in TEST_F()
2292 callee_video_sender->SetTrack(callee()->CreateLocalVideoTrack().get())); in TEST_F()
2299 // and sent end-to-end. For this particular test, it's simply echoed back
2300 // from the caller to the callee, rather than being forwarded to a third
2305 // Just send a video track from the caller. in TEST_F()
2306 caller()->AddVideoTrack(); in TEST_F()
2307 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
2309 ASSERT_EQ(1U, callee()->remote_streams()->count()); in TEST_F()
2313 callee()->pc()->AddStream(callee()->remote_streams()->at(0)); in TEST_F()
2314 callee()->CreateAndSetAndSignalOffer(); in TEST_F()
2325 // Test that we achieve the expected end-to-end connection time, using a
2327 // We use a TURN<->TURN connection because this is usually the quickest to
2329 // and can start sending media before we get a STUN response.
2336 // using TURN<->TURN pair, and DTLS exchange is 4 packets,
2368 turn_server_1->set_enable_permission_checks(false); in TEST_P()
2371 turn_server_2->set_enable_permission_checks(false); in TEST_P()
2397 virtual_socket_server()->set_delay_mean(media_hop_delay_ms); in TEST_P()
2398 virtual_socket_server()->UpdateDelayDistribution(); in TEST_P()
2405 caller()->SetOfferAnswerOptions(options); in TEST_P()
2406 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2419 caller()->AddAudioTrack(); in TEST_P()
2423 caller()->NewGetStats(); in TEST_P()
2426 first_report->GetStatsOfType<webrtc::RTCLocalIceCandidateStats>(); in TEST_P()
2429 // Create an offer at the caller and set it as remote description on the in TEST_P()
2431 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2434 caller()->NewGetStats(); in TEST_P()
2437 second_report->GetStatsOfType<webrtc::RTCLocalIceCandidateStats>(); in TEST_P()
2442 EXPECT_EQ(first_report->timestamp_us(), second_report->timestamp_us()); in TEST_P()
2449 caller()->AddAudioTrack(); in TEST_P()
2453 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2454 ASSERT_TRUE_SIMULATED_WAIT(caller()->IceGatheringStateComplete(), in TEST_P()
2459 caller()->NewGetStats(); in TEST_P()
2462 first_report->GetStatsOfType<webrtc::RTCRemoteIceCandidateStats>(); in TEST_P()
2467 caller()->pc()->AddIceCandidate( in TEST_P()
2478 caller()->NewGetStats(); in TEST_P()
2481 second_report->GetStatsOfType<webrtc::RTCRemoteIceCandidateStats>(); in TEST_P()
2486 EXPECT_EQ(first_report->timestamp_us(), second_report->timestamp_us()); in TEST_P()
2493 // Note that turnport_unittest.cc contains more detailed, lower-level tests.
2537 caller()->SetOfferAnswerOptions(options); in TEST_P()
2538 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2546 // send media between the caller and the callee.
2574 caller()->AddAudioVideoTracks(); in TEST_P()
2575 callee()->AddAudioVideoTracks(); in TEST_P()
2576 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2579 callee()->ice_connection_state(), kMaxWaitForFramesMs); in TEST_P()
2590 // contains more detailed, lower-level tests.
2597 // Enable TCP-TLS for the fake turn server. We need to pass in 88.88.88.0 so in TEST_P()
2617 // Get a copy to the pointer so we can verify calls later. in TEST_P()
2620 client_1_cert_verifier->verify_certificate_ = true; in TEST_P()
2623 client_2_cert_verifier->verify_certificate_ = true; in TEST_P()
2643 caller()->SetOfferAnswerOptions(options); in TEST_P()
2644 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2647 EXPECT_GT(client_1_cert_verifier->call_count_, 0u); in TEST_P()
2648 EXPECT_GT(client_2_cert_verifier->call_count_, 0u); in TEST_P()
2659 auto wrapper = CreatePeerConnectionWrapper("Caller", nullptr, &default_config, in TEST_P()
2664 wrapper->CreateDataChannel(); in TEST_P()
2666 wrapper->pc()->SetLocalDescription(observer.get(), in TEST_P()
2667 wrapper->CreateOfferAndWait().release()); in TEST_P()
2670 // Test that audio and video flow end-to-end when codec names don't use the
2676 // fact that code at some layers was doing case-insensitive comparisons and
2681 caller()->AddAudioVideoTracks(); in TEST_P()
2682 callee()->AddAudioVideoTracks(); in TEST_P()
2685 // casing of the caller's generated offer. in TEST_P()
2686 caller()->SetGeneratedSdpMunger([](cricket::SessionDescription* description) { in TEST_P()
2690 auto audio_codecs = audio->codecs(); in TEST_P()
2698 audio->set_codecs(audio_codecs); in TEST_P()
2703 auto video_codecs = video->codecs(); in TEST_P()
2711 video->set_codecs(video_codecs); in TEST_P()
2714 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2717 // Verify frames are still received end-to-end. in TEST_P()
2726 caller()->AddAudioTrack(); in TEST_P()
2727 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2733 ASSERT_EQ(callee()->pc()->GetReceivers().size(), 1u); in TEST_P()
2734 auto receiver = callee()->pc()->GetReceivers()[0]; in TEST_P()
2735 ASSERT_EQ(receiver->media_type(), cricket::MEDIA_TYPE_AUDIO); in TEST_P()
2736 auto sources = receiver->GetSources(); in TEST_P()
2737 ASSERT_GT(receiver->GetParameters().encodings.size(), 0u); in TEST_P()
2738 EXPECT_EQ(receiver->GetParameters().encodings[0].ssrc, in TEST_P()
2746 caller()->AddVideoTrack(); in TEST_P()
2747 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2753 ASSERT_EQ(callee()->pc()->GetReceivers().size(), 1u); in TEST_P()
2754 auto receiver = callee()->pc()->GetReceivers()[0]; in TEST_P()
2755 ASSERT_EQ(receiver->media_type(), cricket::MEDIA_TYPE_VIDEO); in TEST_P()
2756 auto sources = receiver->GetSources(); in TEST_P()
2757 ASSERT_GT(receiver->GetParameters().encodings.size(), 0u); in TEST_P()
2759 EXPECT_EQ(receiver->GetParameters().encodings[0].ssrc, in TEST_P()
2766 // flow end-to-end.
2777 caller()->CreateLocalAudioTrack(); in TEST_F()
2779 caller()->AddTrack(track, {"stream_1"}); in TEST_F()
2780 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
2788 caller()->pc()->RemoveTrackOrError(sender); in TEST_F()
2789 sender = caller()->AddTrack(track, {"stream_2"}); in TEST_F()
2790 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
2810 EXPECT_TRUE(caller()->pc()->StartRtcEventLog( in TEST_P()
2813 caller()->AddAudioVideoTracks(); in TEST_P()
2814 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2828 caller()->AddAudioVideoTracks(); in TEST_P()
2829 callee()->AddAudioVideoTracks(); in TEST_P()
2830 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2832 // Wait for all candidates to be gathered on both the caller and callee. in TEST_P()
2834 caller()->ice_gathering_state(), kDefaultTimeout); in TEST_P()
2836 callee()->ice_gathering_state(), kDefaultTimeout); in TEST_P()
2840 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2853 // start, then later enable it. This may be useful, for example, if the caller
2860 // Set up audio-only call where audio playout is disabled on caller's side. in TEST_P()
2861 caller()->pc()->SetAudioPlayout(false); in TEST_P()
2862 caller()->AddAudioTrack(); in TEST_P()
2863 callee()->AddAudioTrack(); in TEST_P()
2864 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2869 // Since audio playout is disabled, the caller shouldn't have received in TEST_P()
2871 EXPECT_EQ(0, caller()->audio_frames_received()); in TEST_P()
2874 ASSERT_GT(callee()->audio_frames_received(), 0); in TEST_P()
2877 caller()->pc()->SetAudioPlayout(true); in TEST_P()
2884 auto report = pc->NewGetStats(); in GetAudioEnergyStat()
2886 report->GetStatsOfType<webrtc::DEPRECATED_RTCMediaStreamTrackStats>(); in GetAudioEnergyStat()
2890 if (track_stats->remote_source.is_defined() && in GetAudioEnergyStat()
2891 *track_stats->remote_source) { in GetAudioEnergyStat()
2897 if (!remote_track_stats->total_audio_energy.is_defined()) { in GetAudioEnergyStat()
2900 return *remote_track_stats->total_audio_energy; in GetAudioEnergyStat()
2910 // Set up audio-only call where playout is disabled but audio-processing is in TEST_P()
2912 caller()->AddAudioTrack(); in TEST_P()
2913 callee()->AddAudioTrack(); in TEST_P()
2914 caller()->pc()->SetAudioPlayout(false); in TEST_P()
2916 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2920 EXPECT_TRUE_WAIT(GetAudioEnergyStat(caller()) > 0, kMaxWaitForFramesMs); in TEST_P()
2926 // start, then later enable it. This may be useful, for example, if the caller
2933 // Set up audio-only call where audio recording is disabled on caller's side. in TEST_P()
2934 caller()->pc()->SetAudioRecording(false); in TEST_P()
2935 caller()->AddAudioTrack(); in TEST_P()
2936 callee()->AddAudioTrack(); in TEST_P()
2937 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2942 // Since caller has disabled audio recording, the callee shouldn't have in TEST_P()
2944 EXPECT_EQ(0, callee()->audio_frames_received()); in TEST_P()
2945 // As a sanity check, make sure the caller did still see frames on its in TEST_P()
2947 ASSERT_GT(caller()->audio_frames_received(), 0); in TEST_P()
2950 caller()->pc()->SetAudioRecording(true); in TEST_P()
2962 caller()->SetOfferAnswerOptions(options); in TEST_P()
2963 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
2965 ASSERT_NE(nullptr, caller()->event_log_factory()); in TEST_P()
2966 ASSERT_NE(nullptr, callee()->event_log_factory()); in TEST_P()
2968 caller()->event_log_factory()->last_log_created(); in TEST_P()
2970 callee()->event_log_factory()->last_log_created(); in TEST_P()
2973 int caller_ice_config_count = caller_event_log->GetEventCount( in TEST_P()
2975 int caller_ice_event_count = caller_event_log->GetEventCount( in TEST_P()
2977 int callee_ice_config_count = callee_event_log->GetEventCount( in TEST_P()
2979 int callee_ice_event_count = callee_event_log->GetEventCount( in TEST_P()
3016 caller()->AddAudioVideoTracks(); in TEST_P()
3017 callee()->AddAudioVideoTracks(); in TEST_P()
3018 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
3025 caller()->ice_connection_state(), kDefaultTimeout); in TEST_P()
3027 callee()->ice_connection_state(), kDefaultTimeout); in TEST_P()
3033 caller()->last_candidate_gathered().type()); in TEST_P()
3035 callee()->last_candidate_gathered().type()); in TEST_P()
3037 // Loosen the caller's candidate filter. in TEST_P()
3038 caller_config = caller()->pc()->GetConfiguration(); in TEST_P()
3040 caller()->pc()->SetConfiguration(caller_config); in TEST_P()
3043 caller()->last_candidate_gathered().type(), kDefaultTimeout); in TEST_P()
3046 callee_config = callee()->pc()->GetConfiguration(); in TEST_P()
3048 callee()->pc()->SetConfiguration(callee_config); in TEST_P()
3050 callee()->last_candidate_gathered().type(), kDefaultTimeout); in TEST_P()
3054 std::string caller_ufrag_pre_offer = caller() in TEST_P()
3055 ->pc() in TEST_P()
3056 ->local_description() in TEST_P()
3057 ->description() in TEST_P()
3058 ->transport_infos()[0] in TEST_P()
3060 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
3061 std::string caller_ufrag_post_offer = caller() in TEST_P()
3062 ->pc() in TEST_P()
3063 ->local_description() in TEST_P()
3064 ->description() in TEST_P()
3065 ->transport_infos()[0] in TEST_P()
3097 caller()->AddAudioVideoTracks(); in TEST_P()
3098 callee()->AddAudioVideoTracks(); in TEST_P()
3099 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
3101 EXPECT_EQ_WAIT(401, caller()->error_event().error_code, kDefaultTimeout); in TEST_P()
3102 EXPECT_EQ("Unauthorized", caller()->error_event().error_text); in TEST_P()
3103 EXPECT_EQ("turn:88.88.88.0:3478?transport=udp", caller()->error_event().url); in TEST_P()
3104 EXPECT_NE(caller()->error_event().address, ""); in TEST_P()
3128 caller()->AddAudioVideoTracks(); in TEST_P()
3129 callee()->AddAudioVideoTracks(); in TEST_P()
3130 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
3132 EXPECT_EQ_WAIT(701, caller()->error_event().error_code, kDefaultTimeout); in TEST_P()
3133 EXPECT_EQ(caller()->error_event().address, ""); in TEST_P()
3143 caller()->AddAudioTrack(); in TEST_F()
3144 callee()->AddAudioTrack(); in TEST_F()
3145 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
3151 caller()->AddVideoTrack(); in TEST_F()
3152 callee()->AddVideoTrack(); in TEST_F()
3154 callee()->pc()->SetLocalDescription(observer.get(), in TEST_F()
3155 callee()->CreateOfferAndWait().release()); in TEST_F()
3156 EXPECT_TRUE_WAIT(observer->called(), kDefaultTimeout); in TEST_F()
3157 caller()->CreateAndSetAndSignalOffer(); // Implicit rollback. in TEST_F()
3172 callee()->pc()->SetLocalDescription(sld_observer.get(), in TEST_F()
3173 callee()->CreateOfferAndWait().release()); in TEST_F()
3174 EXPECT_TRUE_WAIT(sld_observer->called(), kDefaultTimeout); in TEST_F()
3175 EXPECT_EQ(sld_observer->error(), ""); in TEST_F()
3179 callee()->pc()->SetRemoteDescription( in TEST_F()
3180 srd_observer.get(), caller()->CreateOfferAndWait().release()); in TEST_F()
3181 EXPECT_TRUE_WAIT(srd_observer->called(), kDefaultTimeout); in TEST_F()
3182 EXPECT_EQ(srd_observer->error(), ""); in TEST_F()
3184 EXPECT_THAT(callee()->peer_connection_signaling_state_history(), in TEST_F()
3194 caller()->AddVideoTrack(); in TEST_F()
3195 callee()->AddVideoTrack(); in TEST_F()
3199 auto codecs = video->codecs(); in TEST_F()
3210 video->set_codecs(codecs); in TEST_F()
3213 caller()->SetGeneratedSdpMunger(munger); in TEST_F()
3215 caller()->SetReceivedSdpMunger(munger); in TEST_F()
3216 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
3219 caller()->SetGeneratedSdpMunger([](cricket::SessionDescription* desc) { in TEST_F()
3222 for (auto&& codec : video->codecs()) { in TEST_F()
3230 caller()->CreateOfferAndWait(); in TEST_F()
3239 caller()->pc()->AddTransceiver(cricket::MEDIA_TYPE_AUDIO); in TEST_F()
3241 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
3243 int current_size = caller()->pc()->GetTransceivers().size(); in TEST_F()
3244 // Add more tracks until we get close to having issues. in TEST_F()
3246 // - 32 tracks on android_arm64_rel and android_arm_dbg bots in TEST_F()
3247 // - 16 tracks on android_arm_dbg (flaky) in TEST_F()
3251 caller()->pc()->AddTransceiver(cricket::MEDIA_TYPE_AUDIO); in TEST_F()
3253 current_size = caller()->pc()->GetTransceivers().size(); in TEST_F()
3256 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
3259 auto elapsed_time_ms = rtc::TimeMillis() - start_time_ms; in TEST_F()
3273 caller()->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO); in TEST_F()
3275 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
3277 int current_size = caller()->pc()->GetTransceivers().size(); in TEST_F()
3278 // Add more tracks until we get close to having issues. in TEST_F()
3280 // - 96 on a Linux workstation in TEST_F()
3281 // - 64 at win_x86_more_configs and win_x64_msvc_dbg in TEST_F()
3282 // - 32 on android_arm64_rel and linux_dbg bots in TEST_F()
3283 // - 16 on Android 64 (Nexus 5x) in TEST_F()
3287 caller()->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO); in TEST_F()
3289 current_size = caller()->pc()->GetTransceivers().size(); in TEST_F()
3292 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
3295 auto elapsed_time_ms = rtc::TimeMillis() - start_time_ms; in TEST_F()
3309 caller()->AddAudioTrack(); in TEST_F()
3310 callee()->AddAudioTrack(); in TEST_F()
3311 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
3318 // Get the baseline numbers for audio_packets and audio_delay in TEST_F()
3320 caller()->StartWatchingDelayStats(); in TEST_F()
3321 callee()->StartWatchingDelayStats(); in TEST_F()
3323 int current_size = caller()->pc()->GetTransceivers().size(); in TEST_F()
3324 // Add more tracks until we get close to having issues. in TEST_F()
3329 caller()->pc()->AddTransceiver(cricket::MEDIA_TYPE_VIDEO); in TEST_F()
3331 current_size = caller()->pc()->GetTransceivers().size(); in TEST_F()
3334 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
3337 auto elapsed_time_ms = rtc::TimeMillis() - start_time_ms; in TEST_F()
3343 caller()->UpdateDelayStats("caller reception", current_size); in TEST_F()
3344 callee()->UpdateDelayStats("callee reception", current_size); in TEST_F()
3352 Values("WebRTC-FrameBuffer3/arm:FrameBuffer2/",
3353 "WebRTC-FrameBuffer3/arm:FrameBuffer3/",
3354 "WebRTC-FrameBuffer3/arm:SyncDecoding/")));
3360 Values("WebRTC-FrameBuffer3/arm:FrameBuffer2/",
3361 "WebRTC-FrameBuffer3/arm:FrameBuffer3/",
3362 "WebRTC-FrameBuffer3/arm:SyncDecoding/")));
3376 caller_semantics_(std::get<0>(GetParam())), in PeerConnectionIntegrationInteropTest()
3377 callee_semantics_(std::get<1>(GetParam())) {} in PeerConnectionIntegrationInteropTest()
3392 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
3399 auto audio_sender = caller()->AddAudioTrack(); in TEST_P()
3401 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
3406 auto receivers = callee()->pc()->GetReceivers(); in TEST_P()
3408 EXPECT_EQ(cricket::MEDIA_TYPE_AUDIO, receivers[0]->media_type()); in TEST_P()
3409 EXPECT_EQ(receivers[0]->track()->id(), audio_sender->track()->id()); in TEST_P()
3419 auto video_sender = caller()->AddVideoTrack(); in TEST_P()
3420 auto audio_sender = caller()->AddAudioTrack(); in TEST_P()
3422 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
3428 callee()->GetReceiversOfType(cricket::MEDIA_TYPE_AUDIO); in TEST_P()
3430 EXPECT_EQ(audio_receivers[0]->track()->id(), audio_sender->track()->id()); in TEST_P()
3432 callee()->GetReceiversOfType(cricket::MEDIA_TYPE_VIDEO); in TEST_P()
3434 EXPECT_EQ(video_receivers[0]->track()->id(), video_sender->track()->id()); in TEST_P()
3445 caller()->AddAudioVideoTracks(); in TEST_P()
3446 callee()->AddAudioVideoTracks(); in TEST_P()
3448 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
3460 caller()->AddAudioTrack(); in TEST_P()
3461 callee()->AddVideoTrack(); in TEST_P()
3463 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
3467 EXPECT_EQ(0u, caller()->GetReceiversOfType(cricket::MEDIA_TYPE_VIDEO).size()); in TEST_P()
3471 callee()->CreateAndSetAndSignalOffer(); in TEST_P()
3483 caller()->AddAudioVideoTracks(); in TEST_P()
3484 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
3487 caller()->ExpectCandidates(0); in TEST_P()
3488 callee()->ExpectCandidates(0); in TEST_P()
3489 caller()->AddAudioTrack(); in TEST_P()
3490 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
3498 caller()->pc()->AddTrack(caller()->CreateLocalAudioTrack(), {}).ok()); in TEST_P()
3515 auto first_sender = caller()->AddVideoTrack(); in TEST_F()
3516 caller()->AddVideoTrack(); in TEST_F()
3518 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
3523 auto receivers = callee()->pc()->GetReceivers(); in TEST_F()
3525 EXPECT_TRUE(receivers[0]->track()->enabled()); in TEST_F()
3526 EXPECT_EQ(first_sender->track()->id(), receivers[0]->track()->id()); in TEST_F()
3545 caller()->pc()->AddTransceiver(caller()->CreateLocalAudioTrack()); in TEST_F()
3549 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
3557 audio_transceiver->StopInternal(); in TEST_F()
3558 caller()->pc()->AddTransceiver(caller()->CreateLocalVideoTrack()); in TEST_F()
3560 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
3575 caller()->pc()->AddTransceiver(caller()->CreateLocalAudioTrack()); in TEST_F()
3579 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
3582 audio_transceiver->StopStandard(); in TEST_F()
3583 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
3585 ASSERT_EQ(0U, caller()->pc()->GetTransceivers().size()); in TEST_F()
3587 caller()->pc()->ice_gathering_state()); in TEST_F()
3588 EXPECT_THAT(caller()->ice_gathering_state_history(), in TEST_F()
3600 caller()->pc()->AddTransceiver(caller()->CreateLocalAudioTrack()); in TEST_F()
3604 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
3606 caller_transceiver->StopStandard(); in TEST_F()
3608 auto callee_transceiver = callee()->pc()->GetTransceivers()[0]; in TEST_F()
3609 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
3611 EXPECT_EQ(0U, caller()->pc()->GetTransceivers().size()); in TEST_F()
3612 EXPECT_EQ(0U, callee()->pc()->GetTransceivers().size()); in TEST_F()
3613 EXPECT_EQ(0U, caller()->pc()->GetSenders().size()); in TEST_F()
3614 EXPECT_EQ(0U, callee()->pc()->GetSenders().size()); in TEST_F()
3615 EXPECT_EQ(0U, caller()->pc()->GetReceivers().size()); in TEST_F()
3616 EXPECT_EQ(0U, callee()->pc()->GetReceivers().size()); in TEST_F()
3617 EXPECT_TRUE(caller_transceiver->stopped()); in TEST_F()
3618 EXPECT_TRUE(callee_transceiver->stopped()); in TEST_F()
3627 caller()->pc()->AddTransceiver(caller()->CreateLocalAudioTrack()); in TEST_F()
3631 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
3633 auto caller_track = audio_transceiver->receiver()->track(); in TEST_F()
3634 auto callee_track = callee()->pc()->GetReceivers()[0]->track(); in TEST_F()
3635 audio_transceiver->StopStandard(); in TEST_F()
3637 caller_track->state()); in TEST_F()
3638 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
3641 callee_track->state()); in TEST_F()
3650 caller()->pc()->AddTransceiver(caller()->CreateLocalVideoTrack()); in TEST_F()
3654 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
3656 auto caller_track = audio_transceiver->receiver()->track(); in TEST_F()
3657 auto callee_track = callee()->pc()->GetReceivers()[0]->track(); in TEST_F()
3658 audio_transceiver->StopStandard(); in TEST_F()
3660 caller_track->state()); in TEST_F()
3661 caller()->CreateAndSetAndSignalOffer(); in TEST_F()
3664 callee_track->state()); in TEST_F()
3671 // Add one-directional video, from caller to callee. in TEST_P()
3673 caller()->CreateLocalVideoTrack(); in TEST_P()
3674 auto sender = caller()->AddTrack(caller_track); in TEST_P()
3677 caller()->SetOfferAnswerOptions(options); in TEST_P()
3678 caller()->CreateAndSetAndSignalOffer(); in TEST_P()
3680 ASSERT_EQ(callee()->pc()->GetReceivers().size(), 1u); in TEST_P()
3686 sender->SetEncoderSelector(std::move(encoder_selector)); in TEST_P()