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

Side by Side Diff: webrtc/call/bitrate_estimator_tests.cc

Issue 2998923002: Use SingleThreadedTaskQueue in DirectTransport (Closed)
Patch Set: Response to nisse's CR. Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 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 #include <functional> 10 #include <functional>
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 static const int kTOFExtensionId = 4; 95 static const int kTOFExtensionId = 4;
96 static const int kASTExtensionId = 5; 96 static const int kASTExtensionId = 5;
97 97
98 class BitrateEstimatorTest : public test::CallTest { 98 class BitrateEstimatorTest : public test::CallTest {
99 public: 99 public:
100 BitrateEstimatorTest() : receive_config_(nullptr) {} 100 BitrateEstimatorTest() : receive_config_(nullptr) {}
101 101
102 virtual ~BitrateEstimatorTest() { EXPECT_TRUE(streams_.empty()); } 102 virtual ~BitrateEstimatorTest() { EXPECT_TRUE(streams_.empty()); }
103 103
104 virtual void SetUp() { 104 virtual void SetUp() {
105 Call::Config config(event_log_.get()); 105 task_queue_.SendTask([this]() {
106 receiver_call_.reset(Call::Create(config)); 106 Call::Config config(event_log_.get());
107 sender_call_.reset(Call::Create(config)); 107 receiver_call_.reset(Call::Create(config));
108 sender_call_.reset(Call::Create(config));
108 109
109 send_transport_.reset( 110 send_transport_.reset(new test::DirectTransport(
110 new test::DirectTransport(sender_call_.get(), payload_type_map_)); 111 &task_queue_, sender_call_.get(), payload_type_map_));
111 send_transport_->SetReceiver(receiver_call_->Receiver()); 112 send_transport_->SetReceiver(receiver_call_->Receiver());
112 receive_transport_.reset( 113 receive_transport_.reset(new test::DirectTransport(
113 new test::DirectTransport(receiver_call_.get(), payload_type_map_)); 114 &task_queue_, receiver_call_.get(), payload_type_map_));
114 receive_transport_->SetReceiver(sender_call_->Receiver()); 115 receive_transport_->SetReceiver(sender_call_->Receiver());
115 116
116 video_send_config_ = VideoSendStream::Config(send_transport_.get()); 117 video_send_config_ = VideoSendStream::Config(send_transport_.get());
117 video_send_config_.rtp.ssrcs.push_back(kVideoSendSsrcs[0]); 118 video_send_config_.rtp.ssrcs.push_back(kVideoSendSsrcs[0]);
118 // Encoders will be set separately per stream. 119 // Encoders will be set separately per stream.
119 video_send_config_.encoder_settings.encoder = nullptr; 120 video_send_config_.encoder_settings.encoder = nullptr;
120 video_send_config_.encoder_settings.payload_name = "FAKE"; 121 video_send_config_.encoder_settings.payload_name = "FAKE";
121 video_send_config_.encoder_settings.payload_type = 122 video_send_config_.encoder_settings.payload_type =
122 kFakeVideoSendPayloadType; 123 kFakeVideoSendPayloadType;
123 test::FillEncoderConfiguration(1, &video_encoder_config_); 124 test::FillEncoderConfiguration(1, &video_encoder_config_);
124 125
125 receive_config_ = VideoReceiveStream::Config(receive_transport_.get()); 126 receive_config_ = VideoReceiveStream::Config(receive_transport_.get());
126 // receive_config_.decoders will be set by every stream separately. 127 // receive_config_.decoders will be set by every stream separately.
127 receive_config_.rtp.remote_ssrc = video_send_config_.rtp.ssrcs[0]; 128 receive_config_.rtp.remote_ssrc = video_send_config_.rtp.ssrcs[0];
128 receive_config_.rtp.local_ssrc = kReceiverLocalVideoSsrc; 129 receive_config_.rtp.local_ssrc = kReceiverLocalVideoSsrc;
129 receive_config_.rtp.remb = true; 130 receive_config_.rtp.remb = true;
130 receive_config_.rtp.extensions.push_back( 131 receive_config_.rtp.extensions.push_back(
131 RtpExtension(RtpExtension::kTimestampOffsetUri, kTOFExtensionId)); 132 RtpExtension(RtpExtension::kTimestampOffsetUri, kTOFExtensionId));
132 receive_config_.rtp.extensions.push_back( 133 receive_config_.rtp.extensions.push_back(
133 RtpExtension(RtpExtension::kAbsSendTimeUri, kASTExtensionId)); 134 RtpExtension(RtpExtension::kAbsSendTimeUri, kASTExtensionId));
135 });
134 } 136 }
135 137
136 virtual void TearDown() { 138 virtual void TearDown() {
137 std::for_each(streams_.begin(), streams_.end(), 139 task_queue_.SendTask([this]() {
138 std::mem_fun(&Stream::StopSending)); 140 std::for_each(streams_.begin(), streams_.end(),
141 std::mem_fun(&Stream::StopSending));
139 142
140 send_transport_->StopSending(); 143 while (!streams_.empty()) {
nisse-webrtc 2017/08/21 09:07:07 Why is StopSending no longer needed? Also dropped
eladalon 2017/08/21 10:56:53 reset() both stops as well as deallocates, so Stop
141 receive_transport_->StopSending(); 144 delete streams_.back();
145 streams_.pop_back();
146 }
142 147
143 while (!streams_.empty()) { 148 send_transport_.reset();
144 delete streams_.back(); 149 receive_transport_.reset();
145 streams_.pop_back();
146 }
147 150
148 receiver_call_.reset(); 151 receiver_call_.reset();
149 sender_call_.reset(); 152 sender_call_.reset();
153 });
150 } 154 }
151 155
152 protected: 156 protected:
153 friend class Stream; 157 friend class Stream;
154 158
155 class Stream { 159 class Stream {
156 public: 160 public:
157 explicit Stream(BitrateEstimatorTest* test) 161 explicit Stream(BitrateEstimatorTest* test)
158 : test_(test), 162 : test_(test),
159 is_sending_receiving_(false), 163 is_sending_receiving_(false),
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 VideoReceiveStream::Config receive_config_; 238 VideoReceiveStream::Config receive_config_;
235 std::vector<Stream*> streams_; 239 std::vector<Stream*> streams_;
236 }; 240 };
237 241
238 static const char* kAbsSendTimeLog = 242 static const char* kAbsSendTimeLog =
239 "RemoteBitrateEstimatorAbsSendTime: Instantiating."; 243 "RemoteBitrateEstimatorAbsSendTime: Instantiating.";
240 static const char* kSingleStreamLog = 244 static const char* kSingleStreamLog =
241 "RemoteBitrateEstimatorSingleStream: Instantiating."; 245 "RemoteBitrateEstimatorSingleStream: Instantiating.";
242 246
243 TEST_F(BitrateEstimatorTest, InstantiatesTOFPerDefaultForVideo) { 247 TEST_F(BitrateEstimatorTest, InstantiatesTOFPerDefaultForVideo) {
244 video_send_config_.rtp.extensions.push_back( 248 task_queue_.SendTask([this]() {
245 RtpExtension(RtpExtension::kTimestampOffsetUri, kTOFExtensionId)); 249 video_send_config_.rtp.extensions.push_back(
246 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 250 RtpExtension(RtpExtension::kTimestampOffsetUri, kTOFExtensionId));
247 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 251 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
248 streams_.push_back(new Stream(this)); 252 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
253 streams_.push_back(new Stream(this));
254 });
249 EXPECT_TRUE(receiver_log_.Wait()); 255 EXPECT_TRUE(receiver_log_.Wait());
250 } 256 }
251 257
252 TEST_F(BitrateEstimatorTest, ImmediatelySwitchToASTForVideo) { 258 TEST_F(BitrateEstimatorTest, ImmediatelySwitchToASTForVideo) {
253 video_send_config_.rtp.extensions.push_back( 259 task_queue_.SendTask([this]() {
254 RtpExtension(RtpExtension::kAbsSendTimeUri, kASTExtensionId)); 260 video_send_config_.rtp.extensions.push_back(
255 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 261 RtpExtension(RtpExtension::kAbsSendTimeUri, kASTExtensionId));
256 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 262 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
257 receiver_log_.PushExpectedLogLine("Switching to absolute send time RBE."); 263 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
258 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog); 264 receiver_log_.PushExpectedLogLine("Switching to absolute send time RBE.");
259 streams_.push_back(new Stream(this)); 265 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog);
266 streams_.push_back(new Stream(this));
267 });
260 EXPECT_TRUE(receiver_log_.Wait()); 268 EXPECT_TRUE(receiver_log_.Wait());
261 } 269 }
262 270
263 TEST_F(BitrateEstimatorTest, SwitchesToASTForVideo) { 271 TEST_F(BitrateEstimatorTest, SwitchesToASTForVideo) {
264 video_send_config_.rtp.extensions.push_back( 272 task_queue_.SendTask([this]() {
265 RtpExtension(RtpExtension::kTimestampOffsetUri, kTOFExtensionId)); 273 video_send_config_.rtp.extensions.push_back(
266 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 274 RtpExtension(RtpExtension::kTimestampOffsetUri, kTOFExtensionId));
267 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 275 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
268 streams_.push_back(new Stream(this)); 276 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
277 streams_.push_back(new Stream(this));
278 });
269 EXPECT_TRUE(receiver_log_.Wait()); 279 EXPECT_TRUE(receiver_log_.Wait());
270 280
271 video_send_config_.rtp.extensions[0] = 281 task_queue_.SendTask([this]() {
272 RtpExtension(RtpExtension::kAbsSendTimeUri, kASTExtensionId); 282 video_send_config_.rtp.extensions[0] =
273 receiver_log_.PushExpectedLogLine("Switching to absolute send time RBE."); 283 RtpExtension(RtpExtension::kAbsSendTimeUri, kASTExtensionId);
274 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog); 284 receiver_log_.PushExpectedLogLine("Switching to absolute send time RBE.");
275 streams_.push_back(new Stream(this)); 285 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog);
286 streams_.push_back(new Stream(this));
287 });
276 EXPECT_TRUE(receiver_log_.Wait()); 288 EXPECT_TRUE(receiver_log_.Wait());
277 } 289 }
278 290
279 // This test is flaky. See webrtc:5790. 291 // This test is flaky. See webrtc:5790.
280 TEST_F(BitrateEstimatorTest, DISABLED_SwitchesToASTThenBackToTOFForVideo) { 292 TEST_F(BitrateEstimatorTest, DISABLED_SwitchesToASTThenBackToTOFForVideo) {
281 video_send_config_.rtp.extensions.push_back( 293 task_queue_.SendTask([this]() {
282 RtpExtension(RtpExtension::kTimestampOffsetUri, kTOFExtensionId)); 294 video_send_config_.rtp.extensions.push_back(
283 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 295 RtpExtension(RtpExtension::kTimestampOffsetUri, kTOFExtensionId));
284 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog); 296 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
285 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 297 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog);
286 streams_.push_back(new Stream(this)); 298 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
299 streams_.push_back(new Stream(this));
300 });
287 EXPECT_TRUE(receiver_log_.Wait()); 301 EXPECT_TRUE(receiver_log_.Wait());
288 302
289 video_send_config_.rtp.extensions[0] = 303 task_queue_.SendTask([this]() {
290 RtpExtension(RtpExtension::kAbsSendTimeUri, kASTExtensionId); 304 video_send_config_.rtp.extensions[0] =
291 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog); 305 RtpExtension(RtpExtension::kAbsSendTimeUri, kASTExtensionId);
292 receiver_log_.PushExpectedLogLine("Switching to absolute send time RBE."); 306 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog);
293 streams_.push_back(new Stream(this)); 307 receiver_log_.PushExpectedLogLine("Switching to absolute send time RBE.");
308 streams_.push_back(new Stream(this));
309 });
294 EXPECT_TRUE(receiver_log_.Wait()); 310 EXPECT_TRUE(receiver_log_.Wait());
295 311
296 video_send_config_.rtp.extensions[0] = 312 task_queue_.SendTask([this]() {
297 RtpExtension(RtpExtension::kTimestampOffsetUri, kTOFExtensionId); 313 video_send_config_.rtp.extensions[0] =
298 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog); 314 RtpExtension(RtpExtension::kTimestampOffsetUri, kTOFExtensionId);
299 receiver_log_.PushExpectedLogLine( 315 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog);
300 "WrappingBitrateEstimator: Switching to transmission time offset RBE."); 316 receiver_log_.PushExpectedLogLine(
301 streams_.push_back(new Stream(this)); 317 "WrappingBitrateEstimator: Switching to transmission time offset RBE.");
302 streams_[0]->StopSending(); 318 streams_.push_back(new Stream(this));
303 streams_[1]->StopSending(); 319 streams_[0]->StopSending();
320 streams_[1]->StopSending();
321 });
304 EXPECT_TRUE(receiver_log_.Wait()); 322 EXPECT_TRUE(receiver_log_.Wait());
305 } 323 }
306 } // namespace webrtc 324 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698