| 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 |
| 11 #include <memory> | 11 #include <memory> |
| 12 | 12 |
| 13 #include "webrtc/base/array_view.h" | 13 #include "webrtc/base/array_view.h" |
| 14 #include "webrtc/base/buffer.h" | 14 #include "webrtc/base/buffer.h" |
| 15 #include "webrtc/base/fakeclock.h" | 15 #include "webrtc/base/fakeclock.h" |
| 16 #include "webrtc/base/gunit.h" | 16 #include "webrtc/base/gunit.h" |
| 17 #include "webrtc/base/logging.h" | 17 #include "webrtc/base/logging.h" |
| 18 #include "webrtc/base/sslstreamadapter.h" | 18 #include "webrtc/base/sslstreamadapter.h" |
| 19 #include "webrtc/media/base/fakemediaengine.h" | 19 #include "webrtc/media/base/fakemediaengine.h" |
| 20 #include "webrtc/media/base/fakertp.h" | 20 #include "webrtc/media/base/fakertp.h" |
| 21 #include "webrtc/media/base/mediachannel.h" | 21 #include "webrtc/media/base/mediachannel.h" |
| 22 #include "webrtc/media/base/testutils.h" | 22 #include "webrtc/media/base/testutils.h" |
| 23 #include "webrtc/p2p/base/faketransportcontroller.h" | 23 #include "webrtc/p2p/base/faketransportcontroller.h" |
| 24 #include "webrtc/p2p/base/transportchannelimpl.h" |
| 24 #include "webrtc/pc/channel.h" | 25 #include "webrtc/pc/channel.h" |
| 25 | 26 |
| 26 #define MAYBE_SKIP_TEST(feature) \ | 27 #define MAYBE_SKIP_TEST(feature) \ |
| 27 if (!(rtc::SSLStreamAdapter::feature())) { \ | 28 if (!(rtc::SSLStreamAdapter::feature())) { \ |
| 28 LOG(LS_INFO) << "Feature disabled... skipping"; \ | 29 LOG(LS_INFO) << "Feature disabled... skipping"; \ |
| 29 return; \ | 30 return; \ |
| 30 } | 31 } |
| 31 | 32 |
| 32 using cricket::CA_OFFER; | 33 using cricket::CA_OFFER; |
| 33 using cricket::CA_PRANSWER; | 34 using cricket::CA_PRANSWER; |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 264 return true; | 265 return true; |
| 265 } | 266 } |
| 266 | 267 |
| 267 bool AddStream1(int id) { | 268 bool AddStream1(int id) { |
| 268 return channel1_->AddRecvStream(cricket::StreamParams::CreateLegacy(id)); | 269 return channel1_->AddRecvStream(cricket::StreamParams::CreateLegacy(id)); |
| 269 } | 270 } |
| 270 bool RemoveStream1(int id) { | 271 bool RemoveStream1(int id) { |
| 271 return channel1_->RemoveRecvStream(id); | 272 return channel1_->RemoveRecvStream(id); |
| 272 } | 273 } |
| 273 | 274 |
| 274 cricket::FakeTransport* GetTransport1() { | 275 std::vector<cricket::TransportChannelImpl*> GetChannels1() { |
| 275 std::string name = channel1_->content_name(); | 276 return transport_controller1_->channels_for_testing(); |
| 276 return network_thread_->Invoke<cricket::FakeTransport*>( | |
| 277 RTC_FROM_HERE, | |
| 278 [this, name] { return transport_controller1_->GetTransport_n(name); }); | |
| 279 } | 277 } |
| 280 cricket::FakeTransport* GetTransport2() { | 278 |
| 281 std::string name = channel2_->content_name(); | 279 std::vector<cricket::TransportChannelImpl*> GetChannels2() { |
| 282 return network_thread_->Invoke<cricket::FakeTransport*>( | 280 return transport_controller2_->channels_for_testing(); |
| 283 RTC_FROM_HERE, | 281 } |
| 284 [this, name] { return transport_controller2_->GetTransport_n(name); }); | 282 |
| 283 cricket::FakeTransportChannel* GetFakeChannel1(int component) { |
| 284 return transport_controller1_->GetFakeTransportChannel_n( |
| 285 channel1_->content_name(), component); |
| 286 } |
| 287 |
| 288 cricket::FakeTransportChannel* GetFakeChannel2(int component) { |
| 289 return transport_controller2_->GetFakeTransportChannel_n( |
| 290 channel2_->content_name(), component); |
| 285 } | 291 } |
| 286 | 292 |
| 287 void SendRtp1() { | 293 void SendRtp1() { |
| 288 media_channel1_->SendRtp(rtp_packet_.data(), rtp_packet_.size(), | 294 media_channel1_->SendRtp(rtp_packet_.data(), rtp_packet_.size(), |
| 289 rtc::PacketOptions()); | 295 rtc::PacketOptions()); |
| 290 } | 296 } |
| 291 void SendRtp2() { | 297 void SendRtp2() { |
| 292 media_channel2_->SendRtp(rtp_packet_.data(), rtp_packet_.size(), | 298 media_channel2_->SendRtp(rtp_packet_.data(), rtp_packet_.size(), |
| 293 rtc::PacketOptions()); | 299 rtc::PacketOptions()); |
| 294 } | 300 } |
| (...skipping 712 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1007 EXPECT_TRUE(SendInitiate()); | 1013 EXPECT_TRUE(SendInitiate()); |
| 1008 EXPECT_TRUE(SendAccept()); | 1014 EXPECT_TRUE(SendAccept()); |
| 1009 EXPECT_TRUE(SendTerminate()); | 1015 EXPECT_TRUE(SendTerminate()); |
| 1010 } | 1016 } |
| 1011 | 1017 |
| 1012 // Send voice RTP data to the other side and ensure it gets there. | 1018 // Send voice RTP data to the other side and ensure it gets there. |
| 1013 void SendRtpToRtp() { | 1019 void SendRtpToRtp() { |
| 1014 CreateChannels(0, 0); | 1020 CreateChannels(0, 0); |
| 1015 EXPECT_TRUE(SendInitiate()); | 1021 EXPECT_TRUE(SendInitiate()); |
| 1016 EXPECT_TRUE(SendAccept()); | 1022 EXPECT_TRUE(SendAccept()); |
| 1017 ASSERT_TRUE(GetTransport1()); | 1023 EXPECT_EQ(1U, GetChannels1().size()); |
| 1018 ASSERT_TRUE(GetTransport2()); | 1024 EXPECT_EQ(1U, GetChannels2().size()); |
| 1019 EXPECT_EQ(1U, GetTransport1()->channels().size()); | |
| 1020 EXPECT_EQ(1U, GetTransport2()->channels().size()); | |
| 1021 SendRtp1(); | 1025 SendRtp1(); |
| 1022 SendRtp2(); | 1026 SendRtp2(); |
| 1023 WaitForThreads(); | 1027 WaitForThreads(); |
| 1024 EXPECT_TRUE(CheckRtp1()); | 1028 EXPECT_TRUE(CheckRtp1()); |
| 1025 EXPECT_TRUE(CheckRtp2()); | 1029 EXPECT_TRUE(CheckRtp2()); |
| 1026 EXPECT_TRUE(CheckNoRtp1()); | 1030 EXPECT_TRUE(CheckNoRtp1()); |
| 1027 EXPECT_TRUE(CheckNoRtp2()); | 1031 EXPECT_TRUE(CheckNoRtp2()); |
| 1028 } | 1032 } |
| 1029 | 1033 |
| 1030 void TestDeinit() { | 1034 void TestDeinit() { |
| 1031 CreateChannels(RTCP, RTCP); | 1035 CreateChannels(RTCP, RTCP); |
| 1032 EXPECT_TRUE(SendInitiate()); | 1036 EXPECT_TRUE(SendInitiate()); |
| 1033 EXPECT_TRUE(SendAccept()); | 1037 EXPECT_TRUE(SendAccept()); |
| 1034 SendRtp1(); | 1038 SendRtp1(); |
| 1035 SendRtp2(); | 1039 SendRtp2(); |
| 1036 SendRtcp1(); | 1040 SendRtcp1(); |
| 1037 SendRtcp2(); | 1041 SendRtcp2(); |
| 1038 // Do not wait, destroy channels. | 1042 // Do not wait, destroy channels. |
| 1039 channel1_.reset(nullptr); | 1043 channel1_.reset(nullptr); |
| 1040 channel2_.reset(nullptr); | 1044 channel2_.reset(nullptr); |
| 1041 } | 1045 } |
| 1042 | 1046 |
| 1043 // Check that RTCP is not transmitted if both sides don't support RTCP. | 1047 // Check that RTCP is not transmitted if both sides don't support RTCP. |
| 1044 void SendNoRtcpToNoRtcp() { | 1048 void SendNoRtcpToNoRtcp() { |
| 1045 CreateChannels(0, 0); | 1049 CreateChannels(0, 0); |
| 1046 EXPECT_TRUE(SendInitiate()); | 1050 EXPECT_TRUE(SendInitiate()); |
| 1047 EXPECT_TRUE(SendAccept()); | 1051 EXPECT_TRUE(SendAccept()); |
| 1048 ASSERT_TRUE(GetTransport1()); | 1052 EXPECT_EQ(1U, GetChannels1().size()); |
| 1049 ASSERT_TRUE(GetTransport2()); | 1053 EXPECT_EQ(1U, GetChannels2().size()); |
| 1050 EXPECT_EQ(1U, GetTransport1()->channels().size()); | |
| 1051 EXPECT_EQ(1U, GetTransport2()->channels().size()); | |
| 1052 SendRtcp1(); | 1054 SendRtcp1(); |
| 1053 SendRtcp2(); | 1055 SendRtcp2(); |
| 1054 WaitForThreads(); | 1056 WaitForThreads(); |
| 1055 EXPECT_TRUE(CheckNoRtcp1()); | 1057 EXPECT_TRUE(CheckNoRtcp1()); |
| 1056 EXPECT_TRUE(CheckNoRtcp2()); | 1058 EXPECT_TRUE(CheckNoRtcp2()); |
| 1057 } | 1059 } |
| 1058 | 1060 |
| 1059 // Check that RTCP is not transmitted if the callee doesn't support RTCP. | 1061 // Check that RTCP is not transmitted if the callee doesn't support RTCP. |
| 1060 void SendNoRtcpToRtcp() { | 1062 void SendNoRtcpToRtcp() { |
| 1061 CreateChannels(0, RTCP); | 1063 CreateChannels(0, RTCP); |
| 1062 EXPECT_TRUE(SendInitiate()); | 1064 EXPECT_TRUE(SendInitiate()); |
| 1063 EXPECT_TRUE(SendAccept()); | 1065 EXPECT_TRUE(SendAccept()); |
| 1064 ASSERT_TRUE(GetTransport1()); | 1066 EXPECT_EQ(1U, GetChannels1().size()); |
| 1065 ASSERT_TRUE(GetTransport2()); | 1067 EXPECT_EQ(2U, GetChannels2().size()); |
| 1066 EXPECT_EQ(1U, GetTransport1()->channels().size()); | |
| 1067 EXPECT_EQ(2U, GetTransport2()->channels().size()); | |
| 1068 SendRtcp1(); | 1068 SendRtcp1(); |
| 1069 SendRtcp2(); | 1069 SendRtcp2(); |
| 1070 WaitForThreads(); | 1070 WaitForThreads(); |
| 1071 EXPECT_TRUE(CheckNoRtcp1()); | 1071 EXPECT_TRUE(CheckNoRtcp1()); |
| 1072 EXPECT_TRUE(CheckNoRtcp2()); | 1072 EXPECT_TRUE(CheckNoRtcp2()); |
| 1073 } | 1073 } |
| 1074 | 1074 |
| 1075 // Check that RTCP is not transmitted if the caller doesn't support RTCP. | 1075 // Check that RTCP is not transmitted if the caller doesn't support RTCP. |
| 1076 void SendRtcpToNoRtcp() { | 1076 void SendRtcpToNoRtcp() { |
| 1077 CreateChannels(RTCP, 0); | 1077 CreateChannels(RTCP, 0); |
| 1078 EXPECT_TRUE(SendInitiate()); | 1078 EXPECT_TRUE(SendInitiate()); |
| 1079 EXPECT_TRUE(SendAccept()); | 1079 EXPECT_TRUE(SendAccept()); |
| 1080 ASSERT_TRUE(GetTransport1()); | 1080 EXPECT_EQ(2U, GetChannels1().size()); |
| 1081 ASSERT_TRUE(GetTransport2()); | 1081 EXPECT_EQ(1U, GetChannels2().size()); |
| 1082 EXPECT_EQ(2U, GetTransport1()->channels().size()); | |
| 1083 EXPECT_EQ(1U, GetTransport2()->channels().size()); | |
| 1084 SendRtcp1(); | 1082 SendRtcp1(); |
| 1085 SendRtcp2(); | 1083 SendRtcp2(); |
| 1086 WaitForThreads(); | 1084 WaitForThreads(); |
| 1087 EXPECT_TRUE(CheckNoRtcp1()); | 1085 EXPECT_TRUE(CheckNoRtcp1()); |
| 1088 EXPECT_TRUE(CheckNoRtcp2()); | 1086 EXPECT_TRUE(CheckNoRtcp2()); |
| 1089 } | 1087 } |
| 1090 | 1088 |
| 1091 // Check that RTCP is transmitted if both sides support RTCP. | 1089 // Check that RTCP is transmitted if both sides support RTCP. |
| 1092 void SendRtcpToRtcp() { | 1090 void SendRtcpToRtcp() { |
| 1093 CreateChannels(RTCP, RTCP); | 1091 CreateChannels(RTCP, RTCP); |
| 1094 EXPECT_TRUE(SendInitiate()); | 1092 EXPECT_TRUE(SendInitiate()); |
| 1095 EXPECT_TRUE(SendAccept()); | 1093 EXPECT_TRUE(SendAccept()); |
| 1096 ASSERT_TRUE(GetTransport1()); | 1094 EXPECT_EQ(2U, GetChannels1().size()); |
| 1097 ASSERT_TRUE(GetTransport2()); | 1095 EXPECT_EQ(2U, GetChannels2().size()); |
| 1098 EXPECT_EQ(2U, GetTransport1()->channels().size()); | |
| 1099 EXPECT_EQ(2U, GetTransport2()->channels().size()); | |
| 1100 SendRtcp1(); | 1096 SendRtcp1(); |
| 1101 SendRtcp2(); | 1097 SendRtcp2(); |
| 1102 WaitForThreads(); | 1098 WaitForThreads(); |
| 1103 EXPECT_TRUE(CheckRtcp1()); | 1099 EXPECT_TRUE(CheckRtcp1()); |
| 1104 EXPECT_TRUE(CheckRtcp2()); | 1100 EXPECT_TRUE(CheckRtcp2()); |
| 1105 EXPECT_TRUE(CheckNoRtcp1()); | 1101 EXPECT_TRUE(CheckNoRtcp1()); |
| 1106 EXPECT_TRUE(CheckNoRtcp2()); | 1102 EXPECT_TRUE(CheckNoRtcp2()); |
| 1107 } | 1103 } |
| 1108 | 1104 |
| 1109 // Check that RTCP is transmitted if only the initiator supports mux. | 1105 // Check that RTCP is transmitted if only the initiator supports mux. |
| 1110 void SendRtcpMuxToRtcp() { | 1106 void SendRtcpMuxToRtcp() { |
| 1111 CreateChannels(RTCP | RTCP_MUX, RTCP); | 1107 CreateChannels(RTCP | RTCP_MUX, RTCP); |
| 1112 EXPECT_TRUE(SendInitiate()); | 1108 EXPECT_TRUE(SendInitiate()); |
| 1113 EXPECT_TRUE(SendAccept()); | 1109 EXPECT_TRUE(SendAccept()); |
| 1114 ASSERT_TRUE(GetTransport1()); | 1110 EXPECT_EQ(2U, GetChannels1().size()); |
| 1115 ASSERT_TRUE(GetTransport2()); | 1111 EXPECT_EQ(2U, GetChannels2().size()); |
| 1116 EXPECT_EQ(2U, GetTransport1()->channels().size()); | |
| 1117 EXPECT_EQ(2U, GetTransport2()->channels().size()); | |
| 1118 SendRtcp1(); | 1112 SendRtcp1(); |
| 1119 SendRtcp2(); | 1113 SendRtcp2(); |
| 1120 WaitForThreads(); | 1114 WaitForThreads(); |
| 1121 EXPECT_TRUE(CheckRtcp1()); | 1115 EXPECT_TRUE(CheckRtcp1()); |
| 1122 EXPECT_TRUE(CheckRtcp2()); | 1116 EXPECT_TRUE(CheckRtcp2()); |
| 1123 EXPECT_TRUE(CheckNoRtcp1()); | 1117 EXPECT_TRUE(CheckNoRtcp1()); |
| 1124 EXPECT_TRUE(CheckNoRtcp2()); | 1118 EXPECT_TRUE(CheckNoRtcp2()); |
| 1125 } | 1119 } |
| 1126 | 1120 |
| 1127 // Check that RTP and RTCP are transmitted ok when both sides support mux. | 1121 // Check that RTP and RTCP are transmitted ok when both sides support mux. |
| 1128 void SendRtcpMuxToRtcpMux() { | 1122 void SendRtcpMuxToRtcpMux() { |
| 1129 CreateChannels(RTCP | RTCP_MUX, RTCP | RTCP_MUX); | 1123 CreateChannels(RTCP | RTCP_MUX, RTCP | RTCP_MUX); |
| 1130 EXPECT_TRUE(SendInitiate()); | 1124 EXPECT_TRUE(SendInitiate()); |
| 1131 ASSERT_TRUE(GetTransport1()); | 1125 EXPECT_EQ(2U, GetChannels1().size()); |
| 1132 ASSERT_TRUE(GetTransport2()); | 1126 EXPECT_EQ(1U, GetChannels2().size()); |
| 1133 EXPECT_EQ(2U, GetTransport1()->channels().size()); | |
| 1134 EXPECT_EQ(1U, GetTransport2()->channels().size()); | |
| 1135 EXPECT_TRUE(SendAccept()); | 1127 EXPECT_TRUE(SendAccept()); |
| 1136 EXPECT_EQ(1U, GetTransport1()->channels().size()); | 1128 EXPECT_EQ(1U, GetChannels1().size()); |
| 1137 SendRtp1(); | 1129 SendRtp1(); |
| 1138 SendRtp2(); | 1130 SendRtp2(); |
| 1139 SendRtcp1(); | 1131 SendRtcp1(); |
| 1140 SendRtcp2(); | 1132 SendRtcp2(); |
| 1141 WaitForThreads(); | 1133 WaitForThreads(); |
| 1142 EXPECT_TRUE(CheckRtp1()); | 1134 EXPECT_TRUE(CheckRtp1()); |
| 1143 EXPECT_TRUE(CheckRtp2()); | 1135 EXPECT_TRUE(CheckRtp2()); |
| 1144 EXPECT_TRUE(CheckNoRtp1()); | 1136 EXPECT_TRUE(CheckNoRtp1()); |
| 1145 EXPECT_TRUE(CheckNoRtp2()); | 1137 EXPECT_TRUE(CheckNoRtp2()); |
| 1146 EXPECT_TRUE(CheckRtcp1()); | 1138 EXPECT_TRUE(CheckRtcp1()); |
| 1147 EXPECT_TRUE(CheckRtcp2()); | 1139 EXPECT_TRUE(CheckRtcp2()); |
| 1148 EXPECT_TRUE(CheckNoRtcp1()); | 1140 EXPECT_TRUE(CheckNoRtcp1()); |
| 1149 EXPECT_TRUE(CheckNoRtcp2()); | 1141 EXPECT_TRUE(CheckNoRtcp2()); |
| 1150 } | 1142 } |
| 1151 | 1143 |
| 1152 // Check that RTP and RTCP are transmitted ok when both sides | 1144 // Check that RTP and RTCP are transmitted ok when both sides |
| 1153 // support mux and one the offerer requires mux. | 1145 // support mux and one the offerer requires mux. |
| 1154 void SendRequireRtcpMuxToRtcpMux() { | 1146 void SendRequireRtcpMuxToRtcpMux() { |
| 1155 CreateChannels(RTCP | RTCP_MUX, RTCP | RTCP_MUX); | 1147 CreateChannels(RTCP | RTCP_MUX, RTCP | RTCP_MUX); |
| 1156 channel1_->ActivateRtcpMux(); | 1148 channel1_->ActivateRtcpMux(); |
| 1157 EXPECT_TRUE(SendInitiate()); | 1149 EXPECT_TRUE(SendInitiate()); |
| 1158 ASSERT_TRUE(GetTransport1()); | 1150 EXPECT_EQ(1U, GetChannels1().size()); |
| 1159 ASSERT_TRUE(GetTransport2()); | 1151 EXPECT_EQ(1U, GetChannels2().size()); |
| 1160 EXPECT_EQ(1U, GetTransport1()->channels().size()); | |
| 1161 EXPECT_EQ(1U, GetTransport2()->channels().size()); | |
| 1162 EXPECT_TRUE(SendAccept()); | 1152 EXPECT_TRUE(SendAccept()); |
| 1163 SendRtp1(); | 1153 SendRtp1(); |
| 1164 SendRtp2(); | 1154 SendRtp2(); |
| 1165 SendRtcp1(); | 1155 SendRtcp1(); |
| 1166 SendRtcp2(); | 1156 SendRtcp2(); |
| 1167 WaitForThreads(); | 1157 WaitForThreads(); |
| 1168 EXPECT_TRUE(CheckRtp1()); | 1158 EXPECT_TRUE(CheckRtp1()); |
| 1169 EXPECT_TRUE(CheckRtp2()); | 1159 EXPECT_TRUE(CheckRtp2()); |
| 1170 EXPECT_TRUE(CheckNoRtp1()); | 1160 EXPECT_TRUE(CheckNoRtp1()); |
| 1171 EXPECT_TRUE(CheckNoRtp2()); | 1161 EXPECT_TRUE(CheckNoRtp2()); |
| 1172 EXPECT_TRUE(CheckRtcp1()); | 1162 EXPECT_TRUE(CheckRtcp1()); |
| 1173 EXPECT_TRUE(CheckRtcp2()); | 1163 EXPECT_TRUE(CheckRtcp2()); |
| 1174 EXPECT_TRUE(CheckNoRtcp1()); | 1164 EXPECT_TRUE(CheckNoRtcp1()); |
| 1175 EXPECT_TRUE(CheckNoRtcp2()); | 1165 EXPECT_TRUE(CheckNoRtcp2()); |
| 1176 } | 1166 } |
| 1177 | 1167 |
| 1178 // Check that RTP and RTCP are transmitted ok when both sides | 1168 // Check that RTP and RTCP are transmitted ok when both sides |
| 1179 // support mux and one the answerer requires rtcp mux. | 1169 // support mux and one the answerer requires rtcp mux. |
| 1180 void SendRtcpMuxToRequireRtcpMux() { | 1170 void SendRtcpMuxToRequireRtcpMux() { |
| 1181 CreateChannels(RTCP | RTCP_MUX, RTCP | RTCP_MUX); | 1171 CreateChannels(RTCP | RTCP_MUX, RTCP | RTCP_MUX); |
| 1182 channel2_->ActivateRtcpMux(); | 1172 channel2_->ActivateRtcpMux(); |
| 1183 EXPECT_TRUE(SendInitiate()); | 1173 EXPECT_TRUE(SendInitiate()); |
| 1184 ASSERT_TRUE(GetTransport1()); | 1174 EXPECT_EQ(2U, GetChannels1().size()); |
| 1185 ASSERT_TRUE(GetTransport2()); | 1175 EXPECT_EQ(1U, GetChannels2().size()); |
| 1186 EXPECT_EQ(2U, GetTransport1()->channels().size()); | |
| 1187 EXPECT_EQ(1U, GetTransport2()->channels().size()); | |
| 1188 EXPECT_TRUE(SendAccept()); | 1176 EXPECT_TRUE(SendAccept()); |
| 1189 EXPECT_EQ(1U, GetTransport1()->channels().size()); | 1177 EXPECT_EQ(1U, GetChannels1().size()); |
| 1190 SendRtp1(); | 1178 SendRtp1(); |
| 1191 SendRtp2(); | 1179 SendRtp2(); |
| 1192 SendRtcp1(); | 1180 SendRtcp1(); |
| 1193 SendRtcp2(); | 1181 SendRtcp2(); |
| 1194 WaitForThreads(); | 1182 WaitForThreads(); |
| 1195 EXPECT_TRUE(CheckRtp1()); | 1183 EXPECT_TRUE(CheckRtp1()); |
| 1196 EXPECT_TRUE(CheckRtp2()); | 1184 EXPECT_TRUE(CheckRtp2()); |
| 1197 EXPECT_TRUE(CheckNoRtp1()); | 1185 EXPECT_TRUE(CheckNoRtp1()); |
| 1198 EXPECT_TRUE(CheckNoRtp2()); | 1186 EXPECT_TRUE(CheckNoRtp2()); |
| 1199 EXPECT_TRUE(CheckRtcp1()); | 1187 EXPECT_TRUE(CheckRtcp1()); |
| 1200 EXPECT_TRUE(CheckRtcp2()); | 1188 EXPECT_TRUE(CheckRtcp2()); |
| 1201 EXPECT_TRUE(CheckNoRtcp1()); | 1189 EXPECT_TRUE(CheckNoRtcp1()); |
| 1202 EXPECT_TRUE(CheckNoRtcp2()); | 1190 EXPECT_TRUE(CheckNoRtcp2()); |
| 1203 } | 1191 } |
| 1204 | 1192 |
| 1205 // Check that RTP and RTCP are transmitted ok when both sides | 1193 // Check that RTP and RTCP are transmitted ok when both sides |
| 1206 // require mux. | 1194 // require mux. |
| 1207 void SendRequireRtcpMuxToRequireRtcpMux() { | 1195 void SendRequireRtcpMuxToRequireRtcpMux() { |
| 1208 CreateChannels(RTCP | RTCP_MUX, RTCP | RTCP_MUX); | 1196 CreateChannels(RTCP | RTCP_MUX, RTCP | RTCP_MUX); |
| 1209 channel1_->ActivateRtcpMux(); | 1197 channel1_->ActivateRtcpMux(); |
| 1210 channel2_->ActivateRtcpMux(); | 1198 channel2_->ActivateRtcpMux(); |
| 1211 EXPECT_TRUE(SendInitiate()); | 1199 EXPECT_TRUE(SendInitiate()); |
| 1212 ASSERT_TRUE(GetTransport1()); | 1200 EXPECT_EQ(1U, GetChannels1().size()); |
| 1213 ASSERT_TRUE(GetTransport2()); | 1201 EXPECT_EQ(1U, GetChannels2().size()); |
| 1214 EXPECT_EQ(1U, GetTransport1()->channels().size()); | |
| 1215 EXPECT_EQ(1U, GetTransport2()->channels().size()); | |
| 1216 EXPECT_TRUE(SendAccept()); | 1202 EXPECT_TRUE(SendAccept()); |
| 1217 EXPECT_EQ(1U, GetTransport1()->channels().size()); | 1203 EXPECT_EQ(1U, GetChannels1().size()); |
| 1218 SendRtp1(); | 1204 SendRtp1(); |
| 1219 SendRtp2(); | 1205 SendRtp2(); |
| 1220 SendRtcp1(); | 1206 SendRtcp1(); |
| 1221 SendRtcp2(); | 1207 SendRtcp2(); |
| 1222 WaitForThreads(); | 1208 WaitForThreads(); |
| 1223 EXPECT_TRUE(CheckRtp1()); | 1209 EXPECT_TRUE(CheckRtp1()); |
| 1224 EXPECT_TRUE(CheckRtp2()); | 1210 EXPECT_TRUE(CheckRtp2()); |
| 1225 EXPECT_TRUE(CheckNoRtp1()); | 1211 EXPECT_TRUE(CheckNoRtp1()); |
| 1226 EXPECT_TRUE(CheckNoRtp2()); | 1212 EXPECT_TRUE(CheckNoRtp2()); |
| 1227 EXPECT_TRUE(CheckRtcp1()); | 1213 EXPECT_TRUE(CheckRtcp1()); |
| 1228 EXPECT_TRUE(CheckRtcp2()); | 1214 EXPECT_TRUE(CheckRtcp2()); |
| 1229 EXPECT_TRUE(CheckNoRtcp1()); | 1215 EXPECT_TRUE(CheckNoRtcp1()); |
| 1230 EXPECT_TRUE(CheckNoRtcp2()); | 1216 EXPECT_TRUE(CheckNoRtcp2()); |
| 1231 } | 1217 } |
| 1232 | 1218 |
| 1233 // Check that SendAccept fails if the answerer doesn't support mux | 1219 // Check that SendAccept fails if the answerer doesn't support mux |
| 1234 // and the offerer requires it. | 1220 // and the offerer requires it. |
| 1235 void SendRequireRtcpMuxToNoRtcpMux() { | 1221 void SendRequireRtcpMuxToNoRtcpMux() { |
| 1236 CreateChannels(RTCP | RTCP_MUX, RTCP); | 1222 CreateChannels(RTCP | RTCP_MUX, RTCP); |
| 1237 channel1_->ActivateRtcpMux(); | 1223 channel1_->ActivateRtcpMux(); |
| 1238 EXPECT_TRUE(SendInitiate()); | 1224 EXPECT_TRUE(SendInitiate()); |
| 1239 ASSERT_TRUE(GetTransport1()); | 1225 EXPECT_EQ(1U, GetChannels1().size()); |
| 1240 ASSERT_TRUE(GetTransport2()); | 1226 EXPECT_EQ(2U, GetChannels2().size()); |
| 1241 EXPECT_EQ(1U, GetTransport1()->channels().size()); | |
| 1242 EXPECT_EQ(2U, GetTransport2()->channels().size()); | |
| 1243 EXPECT_FALSE(SendAccept()); | 1227 EXPECT_FALSE(SendAccept()); |
| 1244 } | 1228 } |
| 1245 | 1229 |
| 1246 // Check that RTCP data sent by the initiator before the accept is not muxed. | 1230 // Check that RTCP data sent by the initiator before the accept is not muxed. |
| 1247 void SendEarlyRtcpMuxToRtcp() { | 1231 void SendEarlyRtcpMuxToRtcp() { |
| 1248 CreateChannels(RTCP | RTCP_MUX, RTCP); | 1232 CreateChannels(RTCP | RTCP_MUX, RTCP); |
| 1249 EXPECT_TRUE(SendInitiate()); | 1233 EXPECT_TRUE(SendInitiate()); |
| 1250 ASSERT_TRUE(GetTransport1()); | 1234 EXPECT_EQ(2U, GetChannels1().size()); |
| 1251 ASSERT_TRUE(GetTransport2()); | 1235 EXPECT_EQ(2U, GetChannels2().size()); |
| 1252 EXPECT_EQ(2U, GetTransport1()->channels().size()); | |
| 1253 EXPECT_EQ(2U, GetTransport2()->channels().size()); | |
| 1254 | 1236 |
| 1255 // RTCP can be sent before the call is accepted, if the transport is ready. | 1237 // RTCP can be sent before the call is accepted, if the transport is ready. |
| 1256 // It should not be muxed though, as the remote side doesn't support mux. | 1238 // It should not be muxed though, as the remote side doesn't support mux. |
| 1257 SendRtcp1(); | 1239 SendRtcp1(); |
| 1258 WaitForThreads(); | 1240 WaitForThreads(); |
| 1259 EXPECT_TRUE(CheckNoRtp2()); | 1241 EXPECT_TRUE(CheckNoRtp2()); |
| 1260 EXPECT_TRUE(CheckRtcp2()); | 1242 EXPECT_TRUE(CheckRtcp2()); |
| 1261 | 1243 |
| 1262 // Send RTCP packet from callee and verify that it is received. | 1244 // Send RTCP packet from callee and verify that it is received. |
| 1263 SendRtcp2(); | 1245 SendRtcp2(); |
| 1264 WaitForThreads(); | 1246 WaitForThreads(); |
| 1265 EXPECT_TRUE(CheckNoRtp1()); | 1247 EXPECT_TRUE(CheckNoRtp1()); |
| 1266 EXPECT_TRUE(CheckRtcp1()); | 1248 EXPECT_TRUE(CheckRtcp1()); |
| 1267 | 1249 |
| 1268 // Complete call setup and ensure everything is still OK. | 1250 // Complete call setup and ensure everything is still OK. |
| 1269 EXPECT_TRUE(SendAccept()); | 1251 EXPECT_TRUE(SendAccept()); |
| 1270 EXPECT_EQ(2U, GetTransport1()->channels().size()); | 1252 EXPECT_EQ(2U, GetChannels1().size()); |
| 1271 SendRtcp1(); | 1253 SendRtcp1(); |
| 1272 SendRtcp2(); | 1254 SendRtcp2(); |
| 1273 WaitForThreads(); | 1255 WaitForThreads(); |
| 1274 EXPECT_TRUE(CheckRtcp2()); | 1256 EXPECT_TRUE(CheckRtcp2()); |
| 1275 EXPECT_TRUE(CheckRtcp1()); | 1257 EXPECT_TRUE(CheckRtcp1()); |
| 1276 } | 1258 } |
| 1277 | 1259 |
| 1278 | 1260 |
| 1279 // Check that RTCP data is not muxed until both sides have enabled muxing, | 1261 // Check that RTCP data is not muxed until both sides have enabled muxing, |
| 1280 // but that we properly demux before we get the accept message, since there | 1262 // but that we properly demux before we get the accept message, since there |
| 1281 // is a race between RTP data and the jingle accept. | 1263 // is a race between RTP data and the jingle accept. |
| 1282 void SendEarlyRtcpMuxToRtcpMux() { | 1264 void SendEarlyRtcpMuxToRtcpMux() { |
| 1283 CreateChannels(RTCP | RTCP_MUX, RTCP | RTCP_MUX); | 1265 CreateChannels(RTCP | RTCP_MUX, RTCP | RTCP_MUX); |
| 1284 EXPECT_TRUE(SendInitiate()); | 1266 EXPECT_TRUE(SendInitiate()); |
| 1285 ASSERT_TRUE(GetTransport1()); | 1267 EXPECT_EQ(2U, GetChannels1().size()); |
| 1286 ASSERT_TRUE(GetTransport2()); | 1268 EXPECT_EQ(1U, GetChannels2().size()); |
| 1287 EXPECT_EQ(2U, GetTransport1()->channels().size()); | |
| 1288 EXPECT_EQ(1U, GetTransport2()->channels().size()); | |
| 1289 | 1269 |
| 1290 // RTCP can't be sent yet, since the RTCP transport isn't writable, and | 1270 // RTCP can't be sent yet, since the RTCP transport isn't writable, and |
| 1291 // we haven't yet received the accept that says we should mux. | 1271 // we haven't yet received the accept that says we should mux. |
| 1292 SendRtcp1(); | 1272 SendRtcp1(); |
| 1293 WaitForThreads(); | 1273 WaitForThreads(); |
| 1294 EXPECT_TRUE(CheckNoRtcp2()); | 1274 EXPECT_TRUE(CheckNoRtcp2()); |
| 1295 | 1275 |
| 1296 // Send muxed RTCP packet from callee and verify that it is received. | 1276 // Send muxed RTCP packet from callee and verify that it is received. |
| 1297 SendRtcp2(); | 1277 SendRtcp2(); |
| 1298 WaitForThreads(); | 1278 WaitForThreads(); |
| 1299 EXPECT_TRUE(CheckNoRtp1()); | 1279 EXPECT_TRUE(CheckNoRtp1()); |
| 1300 EXPECT_TRUE(CheckRtcp1()); | 1280 EXPECT_TRUE(CheckRtcp1()); |
| 1301 | 1281 |
| 1302 // Complete call setup and ensure everything is still OK. | 1282 // Complete call setup and ensure everything is still OK. |
| 1303 EXPECT_TRUE(SendAccept()); | 1283 EXPECT_TRUE(SendAccept()); |
| 1304 EXPECT_EQ(1U, GetTransport1()->channels().size()); | 1284 EXPECT_EQ(1U, GetChannels1().size()); |
| 1305 SendRtcp1(); | 1285 SendRtcp1(); |
| 1306 SendRtcp2(); | 1286 SendRtcp2(); |
| 1307 WaitForThreads(); | 1287 WaitForThreads(); |
| 1308 EXPECT_TRUE(CheckRtcp2()); | 1288 EXPECT_TRUE(CheckRtcp2()); |
| 1309 EXPECT_TRUE(CheckRtcp1()); | 1289 EXPECT_TRUE(CheckRtcp1()); |
| 1310 } | 1290 } |
| 1311 | 1291 |
| 1312 // Test that we properly send SRTP with RTCP in both directions. | 1292 // Test that we properly send SRTP with RTCP in both directions. |
| 1313 // You can pass in DTLS and/or RTCP_MUX as flags. | 1293 // You can pass in DTLS and/or RTCP_MUX as flags. |
| 1314 void SendSrtpToSrtp(int flags1_in = 0, int flags2_in = 0) { | 1294 void SendSrtpToSrtp(int flags1_in = 0, int flags2_in = 0) { |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1382 // sent and received. The test uses SRTP, RTCP mux and SSRC mux. | 1362 // sent and received. The test uses SRTP, RTCP mux and SSRC mux. |
| 1383 void SendEarlyMediaUsingRtcpMuxSrtp() { | 1363 void SendEarlyMediaUsingRtcpMuxSrtp() { |
| 1384 int sequence_number1_1 = 0, sequence_number2_2 = 0; | 1364 int sequence_number1_1 = 0, sequence_number2_2 = 0; |
| 1385 | 1365 |
| 1386 CreateChannels(SSRC_MUX | RTCP | RTCP_MUX | SECURE, | 1366 CreateChannels(SSRC_MUX | RTCP | RTCP_MUX | SECURE, |
| 1387 SSRC_MUX | RTCP | RTCP_MUX | SECURE); | 1367 SSRC_MUX | RTCP | RTCP_MUX | SECURE); |
| 1388 EXPECT_TRUE(SendOffer()); | 1368 EXPECT_TRUE(SendOffer()); |
| 1389 EXPECT_TRUE(SendProvisionalAnswer()); | 1369 EXPECT_TRUE(SendProvisionalAnswer()); |
| 1390 EXPECT_TRUE(channel1_->secure()); | 1370 EXPECT_TRUE(channel1_->secure()); |
| 1391 EXPECT_TRUE(channel2_->secure()); | 1371 EXPECT_TRUE(channel2_->secure()); |
| 1392 ASSERT_TRUE(GetTransport1()); | 1372 EXPECT_EQ(2U, GetChannels1().size()); |
| 1393 ASSERT_TRUE(GetTransport2()); | 1373 EXPECT_EQ(2U, GetChannels2().size()); |
| 1394 EXPECT_EQ(2U, GetTransport1()->channels().size()); | |
| 1395 EXPECT_EQ(2U, GetTransport2()->channels().size()); | |
| 1396 WaitForThreads(); // Wait for 'sending' flag go through network thread. | 1374 WaitForThreads(); // Wait for 'sending' flag go through network thread. |
| 1397 SendCustomRtcp1(kSsrc1); | 1375 SendCustomRtcp1(kSsrc1); |
| 1398 SendCustomRtp1(kSsrc1, ++sequence_number1_1); | 1376 SendCustomRtp1(kSsrc1, ++sequence_number1_1); |
| 1399 WaitForThreads(); | 1377 WaitForThreads(); |
| 1400 EXPECT_TRUE(CheckCustomRtcp2(kSsrc1)); | 1378 EXPECT_TRUE(CheckCustomRtcp2(kSsrc1)); |
| 1401 EXPECT_TRUE(CheckCustomRtp2(kSsrc1, sequence_number1_1)); | 1379 EXPECT_TRUE(CheckCustomRtp2(kSsrc1, sequence_number1_1)); |
| 1402 | 1380 |
| 1403 // Send packets from callee and verify that it is received. | 1381 // Send packets from callee and verify that it is received. |
| 1404 SendCustomRtcp2(kSsrc2); | 1382 SendCustomRtcp2(kSsrc2); |
| 1405 SendCustomRtp2(kSsrc2, ++sequence_number2_2); | 1383 SendCustomRtp2(kSsrc2, ++sequence_number2_2); |
| 1406 WaitForThreads(); | 1384 WaitForThreads(); |
| 1407 EXPECT_TRUE(CheckCustomRtcp1(kSsrc2)); | 1385 EXPECT_TRUE(CheckCustomRtcp1(kSsrc2)); |
| 1408 EXPECT_TRUE(CheckCustomRtp1(kSsrc2, sequence_number2_2)); | 1386 EXPECT_TRUE(CheckCustomRtp1(kSsrc2, sequence_number2_2)); |
| 1409 | 1387 |
| 1410 // Complete call setup and ensure everything is still OK. | 1388 // Complete call setup and ensure everything is still OK. |
| 1411 EXPECT_TRUE(SendFinalAnswer()); | 1389 EXPECT_TRUE(SendFinalAnswer()); |
| 1412 EXPECT_EQ(1U, GetTransport1()->channels().size()); | 1390 EXPECT_EQ(1U, GetChannels1().size()); |
| 1413 EXPECT_EQ(1U, GetTransport2()->channels().size()); | 1391 EXPECT_EQ(1U, GetChannels2().size()); |
| 1414 EXPECT_TRUE(channel1_->secure()); | 1392 EXPECT_TRUE(channel1_->secure()); |
| 1415 EXPECT_TRUE(channel2_->secure()); | 1393 EXPECT_TRUE(channel2_->secure()); |
| 1416 SendCustomRtcp1(kSsrc1); | 1394 SendCustomRtcp1(kSsrc1); |
| 1417 SendCustomRtp1(kSsrc1, ++sequence_number1_1); | 1395 SendCustomRtp1(kSsrc1, ++sequence_number1_1); |
| 1418 SendCustomRtcp2(kSsrc2); | 1396 SendCustomRtcp2(kSsrc2); |
| 1419 SendCustomRtp2(kSsrc2, ++sequence_number2_2); | 1397 SendCustomRtp2(kSsrc2, ++sequence_number2_2); |
| 1420 WaitForThreads(); | 1398 WaitForThreads(); |
| 1421 EXPECT_TRUE(CheckCustomRtcp2(kSsrc1)); | 1399 EXPECT_TRUE(CheckCustomRtcp2(kSsrc1)); |
| 1422 EXPECT_TRUE(CheckCustomRtp2(kSsrc1, sequence_number1_1)); | 1400 EXPECT_TRUE(CheckCustomRtp2(kSsrc1, sequence_number1_1)); |
| 1423 EXPECT_TRUE(CheckCustomRtcp1(kSsrc2)); | 1401 EXPECT_TRUE(CheckCustomRtcp1(kSsrc2)); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1469 EXPECT_TRUE(CheckNoRtcp1()); | 1447 EXPECT_TRUE(CheckNoRtcp1()); |
| 1470 EXPECT_TRUE(CheckNoRtcp2()); | 1448 EXPECT_TRUE(CheckNoRtcp2()); |
| 1471 } | 1449 } |
| 1472 | 1450 |
| 1473 // Test that the mediachannel retains its sending state after the transport | 1451 // Test that the mediachannel retains its sending state after the transport |
| 1474 // becomes non-writable. | 1452 // becomes non-writable. |
| 1475 void SendWithWritabilityLoss() { | 1453 void SendWithWritabilityLoss() { |
| 1476 CreateChannels(0, 0); | 1454 CreateChannels(0, 0); |
| 1477 EXPECT_TRUE(SendInitiate()); | 1455 EXPECT_TRUE(SendInitiate()); |
| 1478 EXPECT_TRUE(SendAccept()); | 1456 EXPECT_TRUE(SendAccept()); |
| 1479 ASSERT_TRUE(GetTransport1()); | 1457 EXPECT_EQ(1U, GetChannels1().size()); |
| 1480 ASSERT_TRUE(GetTransport2()); | 1458 EXPECT_EQ(1U, GetChannels2().size()); |
| 1481 EXPECT_EQ(1U, GetTransport1()->channels().size()); | |
| 1482 EXPECT_EQ(1U, GetTransport2()->channels().size()); | |
| 1483 SendRtp1(); | 1459 SendRtp1(); |
| 1484 SendRtp2(); | 1460 SendRtp2(); |
| 1485 WaitForThreads(); | 1461 WaitForThreads(); |
| 1486 EXPECT_TRUE(CheckRtp1()); | 1462 EXPECT_TRUE(CheckRtp1()); |
| 1487 EXPECT_TRUE(CheckRtp2()); | 1463 EXPECT_TRUE(CheckRtp2()); |
| 1488 EXPECT_TRUE(CheckNoRtp1()); | 1464 EXPECT_TRUE(CheckNoRtp1()); |
| 1489 EXPECT_TRUE(CheckNoRtp2()); | 1465 EXPECT_TRUE(CheckNoRtp2()); |
| 1490 | 1466 |
| 1491 // Lose writability, which should fail. | 1467 // Lose writability, which should fail. |
| 1492 network_thread_->Invoke<void>( | 1468 network_thread_->Invoke<void>( |
| 1493 RTC_FROM_HERE, [this] { GetTransport1()->SetWritable(false); }); | 1469 RTC_FROM_HERE, [this] { GetFakeChannel1(1)->SetWritable(false); }); |
| 1494 SendRtp1(); | 1470 SendRtp1(); |
| 1495 SendRtp2(); | 1471 SendRtp2(); |
| 1496 WaitForThreads(); | 1472 WaitForThreads(); |
| 1497 EXPECT_TRUE(CheckRtp1()); | 1473 EXPECT_TRUE(CheckRtp1()); |
| 1498 EXPECT_TRUE(CheckNoRtp2()); | 1474 EXPECT_TRUE(CheckNoRtp2()); |
| 1499 | 1475 |
| 1500 // Regain writability | 1476 // Regain writability |
| 1501 network_thread_->Invoke<void>( | 1477 network_thread_->Invoke<void>( |
| 1502 RTC_FROM_HERE, [this] { GetTransport1()->SetWritable(true); }); | 1478 RTC_FROM_HERE, [this] { GetFakeChannel1(1)->SetWritable(true); }); |
| 1503 EXPECT_TRUE(media_channel1_->sending()); | 1479 EXPECT_TRUE(media_channel1_->sending()); |
| 1504 SendRtp1(); | 1480 SendRtp1(); |
| 1505 SendRtp2(); | 1481 SendRtp2(); |
| 1506 WaitForThreads(); | 1482 WaitForThreads(); |
| 1507 EXPECT_TRUE(CheckRtp1()); | 1483 EXPECT_TRUE(CheckRtp1()); |
| 1508 EXPECT_TRUE(CheckRtp2()); | 1484 EXPECT_TRUE(CheckRtp2()); |
| 1509 EXPECT_TRUE(CheckNoRtp1()); | 1485 EXPECT_TRUE(CheckNoRtp1()); |
| 1510 EXPECT_TRUE(CheckNoRtp2()); | 1486 EXPECT_TRUE(CheckNoRtp2()); |
| 1511 | 1487 |
| 1512 // Lose writability completely | 1488 // Lose writability completely |
| 1513 network_thread_->Invoke<void>( | 1489 network_thread_->Invoke<void>( |
| 1514 RTC_FROM_HERE, [this] { GetTransport1()->SetDestination(NULL); }); | 1490 RTC_FROM_HERE, [this] { GetFakeChannel1(1)->SetDestination(nullptr); }); |
| 1515 EXPECT_TRUE(media_channel1_->sending()); | 1491 EXPECT_TRUE(media_channel1_->sending()); |
| 1516 | 1492 |
| 1517 // Should fail also. | 1493 // Should fail also. |
| 1518 SendRtp1(); | 1494 SendRtp1(); |
| 1519 SendRtp2(); | 1495 SendRtp2(); |
| 1520 WaitForThreads(); | 1496 WaitForThreads(); |
| 1521 EXPECT_TRUE(CheckRtp1()); | 1497 EXPECT_TRUE(CheckRtp1()); |
| 1522 EXPECT_TRUE(CheckNoRtp2()); | 1498 EXPECT_TRUE(CheckNoRtp2()); |
| 1523 | 1499 |
| 1524 // Gain writability back | 1500 // Gain writability back |
| 1525 network_thread_->Invoke<void>(RTC_FROM_HERE, [this] { | 1501 network_thread_->Invoke<void>(RTC_FROM_HERE, [this] { |
| 1526 GetTransport1()->SetDestination(GetTransport2()); | 1502 GetFakeChannel1(1)->SetDestination(GetFakeChannel2(1)); |
| 1527 }); | 1503 }); |
| 1528 EXPECT_TRUE(media_channel1_->sending()); | 1504 EXPECT_TRUE(media_channel1_->sending()); |
| 1529 SendRtp1(); | 1505 SendRtp1(); |
| 1530 SendRtp2(); | 1506 SendRtp2(); |
| 1531 WaitForThreads(); | 1507 WaitForThreads(); |
| 1532 EXPECT_TRUE(CheckRtp1()); | 1508 EXPECT_TRUE(CheckRtp1()); |
| 1533 EXPECT_TRUE(CheckRtp2()); | 1509 EXPECT_TRUE(CheckRtp2()); |
| 1534 EXPECT_TRUE(CheckNoRtp1()); | 1510 EXPECT_TRUE(CheckNoRtp1()); |
| 1535 EXPECT_TRUE(CheckNoRtp2()); | 1511 EXPECT_TRUE(CheckNoRtp2()); |
| 1536 } | 1512 } |
| 1537 | 1513 |
| 1538 void SendBundleToBundle( | 1514 void SendBundleToBundle( |
| 1539 const int* pl_types, int len, bool rtcp_mux, bool secure) { | 1515 const int* pl_types, int len, bool rtcp_mux, bool secure) { |
| 1540 ASSERT_EQ(2, len); | 1516 ASSERT_EQ(2, len); |
| 1541 int sequence_number1_1 = 0, sequence_number2_2 = 0; | 1517 int sequence_number1_1 = 0, sequence_number2_2 = 0; |
| 1542 // Only pl_type1 was added to the bundle filter for both |channel1_| | 1518 // Only pl_type1 was added to the bundle filter for both |channel1_| |
| 1543 // and |channel2_|. | 1519 // and |channel2_|. |
| 1544 int pl_type1 = pl_types[0]; | 1520 int pl_type1 = pl_types[0]; |
| 1545 int pl_type2 = pl_types[1]; | 1521 int pl_type2 = pl_types[1]; |
| 1546 int flags = SSRC_MUX | RTCP; | 1522 int flags = SSRC_MUX | RTCP; |
| 1547 if (secure) flags |= SECURE; | 1523 if (secure) flags |= SECURE; |
| 1548 uint32_t expected_channels = 2U; | 1524 uint32_t expected_channels = 2U; |
| 1549 if (rtcp_mux) { | 1525 if (rtcp_mux) { |
| 1550 flags |= RTCP_MUX; | 1526 flags |= RTCP_MUX; |
| 1551 expected_channels = 1U; | 1527 expected_channels = 1U; |
| 1552 } | 1528 } |
| 1553 CreateChannels(flags, flags); | 1529 CreateChannels(flags, flags); |
| 1554 EXPECT_TRUE(SendInitiate()); | 1530 EXPECT_TRUE(SendInitiate()); |
| 1555 ASSERT_TRUE(GetTransport1()); | 1531 EXPECT_EQ(2U, GetChannels1().size()); |
| 1556 ASSERT_TRUE(GetTransport2()); | 1532 EXPECT_EQ(expected_channels, GetChannels2().size()); |
| 1557 EXPECT_EQ(2U, GetTransport1()->channels().size()); | |
| 1558 EXPECT_EQ(expected_channels, GetTransport2()->channels().size()); | |
| 1559 EXPECT_TRUE(SendAccept()); | 1533 EXPECT_TRUE(SendAccept()); |
| 1560 EXPECT_EQ(expected_channels, GetTransport1()->channels().size()); | 1534 EXPECT_EQ(expected_channels, GetChannels1().size()); |
| 1561 EXPECT_EQ(expected_channels, GetTransport2()->channels().size()); | 1535 EXPECT_EQ(expected_channels, GetChannels2().size()); |
| 1562 EXPECT_TRUE(channel1_->bundle_filter()->FindPayloadType(pl_type1)); | 1536 EXPECT_TRUE(channel1_->bundle_filter()->FindPayloadType(pl_type1)); |
| 1563 EXPECT_TRUE(channel2_->bundle_filter()->FindPayloadType(pl_type1)); | 1537 EXPECT_TRUE(channel2_->bundle_filter()->FindPayloadType(pl_type1)); |
| 1564 EXPECT_FALSE(channel1_->bundle_filter()->FindPayloadType(pl_type2)); | 1538 EXPECT_FALSE(channel1_->bundle_filter()->FindPayloadType(pl_type2)); |
| 1565 EXPECT_FALSE(channel2_->bundle_filter()->FindPayloadType(pl_type2)); | 1539 EXPECT_FALSE(channel2_->bundle_filter()->FindPayloadType(pl_type2)); |
| 1566 | 1540 |
| 1567 // Both channels can receive pl_type1 only. | 1541 // Both channels can receive pl_type1 only. |
| 1568 SendCustomRtp1(kSsrc1, ++sequence_number1_1, pl_type1); | 1542 SendCustomRtp1(kSsrc1, ++sequence_number1_1, pl_type1); |
| 1569 SendCustomRtp2(kSsrc2, ++sequence_number2_2, pl_type1); | 1543 SendCustomRtp2(kSsrc2, ++sequence_number2_2, pl_type1); |
| 1570 WaitForThreads(); | 1544 WaitForThreads(); |
| 1571 EXPECT_TRUE(CheckCustomRtp2(kSsrc1, sequence_number1_1, pl_type1)); | 1545 EXPECT_TRUE(CheckCustomRtp2(kSsrc1, sequence_number1_1, pl_type1)); |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1731 sdesc3.get(), cricket::CA_ANSWER, &err)); | 1705 sdesc3.get(), cricket::CA_ANSWER, &err)); |
| 1732 EXPECT_TRUE(media_channel1_->HasSendStream(1)); | 1706 EXPECT_TRUE(media_channel1_->HasSendStream(1)); |
| 1733 EXPECT_FALSE(media_channel1_->HasRecvStream(2)); | 1707 EXPECT_FALSE(media_channel1_->HasRecvStream(2)); |
| 1734 EXPECT_TRUE(media_channel1_->HasRecvStream(3)); | 1708 EXPECT_TRUE(media_channel1_->HasRecvStream(3)); |
| 1735 } | 1709 } |
| 1736 | 1710 |
| 1737 void TestFlushRtcp() { | 1711 void TestFlushRtcp() { |
| 1738 CreateChannels(RTCP, RTCP); | 1712 CreateChannels(RTCP, RTCP); |
| 1739 EXPECT_TRUE(SendInitiate()); | 1713 EXPECT_TRUE(SendInitiate()); |
| 1740 EXPECT_TRUE(SendAccept()); | 1714 EXPECT_TRUE(SendAccept()); |
| 1741 ASSERT_TRUE(GetTransport1()); | 1715 EXPECT_EQ(2U, GetChannels1().size()); |
| 1742 ASSERT_TRUE(GetTransport2()); | 1716 EXPECT_EQ(2U, GetChannels2().size()); |
| 1743 EXPECT_EQ(2U, GetTransport1()->channels().size()); | |
| 1744 EXPECT_EQ(2U, GetTransport2()->channels().size()); | |
| 1745 | 1717 |
| 1746 // Send RTCP1 from a different thread. | 1718 // Send RTCP1 from a different thread. |
| 1747 ScopedCallThread send_rtcp([this] { SendRtcp1(); }); | 1719 ScopedCallThread send_rtcp([this] { SendRtcp1(); }); |
| 1748 // The sending message is only posted. channel2_ should be empty. | 1720 // The sending message is only posted. channel2_ should be empty. |
| 1749 EXPECT_TRUE(CheckNoRtcp2()); | 1721 EXPECT_TRUE(CheckNoRtcp2()); |
| 1750 rtc::Thread* wait_for[] = {send_rtcp.thread()}; | 1722 rtc::Thread* wait_for[] = {send_rtcp.thread()}; |
| 1751 WaitForThreads(wait_for); // Ensure rtcp was posted | 1723 WaitForThreads(wait_for); // Ensure rtcp was posted |
| 1752 | 1724 |
| 1753 // When channel1_ is deleted, the RTCP packet should be sent out to | 1725 // When channel1_ is deleted, the RTCP packet should be sent out to |
| 1754 // channel2_. | 1726 // channel2_. |
| (...skipping 1923 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3678 }; | 3650 }; |
| 3679 rtc::CopyOnWriteBuffer payload(data, 3); | 3651 rtc::CopyOnWriteBuffer payload(data, 3); |
| 3680 cricket::SendDataResult result; | 3652 cricket::SendDataResult result; |
| 3681 ASSERT_TRUE(media_channel1_->SendData(params, payload, &result)); | 3653 ASSERT_TRUE(media_channel1_->SendData(params, payload, &result)); |
| 3682 EXPECT_EQ(params.ssrc, | 3654 EXPECT_EQ(params.ssrc, |
| 3683 media_channel1_->last_sent_data_params().ssrc); | 3655 media_channel1_->last_sent_data_params().ssrc); |
| 3684 EXPECT_EQ("foo", media_channel1_->last_sent_data()); | 3656 EXPECT_EQ("foo", media_channel1_->last_sent_data()); |
| 3685 } | 3657 } |
| 3686 | 3658 |
| 3687 // TODO(pthatcher): TestSetReceiver? | 3659 // TODO(pthatcher): TestSetReceiver? |
| OLD | NEW |