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

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

Issue 1962303002: Added cluster id to PacedSender::Callback::TimeToSendPacket. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Cluster id no longer a member of paced_sender::Packet. Created 4 years, 7 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) 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
11 #include <list> 11 #include <list>
12 #include <memory> 12 #include <memory>
13 13
14 #include "testing/gmock/include/gmock/gmock.h" 14 #include "testing/gmock/include/gmock/gmock.h"
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 #include "webrtc/modules/pacing/paced_sender.h" 16 #include "webrtc/modules/pacing/paced_sender.h"
17 #include "webrtc/system_wrappers/include/clock.h" 17 #include "webrtc/system_wrappers/include/clock.h"
18 18
19 using testing::_; 19 using testing::_;
20 using testing::Return; 20 using testing::Return;
21 21
22 namespace webrtc { 22 namespace webrtc {
23 namespace test { 23 namespace test {
24 24
25 static const int kTargetBitrate = 800; 25 static const int kTargetBitrate = 800;
26 static const float kPaceMultiplier = 1.5f; 26 static const float kPaceMultiplier = 1.5f;
27 27
28 class MockPacedSenderCallback : public PacedSender::Callback { 28 class MockPacedSenderCallback : public PacedSender::Callback {
29 public: 29 public:
30 MOCK_METHOD4(TimeToSendPacket, 30 MOCK_METHOD5(TimeToSendPacket,
31 bool(uint32_t ssrc, 31 bool(uint32_t ssrc,
32 uint16_t sequence_number, 32 uint16_t sequence_number,
33 int64_t capture_time_ms, 33 int64_t capture_time_ms,
34 bool retransmission)); 34 bool retransmission,
35 int cluster_id));
35 MOCK_METHOD1(TimeToSendPadding, 36 MOCK_METHOD1(TimeToSendPadding,
36 size_t(size_t bytes)); 37 size_t(size_t bytes));
37 }; 38 };
38 39
39 class PacedSenderPadding : public PacedSender::Callback { 40 class PacedSenderPadding : public PacedSender::Callback {
40 public: 41 public:
41 PacedSenderPadding() : padding_sent_(0) {} 42 PacedSenderPadding() : padding_sent_(0) {}
42 43
43 bool TimeToSendPacket(uint32_t ssrc, 44 bool TimeToSendPacket(uint32_t ssrc,
44 uint16_t sequence_number, 45 uint16_t sequence_number,
45 int64_t capture_time_ms, 46 int64_t capture_time_ms,
46 bool retransmission) { 47 bool retransmission,
48 int cluster_id) override {
47 return true; 49 return true;
48 } 50 }
49 51
50 size_t TimeToSendPadding(size_t bytes) { 52 size_t TimeToSendPadding(size_t bytes) {
51 const size_t kPaddingPacketSize = 224; 53 const size_t kPaddingPacketSize = 224;
52 size_t num_packets = (bytes + kPaddingPacketSize - 1) / kPaddingPacketSize; 54 size_t num_packets = (bytes + kPaddingPacketSize - 1) / kPaddingPacketSize;
53 padding_sent_ += kPaddingPacketSize * num_packets; 55 padding_sent_ += kPaddingPacketSize * num_packets;
54 return kPaddingPacketSize * num_packets; 56 return kPaddingPacketSize * num_packets;
55 } 57 }
56 58
57 size_t padding_sent() { return padding_sent_; } 59 size_t padding_sent() { return padding_sent_; }
58 60
59 private: 61 private:
60 size_t padding_sent_; 62 size_t padding_sent_;
61 }; 63 };
62 64
63 class PacedSenderProbing : public PacedSender::Callback { 65 class PacedSenderProbing : public PacedSender::Callback {
64 public: 66 public:
65 PacedSenderProbing(const std::list<int>& expected_deltas, Clock* clock) 67 PacedSenderProbing(const std::list<int>& expected_deltas, Clock* clock)
66 : prev_packet_time_ms_(-1), 68 : prev_packet_time_ms_(-1),
67 expected_deltas_(expected_deltas), 69 expected_deltas_(expected_deltas),
68 packets_sent_(0), 70 packets_sent_(0),
69 clock_(clock) {} 71 clock_(clock) {}
70 72
71 bool TimeToSendPacket(uint32_t ssrc, 73 bool TimeToSendPacket(uint32_t ssrc,
72 uint16_t sequence_number, 74 uint16_t sequence_number,
73 int64_t capture_time_ms, 75 int64_t capture_time_ms,
74 bool retransmission) { 76 bool retransmission,
77 int cluster_id) override {
75 ExpectAndCountPacket(); 78 ExpectAndCountPacket();
76 return true; 79 return true;
77 } 80 }
78 81
79 size_t TimeToSendPadding(size_t bytes) { 82 size_t TimeToSendPadding(size_t bytes) {
80 ExpectAndCountPacket(); 83 ExpectAndCountPacket();
81 return bytes; 84 return bytes;
82 } 85 }
83 86
84 void ExpectAndCountPacket() { 87 void ExpectAndCountPacket() {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 } 123 }
121 124
122 void SendAndExpectPacket(PacedSender::Priority priority, 125 void SendAndExpectPacket(PacedSender::Priority priority,
123 uint32_t ssrc, 126 uint32_t ssrc,
124 uint16_t sequence_number, 127 uint16_t sequence_number,
125 int64_t capture_time_ms, 128 int64_t capture_time_ms,
126 size_t size, 129 size_t size,
127 bool retransmission) { 130 bool retransmission) {
128 send_bucket_->InsertPacket(priority, ssrc, sequence_number, capture_time_ms, 131 send_bucket_->InsertPacket(priority, ssrc, sequence_number, capture_time_ms,
129 size, retransmission); 132 size, retransmission);
130 EXPECT_CALL(callback_, 133 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number,
131 TimeToSendPacket(ssrc, sequence_number, capture_time_ms, false)) 134 capture_time_ms, false, _))
132 .Times(1) 135 .Times(1)
133 .WillRepeatedly(Return(true)); 136 .WillRepeatedly(Return(true));
134 } 137 }
135 138
136 SimulatedClock clock_; 139 SimulatedClock clock_;
137 MockPacedSenderCallback callback_; 140 MockPacedSenderCallback callback_;
138 std::unique_ptr<PacedSender> send_bucket_; 141 std::unique_ptr<PacedSender> send_bucket_;
139 }; 142 };
140 143
141 TEST_F(PacedSenderTest, QueuePacket) { 144 TEST_F(PacedSenderTest, QueuePacket) {
(...skipping 22 matching lines...) Expand all
164 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, 167 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc,
165 sequence_number, queued_packet_timestamp, 250, 168 sequence_number, queued_packet_timestamp, 250,
166 false); 169 false);
167 send_bucket_->Process(); 170 send_bucket_->Process();
168 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); 171 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess());
169 EXPECT_CALL(callback_, TimeToSendPadding(_)).Times(0); 172 EXPECT_CALL(callback_, TimeToSendPadding(_)).Times(0);
170 clock_.AdvanceTimeMilliseconds(4); 173 clock_.AdvanceTimeMilliseconds(4);
171 EXPECT_EQ(1, send_bucket_->TimeUntilNextProcess()); 174 EXPECT_EQ(1, send_bucket_->TimeUntilNextProcess());
172 clock_.AdvanceTimeMilliseconds(1); 175 clock_.AdvanceTimeMilliseconds(1);
173 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); 176 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess());
174 EXPECT_CALL( 177 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number++,
175 callback_, 178 queued_packet_timestamp, false, _))
176 TimeToSendPacket(ssrc, sequence_number++, queued_packet_timestamp, false))
177 .Times(1) 179 .Times(1)
178 .WillRepeatedly(Return(true)); 180 .WillRepeatedly(Return(true));
179 send_bucket_->Process(); 181 send_bucket_->Process();
180 sequence_number++; 182 sequence_number++;
181 SendAndExpectPacket(PacedSender::kNormalPriority, 183 SendAndExpectPacket(PacedSender::kNormalPriority,
182 ssrc, 184 ssrc,
183 sequence_number++, 185 sequence_number++,
184 clock_.TimeInMilliseconds(), 186 clock_.TimeInMilliseconds(),
185 250, 187 250,
186 false); 188 false);
(...skipping 25 matching lines...) Expand all
212 for (int j = 0; j < 30; ++j) { 214 for (int j = 0; j < 30; ++j) {
213 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, 215 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc,
214 sequence_number++, clock_.TimeInMilliseconds(), 216 sequence_number++, clock_.TimeInMilliseconds(),
215 250, false); 217 250, false);
216 } 218 }
217 send_bucket_->Process(); 219 send_bucket_->Process();
218 EXPECT_CALL(callback_, TimeToSendPadding(_)).Times(0); 220 EXPECT_CALL(callback_, TimeToSendPadding(_)).Times(0);
219 for (int k = 0; k < 10; ++k) { 221 for (int k = 0; k < 10; ++k) {
220 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); 222 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess());
221 clock_.AdvanceTimeMilliseconds(5); 223 clock_.AdvanceTimeMilliseconds(5);
222 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, _, _, false)) 224 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, _, _, false, _))
223 .Times(3) 225 .Times(3)
224 .WillRepeatedly(Return(true)); 226 .WillRepeatedly(Return(true));
225 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); 227 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess());
226 send_bucket_->Process(); 228 send_bucket_->Process();
227 } 229 }
228 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); 230 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess());
229 clock_.AdvanceTimeMilliseconds(5); 231 clock_.AdvanceTimeMilliseconds(5);
230 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); 232 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess());
231 send_bucket_->Process(); 233 send_bucket_->Process();
232 SendAndExpectPacket(PacedSender::kNormalPriority, 234 SendAndExpectPacket(PacedSender::kNormalPriority,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 250, false); 281 250, false);
280 } 282 }
281 EXPECT_CALL(callback_, TimeToSendPadding(_)).Times(0); 283 EXPECT_CALL(callback_, TimeToSendPadding(_)).Times(0);
282 send_bucket_->Process(); 284 send_bucket_->Process();
283 for (int k = 0; k < 10; ++k) { 285 for (int k = 0; k < 10; ++k) {
284 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); 286 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess());
285 clock_.AdvanceTimeMilliseconds(5); 287 clock_.AdvanceTimeMilliseconds(5);
286 288
287 for (int i = 0; i < 3; ++i) { 289 for (int i = 0; i < 3; ++i) {
288 EXPECT_CALL(callback_, 290 EXPECT_CALL(callback_,
289 TimeToSendPacket(ssrc, queued_sequence_number++, _, false)) 291 TimeToSendPacket(ssrc, queued_sequence_number++, _, false, _))
290 .Times(1) 292 .Times(1)
291 .WillRepeatedly(Return(true)); 293 .WillRepeatedly(Return(true));
292 } 294 }
293 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); 295 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess());
294 send_bucket_->Process(); 296 send_bucket_->Process();
295 } 297 }
296 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); 298 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess());
297 clock_.AdvanceTimeMilliseconds(5); 299 clock_.AdvanceTimeMilliseconds(5);
298 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); 300 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess());
299 send_bucket_->Process(); 301 send_bucket_->Process();
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 sequence_number++, capture_time_ms, 250, false); 475 sequence_number++, capture_time_ms, 250, false);
474 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, 476 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc,
475 sequence_number++, capture_time_ms, 250, false); 477 sequence_number++, capture_time_ms, 250, false);
476 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, 478 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc,
477 sequence_number++, capture_time_ms, 250, false); 479 sequence_number++, capture_time_ms, 250, false);
478 send_bucket_->InsertPacket(PacedSender::kHighPriority, ssrc, 480 send_bucket_->InsertPacket(PacedSender::kHighPriority, ssrc,
479 sequence_number++, capture_time_ms, 250, false); 481 sequence_number++, capture_time_ms, 250, false);
480 482
481 // Expect all high and normal priority to be sent out first. 483 // Expect all high and normal priority to be sent out first.
482 EXPECT_CALL(callback_, TimeToSendPadding(_)).Times(0); 484 EXPECT_CALL(callback_, TimeToSendPadding(_)).Times(0);
483 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, _, capture_time_ms, false)) 485 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, _, capture_time_ms, false, _))
484 .Times(4) 486 .Times(4)
485 .WillRepeatedly(Return(true)); 487 .WillRepeatedly(Return(true));
486 488
487 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); 489 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess());
488 clock_.AdvanceTimeMilliseconds(5); 490 clock_.AdvanceTimeMilliseconds(5);
489 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); 491 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess());
490 send_bucket_->Process(); 492 send_bucket_->Process();
491 493
492 EXPECT_CALL(callback_, 494 EXPECT_CALL(callback_,
493 TimeToSendPacket( 495 TimeToSendPacket(ssrc_low_priority, _,
494 ssrc_low_priority, _, capture_time_ms_low_priority, false)) 496 capture_time_ms_low_priority, false, _))
495 .Times(1) 497 .Times(1)
496 .WillRepeatedly(Return(true)); 498 .WillRepeatedly(Return(true));
497 499
498 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); 500 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess());
499 clock_.AdvanceTimeMilliseconds(5); 501 clock_.AdvanceTimeMilliseconds(5);
500 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); 502 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess());
501 send_bucket_->Process(); 503 send_bucket_->Process();
502 } 504 }
503 505
504 TEST_F(PacedSenderTest, HighPrioDoesntAffectBudget) { 506 TEST_F(PacedSenderTest, HighPrioDoesntAffectBudget) {
(...skipping 12 matching lines...) Expand all
517 // 3 at once, the 4th should be queued. 519 // 3 at once, the 4th should be queued.
518 for (int i = 0; i < 3; ++i) { 520 for (int i = 0; i < 3; ++i) {
519 SendAndExpectPacket(PacedSender::kLowPriority, ssrc, sequence_number++, 521 SendAndExpectPacket(PacedSender::kLowPriority, ssrc, sequence_number++,
520 capture_time_ms, 250, false); 522 capture_time_ms, 250, false);
521 } 523 }
522 send_bucket_->InsertPacket(PacedSender::kLowPriority, ssrc, sequence_number, 524 send_bucket_->InsertPacket(PacedSender::kLowPriority, ssrc, sequence_number,
523 capture_time_ms, 250, false); 525 capture_time_ms, 250, false);
524 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); 526 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess());
525 clock_.AdvanceTimeMilliseconds(5); 527 clock_.AdvanceTimeMilliseconds(5);
526 send_bucket_->Process(); 528 send_bucket_->Process();
527 EXPECT_CALL(callback_, 529 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number++,
528 TimeToSendPacket(ssrc, sequence_number++, capture_time_ms, false)) 530 capture_time_ms, false, _))
529 .Times(1); 531 .Times(1);
530 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); 532 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess());
531 clock_.AdvanceTimeMilliseconds(5); 533 clock_.AdvanceTimeMilliseconds(5);
532 send_bucket_->Process(); 534 send_bucket_->Process();
533 } 535 }
534 536
535 TEST_F(PacedSenderTest, Pause) { 537 TEST_F(PacedSenderTest, Pause) {
536 uint32_t ssrc_low_priority = 12345; 538 uint32_t ssrc_low_priority = 12345;
537 uint32_t ssrc = 12346; 539 uint32_t ssrc = 12346;
538 uint16_t sequence_number = 1234; 540 uint16_t sequence_number = 1234;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 // Expect everything to be queued. 578 // Expect everything to be queued.
577 send_bucket_->InsertPacket(PacedSender::kLowPriority, ssrc_low_priority, 579 send_bucket_->InsertPacket(PacedSender::kLowPriority, ssrc_low_priority,
578 sequence_number++, second_capture_time_ms, 250, 580 sequence_number++, second_capture_time_ms, 250,
579 false); 581 false);
580 582
581 EXPECT_EQ(clock_.TimeInMilliseconds() - capture_time_ms, 583 EXPECT_EQ(clock_.TimeInMilliseconds() - capture_time_ms,
582 send_bucket_->QueueInMs()); 584 send_bucket_->QueueInMs());
583 585
584 // Expect no packet to come out while paused. 586 // Expect no packet to come out while paused.
585 EXPECT_CALL(callback_, TimeToSendPadding(_)).Times(0); 587 EXPECT_CALL(callback_, TimeToSendPadding(_)).Times(0);
586 EXPECT_CALL(callback_, TimeToSendPacket(_, _, _, _)).Times(0); 588 EXPECT_CALL(callback_, TimeToSendPacket(_, _, _, _, _)).Times(0);
587 589
588 for (int i = 0; i < 10; ++i) { 590 for (int i = 0; i < 10; ++i) {
589 clock_.AdvanceTimeMilliseconds(5); 591 clock_.AdvanceTimeMilliseconds(5);
590 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); 592 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess());
591 send_bucket_->Process(); 593 send_bucket_->Process();
592 } 594 }
593 // Expect high prio packets to come out first followed by all packets in the 595 // Expect high prio packets to come out first followed by all packets in the
594 // way they were added. 596 // way they were added.
595 EXPECT_CALL(callback_, TimeToSendPacket(_, _, capture_time_ms, false)) 597 EXPECT_CALL(callback_, TimeToSendPacket(_, _, capture_time_ms, false, _))
596 .Times(3) 598 .Times(3)
597 .WillRepeatedly(Return(true)); 599 .WillRepeatedly(Return(true));
598 EXPECT_CALL(callback_, TimeToSendPacket(_, _, second_capture_time_ms, false)) 600 EXPECT_CALL(callback_,
601 TimeToSendPacket(_, _, second_capture_time_ms, false, _))
599 .Times(1) 602 .Times(1)
600 .WillRepeatedly(Return(true)); 603 .WillRepeatedly(Return(true));
601 send_bucket_->Resume(); 604 send_bucket_->Resume();
602 605
603 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); 606 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess());
604 clock_.AdvanceTimeMilliseconds(5); 607 clock_.AdvanceTimeMilliseconds(5);
605 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); 608 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess());
606 send_bucket_->Process(); 609 send_bucket_->Process();
607 610
608 EXPECT_EQ(0, send_bucket_->QueueInMs()); 611 EXPECT_EQ(0, send_bucket_->QueueInMs());
609 } 612 }
610 613
611 TEST_F(PacedSenderTest, ResendPacket) { 614 TEST_F(PacedSenderTest, ResendPacket) {
612 uint32_t ssrc = 12346; 615 uint32_t ssrc = 12346;
613 uint16_t sequence_number = 1234; 616 uint16_t sequence_number = 1234;
614 int64_t capture_time_ms = clock_.TimeInMilliseconds(); 617 int64_t capture_time_ms = clock_.TimeInMilliseconds();
615 EXPECT_EQ(0, send_bucket_->QueueInMs()); 618 EXPECT_EQ(0, send_bucket_->QueueInMs());
616 619
617 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, 620 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc,
618 sequence_number, capture_time_ms, 250, false); 621 sequence_number, capture_time_ms, 250, false);
619 clock_.AdvanceTimeMilliseconds(1); 622 clock_.AdvanceTimeMilliseconds(1);
620 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, 623 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc,
621 sequence_number + 1, capture_time_ms + 1, 250, 624 sequence_number + 1, capture_time_ms + 1, 250,
622 false); 625 false);
623 clock_.AdvanceTimeMilliseconds(9999); 626 clock_.AdvanceTimeMilliseconds(9999);
624 EXPECT_EQ(clock_.TimeInMilliseconds() - capture_time_ms, 627 EXPECT_EQ(clock_.TimeInMilliseconds() - capture_time_ms,
625 send_bucket_->QueueInMs()); 628 send_bucket_->QueueInMs());
626 // Fails to send first packet so only one call. 629 // Fails to send first packet so only one call.
627 EXPECT_CALL(callback_, 630 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number,
628 TimeToSendPacket(ssrc, sequence_number, capture_time_ms, false)) 631 capture_time_ms, false, _))
629 .Times(1) 632 .Times(1)
630 .WillOnce(Return(false)); 633 .WillOnce(Return(false));
631 clock_.AdvanceTimeMilliseconds(10000); 634 clock_.AdvanceTimeMilliseconds(10000);
632 send_bucket_->Process(); 635 send_bucket_->Process();
633 636
634 // Queue remains unchanged. 637 // Queue remains unchanged.
635 EXPECT_EQ(clock_.TimeInMilliseconds() - capture_time_ms, 638 EXPECT_EQ(clock_.TimeInMilliseconds() - capture_time_ms,
636 send_bucket_->QueueInMs()); 639 send_bucket_->QueueInMs());
637 640
638 // Fails to send second packet. 641 // Fails to send second packet.
639 EXPECT_CALL(callback_, 642 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number,
640 TimeToSendPacket(ssrc, sequence_number, capture_time_ms, false)) 643 capture_time_ms, false, _))
641 .Times(1) 644 .Times(1)
642 .WillOnce(Return(true)); 645 .WillOnce(Return(true));
643 EXPECT_CALL( 646 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number + 1,
644 callback_, 647 capture_time_ms + 1, false, _))
645 TimeToSendPacket(ssrc, sequence_number + 1, capture_time_ms + 1, false))
646 .Times(1) 648 .Times(1)
647 .WillOnce(Return(false)); 649 .WillOnce(Return(false));
648 clock_.AdvanceTimeMilliseconds(10000); 650 clock_.AdvanceTimeMilliseconds(10000);
649 send_bucket_->Process(); 651 send_bucket_->Process();
650 652
651 // Queue is reduced by 1 packet. 653 // Queue is reduced by 1 packet.
652 EXPECT_EQ(clock_.TimeInMilliseconds() - capture_time_ms - 1, 654 EXPECT_EQ(clock_.TimeInMilliseconds() - capture_time_ms - 1,
653 send_bucket_->QueueInMs()); 655 send_bucket_->QueueInMs());
654 656
655 // Send second packet and queue becomes empty. 657 // Send second packet and queue becomes empty.
656 EXPECT_CALL( 658 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number + 1,
657 callback_, 659 capture_time_ms + 1, false, _))
658 TimeToSendPacket(ssrc, sequence_number + 1, capture_time_ms + 1, false))
659 .Times(1) 660 .Times(1)
660 .WillOnce(Return(true)); 661 .WillOnce(Return(true));
661 clock_.AdvanceTimeMilliseconds(10000); 662 clock_.AdvanceTimeMilliseconds(10000);
662 send_bucket_->Process(); 663 send_bucket_->Process();
663 EXPECT_EQ(0, send_bucket_->QueueInMs()); 664 EXPECT_EQ(0, send_bucket_->QueueInMs());
664 } 665 }
665 666
666 TEST_F(PacedSenderTest, ExpectedQueueTimeMs) { 667 TEST_F(PacedSenderTest, ExpectedQueueTimeMs) {
667 uint32_t ssrc = 12346; 668 uint32_t ssrc = 12346;
668 uint16_t sequence_number = 1234; 669 uint16_t sequence_number = 1234;
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
803 send_bucket_->InsertPacket(PacedSender::kHighPriority, ssrc, sequence_number, 804 send_bucket_->InsertPacket(PacedSender::kHighPriority, ssrc, sequence_number,
804 clock_.TimeInMilliseconds(), kPacketSize, true); 805 clock_.TimeInMilliseconds(), kPacketSize, true);
805 806
806 send_bucket_->InsertPacket(PacedSender::kHighPriority, ssrc, 807 send_bucket_->InsertPacket(PacedSender::kHighPriority, ssrc,
807 sequence_number + 1, clock_.TimeInMilliseconds(), 808 sequence_number + 1, clock_.TimeInMilliseconds(),
808 kPacketSize, true); 809 kPacketSize, true);
809 810
810 // Packets from earlier frames should be sent first. 811 // Packets from earlier frames should be sent first.
811 { 812 {
812 ::testing::InSequence sequence; 813 ::testing::InSequence sequence;
813 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number, 814 EXPECT_CALL(callback_,
814 clock_.TimeInMilliseconds(), true)) 815 TimeToSendPacket(ssrc, sequence_number,
816 clock_.TimeInMilliseconds(), true, _))
815 .WillOnce(Return(true)); 817 .WillOnce(Return(true));
816 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number + 1, 818 EXPECT_CALL(callback_,
817 clock_.TimeInMilliseconds(), true)) 819 TimeToSendPacket(ssrc, sequence_number + 1,
820 clock_.TimeInMilliseconds(), true, _))
818 .WillOnce(Return(true)); 821 .WillOnce(Return(true));
819 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number + 3, 822 EXPECT_CALL(callback_,
820 clock_.TimeInMilliseconds() + 33, 823 TimeToSendPacket(ssrc, sequence_number + 3,
821 true)).WillOnce(Return(true)); 824 clock_.TimeInMilliseconds() + 33, true, _))
822 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number + 2, 825 .WillOnce(Return(true));
823 clock_.TimeInMilliseconds() + 33, 826 EXPECT_CALL(callback_,
824 true)).WillOnce(Return(true)); 827 TimeToSendPacket(ssrc, sequence_number + 2,
828 clock_.TimeInMilliseconds() + 33, true, _))
829 .WillOnce(Return(true));
825 830
826 while (send_bucket_->QueueSizePackets() > 0) { 831 while (send_bucket_->QueueSizePackets() > 0) {
827 int time_until_process = send_bucket_->TimeUntilNextProcess(); 832 int time_until_process = send_bucket_->TimeUntilNextProcess();
828 if (time_until_process <= 0) { 833 if (time_until_process <= 0) {
829 send_bucket_->Process(); 834 send_bucket_->Process();
830 } else { 835 } else {
831 clock_.AdvanceTimeMilliseconds(time_until_process); 836 clock_.AdvanceTimeMilliseconds(time_until_process);
832 } 837 }
833 } 838 }
834 } 839 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
878 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, 883 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc,
879 sequence_number + 1, clock_.TimeInMilliseconds(), 884 sequence_number + 1, clock_.TimeInMilliseconds(),
880 kPacketSize, false); 885 kPacketSize, false);
881 clock_.AdvanceTimeMilliseconds(10); 886 clock_.AdvanceTimeMilliseconds(10);
882 887
883 EXPECT_EQ((20 + 10) / 2, send_bucket_->AverageQueueTimeMs()); 888 EXPECT_EQ((20 + 10) / 2, send_bucket_->AverageQueueTimeMs());
884 889
885 // Only first packet (queued for 20ms) should be removed, leave the second 890 // Only first packet (queued for 20ms) should be removed, leave the second
886 // packet (queued for 10ms) alone in the queue. 891 // packet (queued for 10ms) alone in the queue.
887 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number, 892 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number,
888 first_capture_time, false)) 893 first_capture_time, false, _))
889 .Times(1) 894 .Times(1)
890 .WillRepeatedly(Return(true)); 895 .WillRepeatedly(Return(true));
891 send_bucket_->Process(); 896 send_bucket_->Process();
892 897
893 EXPECT_EQ(10, send_bucket_->AverageQueueTimeMs()); 898 EXPECT_EQ(10, send_bucket_->AverageQueueTimeMs());
894 899
895 clock_.AdvanceTimeMilliseconds(10); 900 clock_.AdvanceTimeMilliseconds(10);
896 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number + 1, 901 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number + 1,
897 first_capture_time + 10, false)) 902 first_capture_time + 10, false, _))
898 .Times(1) 903 .Times(1)
899 .WillRepeatedly(Return(true)); 904 .WillRepeatedly(Return(true));
900 for (int i = 0; i < 3; ++i) { 905 for (int i = 0; i < 3; ++i) {
901 clock_.AdvanceTimeMilliseconds(30); // Max delta. 906 clock_.AdvanceTimeMilliseconds(30); // Max delta.
902 send_bucket_->Process(); 907 send_bucket_->Process();
903 } 908 }
904 909
905 EXPECT_EQ(0, send_bucket_->AverageQueueTimeMs()); 910 EXPECT_EQ(0, send_bucket_->AverageQueueTimeMs());
906 } 911 }
907 912
908 } // namespace test 913 } // namespace test
909 } // namespace webrtc 914 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698