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

Side by Side Diff: webrtc/modules/pacing/paced_sender_unittest.cc

Issue 2929213002: Remove duplicate-handling logic from PacedSender
Patch Set: . Created 3 years, 6 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
« no previous file with comments | « webrtc/modules/pacing/paced_sender.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 SendAndExpectPacket(PacedSender::kNormalPriority, ssrc, sequence_number++, 248 SendAndExpectPacket(PacedSender::kNormalPriority, ssrc, sequence_number++,
249 clock_.TimeInMilliseconds(), 250, false); 249 clock_.TimeInMilliseconds(), 250, false);
250 } 250 }
251 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, 251 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc,
252 sequence_number, clock_.TimeInMilliseconds(), 250, 252 sequence_number, clock_.TimeInMilliseconds(), 250,
253 false); 253 false);
254 send_bucket_->Process(); 254 send_bucket_->Process();
255 EXPECT_EQ(1u, send_bucket_->QueueSizePackets()); 255 EXPECT_EQ(1u, send_bucket_->QueueSizePackets());
256 } 256 }
257 257
258 TEST_F(PacedSenderTest, PaceQueuedPacketsWithDuplicates) { 258 TEST_F(PacedSenderTest, RepeatedRetransmissionsAllowed) {
259 uint32_t ssrc = 12345; 259 // Send one packet, then two retransmissions of that packet.
260 uint16_t sequence_number = 1234; 260 for (size_t i = 0; i < 3; i++) {
261 uint16_t queued_sequence_number; 261 constexpr uint32_t ssrc = 333;
262 262 constexpr uint16_t sequence_number = 444;
263 // Due to the multiplicative factor we can send 5 packets during a send 263 constexpr size_t bytes = 250;
264 // interval. (network capacity * multiplier / (8 bits per byte * 264 bool is_retransmission = (i != 0); // Original followed by retransmissions.
265 // (packet size * #send intervals per second) 265 SendAndExpectPacket(PacedSender::kNormalPriority, ssrc, sequence_number,
266 const size_t packets_to_send_per_interval = 266 clock_.TimeInMilliseconds(), bytes, is_retransmission);
267 kTargetBitrateBps * PacedSender::kDefaultPaceMultiplier / (8 * 250 * 200); 267 clock_.AdvanceTimeMilliseconds(5);
268 for (size_t i = 0; i < packets_to_send_per_interval; ++i) {
269 SendAndExpectPacket(PacedSender::kNormalPriority, ssrc, sequence_number++,
270 clock_.TimeInMilliseconds(), 250, false);
271 } 268 }
272 queued_sequence_number = sequence_number;
273
274 for (size_t j = 0; j < packets_to_send_per_interval * 10; ++j) {
275 // Send in duplicate packets.
276 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc,
277 sequence_number, clock_.TimeInMilliseconds(),
278 250, false);
279 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc,
280 sequence_number++, clock_.TimeInMilliseconds(),
281 250, false);
282 }
283 EXPECT_CALL(callback_, TimeToSendPadding(_, _)).Times(0);
284 send_bucket_->Process(); 269 send_bucket_->Process();
285 for (int k = 0; k < 10; ++k) {
286 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess());
287 clock_.AdvanceTimeMilliseconds(5);
288
289 for (size_t i = 0; i < packets_to_send_per_interval; ++i) {
290 EXPECT_CALL(callback_,
291 TimeToSendPacket(ssrc, queued_sequence_number++, _, false, _))
292 .Times(1)
293 .WillRepeatedly(Return(true));
294 }
295 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess());
296 send_bucket_->Process();
297 }
298 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess());
299 clock_.AdvanceTimeMilliseconds(5);
300 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess());
301 send_bucket_->Process();
302
303 for (size_t i = 0; i < packets_to_send_per_interval; ++i) {
304 SendAndExpectPacket(PacedSender::kNormalPriority, ssrc, sequence_number++,
305 clock_.TimeInMilliseconds(), 250, false);
306 }
307 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc,
308 sequence_number++, clock_.TimeInMilliseconds(),
309 250, false);
310 send_bucket_->Process();
311 EXPECT_EQ(1u, send_bucket_->QueueSizePackets());
312 } 270 }
313 271
314 TEST_F(PacedSenderTest, CanQueuePacketsWithSameSequenceNumberOnDifferentSsrcs) { 272 TEST_F(PacedSenderTest, CanQueuePacketsWithSameSequenceNumberOnDifferentSsrcs) {
315 uint32_t ssrc = 12345; 273 uint32_t ssrc = 12345;
316 uint16_t sequence_number = 1234; 274 uint16_t sequence_number = 1234;
317 275
318 SendAndExpectPacket(PacedSender::kNormalPriority, 276 SendAndExpectPacket(PacedSender::kNormalPriority,
319 ssrc, 277 ssrc,
320 sequence_number, 278 sequence_number,
321 clock_.TimeInMilliseconds(), 279 clock_.TimeInMilliseconds(),
(...skipping 767 matching lines...) Expand 10 before | Expand all | Expand 10 after
1089 .WillRepeatedly(Return(0)); 1047 .WillRepeatedly(Return(0));
1090 send_bucket_->Process(); 1048 send_bucket_->Process();
1091 EXPECT_EQ(1, send_bucket_->TimeUntilNextProcess()); 1049 EXPECT_EQ(1, send_bucket_->TimeUntilNextProcess());
1092 clock_.AdvanceTimeMilliseconds(1); 1050 clock_.AdvanceTimeMilliseconds(1);
1093 send_bucket_->Process(); 1051 send_bucket_->Process();
1094 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); 1052 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess());
1095 } 1053 }
1096 1054
1097 } // namespace test 1055 } // namespace test
1098 } // namespace webrtc 1056 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/pacing/paced_sender.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698