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

Unified 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: Addded probing cluster unittest. 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/modules/pacing/paced_sender.cc ('k') | webrtc/modules/pacing/packet_router.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/pacing/paced_sender_unittest.cc
diff --git a/webrtc/modules/pacing/paced_sender_unittest.cc b/webrtc/modules/pacing/paced_sender_unittest.cc
index 4410377e5f8da9b9dd7bc98dbc437f8c89663630..6a0a006c32600f5bfe0489da183d3957d45b9e34 100644
--- a/webrtc/modules/pacing/paced_sender_unittest.cc
+++ b/webrtc/modules/pacing/paced_sender_unittest.cc
@@ -26,11 +26,12 @@ static const int kTargetBitrateBps = 800000;
class MockPacedSenderCallback : public PacedSender::PacketSender {
public:
- MOCK_METHOD4(TimeToSendPacket,
+ MOCK_METHOD5(TimeToSendPacket,
bool(uint32_t ssrc,
uint16_t sequence_number,
int64_t capture_time_ms,
- bool retransmission));
+ bool retransmission,
+ int probe_cluster_id));
MOCK_METHOD1(TimeToSendPadding,
size_t(size_t bytes));
};
@@ -42,11 +43,12 @@ class PacedSenderPadding : public PacedSender::PacketSender {
bool TimeToSendPacket(uint32_t ssrc,
uint16_t sequence_number,
int64_t capture_time_ms,
- bool retransmission) {
+ bool retransmission,
+ int probe_cluster_id) override {
return true;
}
- size_t TimeToSendPadding(size_t bytes) {
+ size_t TimeToSendPadding(size_t bytes) override {
const size_t kPaddingPacketSize = 224;
size_t num_packets = (bytes + kPaddingPacketSize - 1) / kPaddingPacketSize;
padding_sent_ += kPaddingPacketSize * num_packets;
@@ -70,12 +72,13 @@ class PacedSenderProbing : public PacedSender::PacketSender {
bool TimeToSendPacket(uint32_t ssrc,
uint16_t sequence_number,
int64_t capture_time_ms,
- bool retransmission) {
+ bool retransmission,
+ int probe_cluster_id) override {
ExpectAndCountPacket();
return true;
}
- size_t TimeToSendPadding(size_t bytes) {
+ size_t TimeToSendPadding(size_t bytes) override {
ExpectAndCountPacket();
return bytes;
}
@@ -125,8 +128,8 @@ class PacedSenderTest : public ::testing::Test {
bool retransmission) {
send_bucket_->InsertPacket(priority, ssrc, sequence_number, capture_time_ms,
size, retransmission);
- EXPECT_CALL(callback_,
- TimeToSendPacket(ssrc, sequence_number, capture_time_ms, false))
+ EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number,
+ capture_time_ms, false, _))
.Times(1)
.WillRepeatedly(Return(true));
}
@@ -162,8 +165,8 @@ TEST_F(PacedSenderTest, QueuePacket) {
clock_.AdvanceTimeMilliseconds(1);
EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess());
EXPECT_EQ(1u, send_bucket_->QueueSizePackets());
- EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number,
- queued_packet_timestamp, false))
+ EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number++,
+ queued_packet_timestamp, false, _))
.Times(1)
.WillRepeatedly(Return(true));
send_bucket_->Process();
@@ -212,7 +215,7 @@ TEST_F(PacedSenderTest, PaceQueuedPackets) {
for (int k = 0; k < 10; ++k) {
EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess());
clock_.AdvanceTimeMilliseconds(5);
- EXPECT_CALL(callback_, TimeToSendPacket(ssrc, _, _, false))
+ EXPECT_CALL(callback_, TimeToSendPacket(ssrc, _, _, false, _))
.Times(packets_to_send_per_interval)
.WillRepeatedly(Return(true));
EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess());
@@ -269,7 +272,7 @@ TEST_F(PacedSenderTest, PaceQueuedPacketsWithDuplicates) {
for (size_t i = 0; i < packets_to_send_per_interval; ++i) {
EXPECT_CALL(callback_,
- TimeToSendPacket(ssrc, queued_sequence_number++, _, false))
+ TimeToSendPacket(ssrc, queued_sequence_number++, _, false, _))
.Times(1)
.WillRepeatedly(Return(true));
}
@@ -441,7 +444,7 @@ TEST_F(PacedSenderTest, Priority) {
// Expect all high and normal priority to be sent out first.
EXPECT_CALL(callback_, TimeToSendPadding(_)).Times(0);
- EXPECT_CALL(callback_, TimeToSendPacket(ssrc, _, capture_time_ms, false))
+ EXPECT_CALL(callback_, TimeToSendPacket(ssrc, _, capture_time_ms, false, _))
.Times(packets_to_send_per_interval + 1)
.WillRepeatedly(Return(true));
@@ -452,8 +455,8 @@ TEST_F(PacedSenderTest, Priority) {
EXPECT_EQ(1u, send_bucket_->QueueSizePackets());
EXPECT_CALL(callback_,
- TimeToSendPacket(
- ssrc_low_priority, _, capture_time_ms_low_priority, false))
+ TimeToSendPacket(ssrc_low_priority, _,
+ capture_time_ms_low_priority, false, _))
.Times(1)
.WillRepeatedly(Return(true));
@@ -491,8 +494,8 @@ TEST_F(PacedSenderTest, HighPrioDoesntAffectBudget) {
clock_.AdvanceTimeMilliseconds(5);
send_bucket_->Process();
EXPECT_EQ(1u, send_bucket_->QueueSizePackets());
- EXPECT_CALL(callback_,
- TimeToSendPacket(ssrc, sequence_number++, capture_time_ms, false))
+ EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number++,
+ capture_time_ms, false, _))
.Times(1)
.WillRepeatedly(Return(true));
EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess());
@@ -543,7 +546,7 @@ TEST_F(PacedSenderTest, Pause) {
// Expect no packet to come out while paused.
EXPECT_CALL(callback_, TimeToSendPadding(_)).Times(0);
- EXPECT_CALL(callback_, TimeToSendPacket(_, _, _, _)).Times(0);
+ EXPECT_CALL(callback_, TimeToSendPacket(_, _, _, _, _)).Times(0);
for (int i = 0; i < 10; ++i) {
clock_.AdvanceTimeMilliseconds(5);
@@ -552,10 +555,11 @@ TEST_F(PacedSenderTest, Pause) {
}
// Expect high prio packets to come out first followed by all packets in the
// way they were added.
- EXPECT_CALL(callback_, TimeToSendPacket(_, _, capture_time_ms, false))
+ EXPECT_CALL(callback_, TimeToSendPacket(_, _, capture_time_ms, false, _))
.Times(3)
.WillRepeatedly(Return(true));
- EXPECT_CALL(callback_, TimeToSendPacket(_, _, second_capture_time_ms, false))
+ EXPECT_CALL(callback_,
+ TimeToSendPacket(_, _, second_capture_time_ms, false, _))
.Times(1)
.WillRepeatedly(Return(true));
send_bucket_->Resume();
@@ -584,8 +588,8 @@ TEST_F(PacedSenderTest, ResendPacket) {
EXPECT_EQ(clock_.TimeInMilliseconds() - capture_time_ms,
send_bucket_->QueueInMs());
// Fails to send first packet so only one call.
- EXPECT_CALL(callback_,
- TimeToSendPacket(ssrc, sequence_number, capture_time_ms, false))
+ EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number,
+ capture_time_ms, false, _))
.Times(1)
.WillOnce(Return(false));
clock_.AdvanceTimeMilliseconds(10000);
@@ -596,13 +600,12 @@ TEST_F(PacedSenderTest, ResendPacket) {
send_bucket_->QueueInMs());
// Fails to send second packet.
- EXPECT_CALL(callback_,
- TimeToSendPacket(ssrc, sequence_number, capture_time_ms, false))
+ EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number,
+ capture_time_ms, false, _))
.Times(1)
.WillOnce(Return(true));
- EXPECT_CALL(
- callback_,
- TimeToSendPacket(ssrc, sequence_number + 1, capture_time_ms + 1, false))
+ EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number + 1,
+ capture_time_ms + 1, false, _))
.Times(1)
.WillOnce(Return(false));
clock_.AdvanceTimeMilliseconds(10000);
@@ -613,9 +616,8 @@ TEST_F(PacedSenderTest, ResendPacket) {
send_bucket_->QueueInMs());
// Send second packet and queue becomes empty.
- EXPECT_CALL(
- callback_,
- TimeToSendPacket(ssrc, sequence_number + 1, capture_time_ms + 1, false))
+ EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number + 1,
+ capture_time_ms + 1, false, _))
.Times(1)
.WillOnce(Return(true));
clock_.AdvanceTimeMilliseconds(10000);
@@ -768,18 +770,22 @@ TEST_F(PacedSenderTest, PriorityInversion) {
// Packets from earlier frames should be sent first.
{
::testing::InSequence sequence;
- EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number,
- clock_.TimeInMilliseconds(), true))
+ EXPECT_CALL(callback_,
+ TimeToSendPacket(ssrc, sequence_number,
+ clock_.TimeInMilliseconds(), true, _))
.WillOnce(Return(true));
- EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number + 1,
- clock_.TimeInMilliseconds(), true))
+ EXPECT_CALL(callback_,
+ TimeToSendPacket(ssrc, sequence_number + 1,
+ clock_.TimeInMilliseconds(), true, _))
+ .WillOnce(Return(true));
+ EXPECT_CALL(callback_,
+ TimeToSendPacket(ssrc, sequence_number + 3,
+ clock_.TimeInMilliseconds() + 33, true, _))
+ .WillOnce(Return(true));
+ EXPECT_CALL(callback_,
+ TimeToSendPacket(ssrc, sequence_number + 2,
+ clock_.TimeInMilliseconds() + 33, true, _))
.WillOnce(Return(true));
- EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number + 3,
- clock_.TimeInMilliseconds() + 33,
- true)).WillOnce(Return(true));
- EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number + 2,
- clock_.TimeInMilliseconds() + 33,
- true)).WillOnce(Return(true));
while (send_bucket_->QueueSizePackets() > 0) {
int time_until_process = send_bucket_->TimeUntilNextProcess();
@@ -843,7 +849,7 @@ TEST_F(PacedSenderTest, AverageQueueTime) {
// Only first packet (queued for 20ms) should be removed, leave the second
// packet (queued for 10ms) alone in the queue.
EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number,
- first_capture_time, false))
+ first_capture_time, false, _))
.Times(1)
.WillRepeatedly(Return(true));
send_bucket_->Process();
@@ -852,7 +858,7 @@ TEST_F(PacedSenderTest, AverageQueueTime) {
clock_.AdvanceTimeMilliseconds(10);
EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number + 1,
- first_capture_time + 10, false))
+ first_capture_time + 10, false, _))
.Times(1)
.WillRepeatedly(Return(true));
for (int i = 0; i < 3; ++i) {
@@ -863,5 +869,37 @@ TEST_F(PacedSenderTest, AverageQueueTime) {
EXPECT_EQ(0, send_bucket_->AverageQueueTimeMs());
}
+TEST_F(PacedSenderTest, ProbeClusterId) {
+ uint32_t ssrc = 12346;
+ uint16_t sequence_number = 1234;
+ const size_t kPacketSize = 1200;
+
+ send_bucket_->SetProbingEnabled(true);
+ for (int i = 0; i < 11; ++i) {
+ send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc,
+ sequence_number + i, clock_.TimeInMilliseconds(),
+ kPacketSize, false);
+ }
+
+ // First probing cluster.
+ EXPECT_CALL(callback_, TimeToSendPacket(_, _, _, _, 0))
+ .Times(6)
+ .WillRepeatedly(Return(true));
+ for (int i = 0; i < 6; ++i)
+ send_bucket_->Process();
+
+ // Second probing cluster.
+ EXPECT_CALL(callback_, TimeToSendPacket(_, _, _, _, 1))
+ .Times(5)
+ .WillRepeatedly(Return(true));
+ for (int i = 0; i < 5; ++i)
+ send_bucket_->Process();
+
+ // No more probing packets.
+ EXPECT_CALL(callback_, TimeToSendPadding(_))
+ .Times(1);
+ send_bucket_->Process();
+}
+
} // namespace test
} // namespace webrtc
« no previous file with comments | « webrtc/modules/pacing/paced_sender.cc ('k') | webrtc/modules/pacing/packet_router.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698