| Index: webrtc/modules/pacing/packet_router_unittest.cc
|
| diff --git a/webrtc/modules/pacing/packet_router_unittest.cc b/webrtc/modules/pacing/packet_router_unittest.cc
|
| index a0688ffbbed8aff9eeced7cb3ce10439652772d2..967fdccae0d7b61fdf489c57b69a622fb84a0edc 100644
|
| --- a/webrtc/modules/pacing/packet_router_unittest.cc
|
| +++ b/webrtc/modules/pacing/packet_router_unittest.cc
|
| @@ -21,6 +21,7 @@
|
|
|
| using ::testing::_;
|
| using ::testing::AnyNumber;
|
| +using ::testing::Field;
|
| using ::testing::NiceMock;
|
| using ::testing::Return;
|
|
|
| @@ -30,6 +31,8 @@ class PacketRouterTest : public ::testing::Test {
|
| public:
|
| PacketRouterTest() : packet_router_(new PacketRouter()) {}
|
| protected:
|
| + static const int kProbeMinProbes = 5;
|
| + static const int kProbeMinBytes = 1000;
|
| const std::unique_ptr<PacketRouter> packet_router_;
|
| };
|
|
|
| @@ -47,13 +50,15 @@ TEST_F(PacketRouterTest, TimeToSendPacket) {
|
| // Send on the first module by letting rtp_1 be sending with correct ssrc.
|
| EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(true));
|
| EXPECT_CALL(rtp_1, SSRC()).Times(1).WillOnce(Return(kSsrc1));
|
| - EXPECT_CALL(rtp_1, TimeToSendPacket(kSsrc1, sequence_number, timestamp,
|
| - retransmission, 1))
|
| + EXPECT_CALL(rtp_1, TimeToSendPacket(
|
| + kSsrc1, sequence_number, timestamp, retransmission,
|
| + Field(&PacedPacketInfo::probe_cluster_id, 1)))
|
| .Times(1)
|
| .WillOnce(Return(true));
|
| EXPECT_CALL(rtp_2, TimeToSendPacket(_, _, _, _, _)).Times(0);
|
| - EXPECT_TRUE(packet_router_->TimeToSendPacket(kSsrc1, sequence_number,
|
| - timestamp, retransmission, 1));
|
| + EXPECT_TRUE(packet_router_->TimeToSendPacket(
|
| + kSsrc1, sequence_number, timestamp, retransmission,
|
| + PacedPacketInfo(1, kProbeMinProbes, kProbeMinBytes)));
|
|
|
| // Send on the second module by letting rtp_2 be sending, but not rtp_1.
|
| ++sequence_number;
|
| @@ -64,20 +69,23 @@ TEST_F(PacketRouterTest, TimeToSendPacket) {
|
| EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true));
|
| EXPECT_CALL(rtp_2, SSRC()).Times(1).WillOnce(Return(kSsrc2));
|
| EXPECT_CALL(rtp_1, TimeToSendPacket(_, _, _, _, _)).Times(0);
|
| - EXPECT_CALL(rtp_2, TimeToSendPacket(kSsrc2, sequence_number, timestamp,
|
| - retransmission, 2))
|
| + EXPECT_CALL(rtp_2, TimeToSendPacket(
|
| + kSsrc2, sequence_number, timestamp, retransmission,
|
| + Field(&PacedPacketInfo::probe_cluster_id, 2)))
|
| .Times(1)
|
| .WillOnce(Return(true));
|
| - EXPECT_TRUE(packet_router_->TimeToSendPacket(kSsrc2, sequence_number,
|
| - timestamp, retransmission, 2));
|
| + EXPECT_TRUE(packet_router_->TimeToSendPacket(
|
| + kSsrc2, sequence_number, timestamp, retransmission,
|
| + PacedPacketInfo(2, kProbeMinProbes, kProbeMinBytes)));
|
|
|
| // No module is sending, hence no packet should be sent.
|
| EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(false));
|
| EXPECT_CALL(rtp_1, TimeToSendPacket(_, _, _, _, _)).Times(0);
|
| EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(false));
|
| EXPECT_CALL(rtp_2, TimeToSendPacket(_, _, _, _, _)).Times(0);
|
| - EXPECT_TRUE(packet_router_->TimeToSendPacket(kSsrc1, sequence_number,
|
| - timestamp, retransmission, 1));
|
| + EXPECT_TRUE(packet_router_->TimeToSendPacket(
|
| + kSsrc1, sequence_number, timestamp, retransmission,
|
| + PacedPacketInfo(1, kProbeMinProbes, kProbeMinBytes)));
|
|
|
| // Add a packet with incorrect ssrc and test it's dropped in the router.
|
| EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(true));
|
| @@ -86,8 +94,9 @@ TEST_F(PacketRouterTest, TimeToSendPacket) {
|
| EXPECT_CALL(rtp_2, SSRC()).Times(1).WillOnce(Return(kSsrc2));
|
| EXPECT_CALL(rtp_1, TimeToSendPacket(_, _, _, _, _)).Times(0);
|
| EXPECT_CALL(rtp_2, TimeToSendPacket(_, _, _, _, _)).Times(0);
|
| - EXPECT_TRUE(packet_router_->TimeToSendPacket(kSsrc1 + kSsrc2, sequence_number,
|
| - timestamp, retransmission, 1));
|
| + EXPECT_TRUE(packet_router_->TimeToSendPacket(
|
| + kSsrc1 + kSsrc2, sequence_number, timestamp, retransmission,
|
| + PacedPacketInfo(1, kProbeMinProbes, kProbeMinBytes)));
|
|
|
| packet_router_->RemoveRtpModule(&rtp_1);
|
|
|
| @@ -96,9 +105,10 @@ TEST_F(PacketRouterTest, TimeToSendPacket) {
|
| EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true));
|
| EXPECT_CALL(rtp_2, SSRC()).Times(1).WillOnce(Return(kSsrc2));
|
| EXPECT_CALL(rtp_2, TimeToSendPacket(_, _, _, _, _)).Times(0);
|
| - EXPECT_TRUE(packet_router_->TimeToSendPacket(kSsrc1, sequence_number,
|
| - timestamp, retransmission,
|
| - PacketInfo::kNotAProbe));
|
| + EXPECT_TRUE(packet_router_->TimeToSendPacket(
|
| + kSsrc1, sequence_number, timestamp, retransmission,
|
| + PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes,
|
| + kProbeMinBytes)));
|
|
|
| packet_router_->RemoveRtpModule(&rtp_2);
|
| }
|
| @@ -123,17 +133,22 @@ TEST_F(PacketRouterTest, TimeToSendPadding) {
|
| const size_t sent_padding_bytes = 890;
|
| EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true));
|
| EXPECT_CALL(rtp_2, HasBweExtensions()).Times(1).WillOnce(Return(true));
|
| - EXPECT_CALL(rtp_2, TimeToSendPadding(requested_padding_bytes, 111))
|
| + EXPECT_CALL(rtp_2,
|
| + TimeToSendPadding(requested_padding_bytes,
|
| + Field(&PacedPacketInfo::probe_cluster_id, 111)))
|
| .Times(1)
|
| .WillOnce(Return(sent_padding_bytes));
|
| EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(true));
|
| EXPECT_CALL(rtp_1, HasBweExtensions()).Times(1).WillOnce(Return(true));
|
| - EXPECT_CALL(rtp_1, TimeToSendPadding(
|
| - requested_padding_bytes - sent_padding_bytes, 111))
|
| + EXPECT_CALL(rtp_1,
|
| + TimeToSendPadding(requested_padding_bytes - sent_padding_bytes,
|
| + Field(&PacedPacketInfo::probe_cluster_id, 111)))
|
| .Times(1)
|
| .WillOnce(Return(requested_padding_bytes - sent_padding_bytes));
|
| EXPECT_EQ(requested_padding_bytes,
|
| - packet_router_->TimeToSendPadding(requested_padding_bytes, 111));
|
| + packet_router_->TimeToSendPadding(
|
| + requested_padding_bytes,
|
| + PacedPacketInfo(111, kProbeMinBytes, kProbeMinBytes)));
|
|
|
| // Let only the lower priority module be sending and verify the padding
|
| // request is routed there.
|
| @@ -145,16 +160,21 @@ TEST_F(PacketRouterTest, TimeToSendPadding) {
|
| .Times(1)
|
| .WillOnce(Return(sent_padding_bytes));
|
| EXPECT_EQ(sent_padding_bytes,
|
| - packet_router_->TimeToSendPadding(requested_padding_bytes,
|
| - PacketInfo::kNotAProbe));
|
| + packet_router_->TimeToSendPadding(
|
| + requested_padding_bytes,
|
| + PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes,
|
| + kProbeMinBytes)));
|
|
|
| // No sending module at all.
|
| EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(false));
|
| EXPECT_CALL(rtp_1, TimeToSendPadding(requested_padding_bytes, _)).Times(0);
|
| EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(false));
|
| EXPECT_CALL(rtp_2, TimeToSendPadding(_, _)).Times(0);
|
| - EXPECT_EQ(0u, packet_router_->TimeToSendPadding(requested_padding_bytes,
|
| - PacketInfo::kNotAProbe));
|
| + EXPECT_EQ(0u,
|
| + packet_router_->TimeToSendPadding(
|
| + requested_padding_bytes,
|
| + PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes,
|
| + kProbeMinBytes)));
|
|
|
| // Only one module has BWE extensions.
|
| EXPECT_CALL(rtp_1, SendingMedia()).Times(1).WillOnce(Return(true));
|
| @@ -166,8 +186,10 @@ TEST_F(PacketRouterTest, TimeToSendPadding) {
|
| .Times(1)
|
| .WillOnce(Return(sent_padding_bytes));
|
| EXPECT_EQ(sent_padding_bytes,
|
| - packet_router_->TimeToSendPadding(requested_padding_bytes,
|
| - PacketInfo::kNotAProbe));
|
| + packet_router_->TimeToSendPadding(
|
| + requested_padding_bytes,
|
| + PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes,
|
| + kProbeMinBytes)));
|
|
|
| packet_router_->RemoveRtpModule(&rtp_1);
|
|
|
| @@ -176,8 +198,11 @@ TEST_F(PacketRouterTest, TimeToSendPadding) {
|
| EXPECT_CALL(rtp_2, SendingMedia()).Times(1).WillOnce(Return(true));
|
| EXPECT_CALL(rtp_2, HasBweExtensions()).Times(1).WillOnce(Return(true));
|
| EXPECT_CALL(rtp_2, TimeToSendPadding(requested_padding_bytes, _)).Times(1);
|
| - EXPECT_EQ(0u, packet_router_->TimeToSendPadding(requested_padding_bytes,
|
| - PacketInfo::kNotAProbe));
|
| + EXPECT_EQ(0u,
|
| + packet_router_->TimeToSendPadding(
|
| + requested_padding_bytes,
|
| + PacedPacketInfo(PacedPacketInfo::kNotAProbe, kProbeMinBytes,
|
| + kProbeMinBytes)));
|
|
|
| packet_router_->RemoveRtpModule(&rtp_2);
|
| }
|
| @@ -191,11 +216,15 @@ TEST_F(PacketRouterTest, SenderOnlyFunctionsRespectSendingMedia) {
|
|
|
| // Verify that TimeToSendPacket does not end up in a receiver.
|
| EXPECT_CALL(rtp, TimeToSendPacket(_, _, _, _, _)).Times(0);
|
| - EXPECT_TRUE(packet_router_->TimeToSendPacket(kSsrc, 1, 1, false,
|
| - PacketInfo::kNotAProbe));
|
| + EXPECT_TRUE(packet_router_->TimeToSendPacket(
|
| + kSsrc, 1, 1, false, PacedPacketInfo(PacedPacketInfo::kNotAProbe,
|
| + kProbeMinBytes, kProbeMinBytes)));
|
| // Verify that TimeToSendPadding does not end up in a receiver.
|
| EXPECT_CALL(rtp, TimeToSendPadding(_, _)).Times(0);
|
| - EXPECT_EQ(0u, packet_router_->TimeToSendPadding(200, PacketInfo::kNotAProbe));
|
| + EXPECT_EQ(0u,
|
| + packet_router_->TimeToSendPadding(
|
| + 200, PacedPacketInfo(PacedPacketInfo::kNotAProbe,
|
| + kProbeMinBytes, kProbeMinBytes)));
|
|
|
| packet_router_->RemoveRtpModule(&rtp);
|
| }
|
|
|