Avoid sending empty receiver reports with RtcpTransceiver

Bug: None
Change-Id: Ia017c2df285febefb72ba88ba43366455bde5a78
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/222402
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34281}
This commit is contained in:
Danil Chapovalov
2021-06-14 16:56:02 +02:00
committed by WebRTC LUCI CQ
parent 8b6929081e
commit e5f1a3992e
2 changed files with 47 additions and 2 deletions

View File

@ -38,6 +38,7 @@ namespace {
using ::testing::_;
using ::testing::ElementsAre;
using ::testing::NiceMock;
using ::testing::Return;
using ::testing::SizeIs;
using ::testing::StrictMock;
@ -392,6 +393,47 @@ TEST(RtcpTransceiverImplTest, SendsMinimalCompoundPacket) {
EXPECT_EQ(rtcp_parser.sdes()->chunks()[0].cname, config.cname);
}
TEST(RtcpTransceiverImplTest, AvoidsEmptyPacketsInReducedMode) {
MockTransport transport;
EXPECT_CALL(transport, SendRtcp).Times(0);
NiceMock<MockReceiveStatisticsProvider> receive_statistics;
SimulatedClock clock(0);
RtcpTransceiverConfig config = DefaultTestConfig();
config.clock = &clock;
config.outgoing_transport = &transport;
config.rtcp_mode = webrtc::RtcpMode::kReducedSize;
config.schedule_periodic_compound_packets = false;
config.receive_statistics = &receive_statistics;
RtcpTransceiverImpl rtcp_transceiver(config);
rtcp_transceiver.SendCompoundPacket();
}
TEST(RtcpTransceiverImplTest, AvoidsEmptyReceiverReportsInReducedMode) {
RtcpPacketParser rtcp_parser;
RtcpParserTransport transport(&rtcp_parser);
NiceMock<MockReceiveStatisticsProvider> receive_statistics;
SimulatedClock clock(0);
RtcpTransceiverConfig config = DefaultTestConfig();
config.clock = &clock;
config.outgoing_transport = &transport;
config.rtcp_mode = webrtc::RtcpMode::kReducedSize;
config.schedule_periodic_compound_packets = false;
config.receive_statistics = &receive_statistics;
// Set it to produce something (RRTR) in the "periodic" rtcp packets.
config.non_sender_rtt_measurement = true;
RtcpTransceiverImpl rtcp_transceiver(config);
// Rather than waiting for the right time to produce the periodic packet,
// trigger it manually.
rtcp_transceiver.SendCompoundPacket();
EXPECT_EQ(rtcp_parser.receiver_report()->num_packets(), 0);
EXPECT_GT(rtcp_parser.xr()->num_packets(), 0);
}
TEST(RtcpTransceiverImplTest, SendsNoRembInitially) {
const uint32_t kSenderSsrc = 12345;
SimulatedClock clock(0);