Allow to turn RtcpTransciever on and off at runtime.
Bug: webrtc:8239 Change-Id: I8678d1ee9cd0da194a1243d40b508bb62cb3f257 Reviewed-on: https://webrtc-review.googlesource.com/60180 Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Reviewed-by: Niels Moller <nisse@webrtc.org> Cr-Commit-Position: refs/heads/master@{#22311}
This commit is contained in:

committed by
Commit Bot

parent
70473fcac4
commit
e3927c5885
@ -130,6 +130,8 @@ RtcpTransceiverConfig DefaultTestConfig() {
|
||||
RtcpTransceiverConfig config;
|
||||
config.outgoing_transport = &null_transport;
|
||||
config.schedule_periodic_compound_packets = false;
|
||||
config.initial_report_delay_ms = 10;
|
||||
config.report_period_ms = kReportPeriodMs;
|
||||
return config;
|
||||
}
|
||||
|
||||
@ -235,6 +237,71 @@ TEST(RtcpTransceiverImplTest, SendCompoundPacketDelaysPeriodicSendPackets) {
|
||||
ASSERT_TRUE(done.Wait(kAlmostForeverMs));
|
||||
}
|
||||
|
||||
TEST(RtcpTransceiverImplTest, SendsNoRtcpWhenNetworkStateIsDown) {
|
||||
MockTransport mock_transport;
|
||||
RtcpTransceiverConfig config = DefaultTestConfig();
|
||||
config.initial_ready_to_send = false;
|
||||
config.outgoing_transport = &mock_transport;
|
||||
RtcpTransceiverImpl rtcp_transceiver(config);
|
||||
|
||||
|
||||
EXPECT_CALL(mock_transport, SendRtcp(_, _)).Times(0);
|
||||
|
||||
const uint8_t raw[] = {1, 2, 3, 4};
|
||||
const std::vector<uint16_t> sequence_numbers = {45, 57};
|
||||
const uint32_t ssrcs[] = {123};
|
||||
rtcp_transceiver.SendCompoundPacket();
|
||||
rtcp_transceiver.SendRawPacket(raw);
|
||||
rtcp_transceiver.SendNack(ssrcs[0], sequence_numbers);
|
||||
rtcp_transceiver.SendPictureLossIndication(ssrcs[0]);
|
||||
rtcp_transceiver.SendFullIntraRequest(ssrcs);
|
||||
}
|
||||
|
||||
TEST(RtcpTransceiverImplTest, SendsRtcpWhenNetworkStateIsUp) {
|
||||
MockTransport mock_transport;
|
||||
RtcpTransceiverConfig config = DefaultTestConfig();
|
||||
config.initial_ready_to_send = false;
|
||||
config.outgoing_transport = &mock_transport;
|
||||
RtcpTransceiverImpl rtcp_transceiver(config);
|
||||
|
||||
rtcp_transceiver.SetReadyToSend(true);
|
||||
|
||||
EXPECT_CALL(mock_transport, SendRtcp(_, _)).Times(5);
|
||||
|
||||
const uint8_t raw[] = {1, 2, 3, 4};
|
||||
const std::vector<uint16_t> sequence_numbers = {45, 57};
|
||||
const uint32_t ssrcs[] = {123};
|
||||
rtcp_transceiver.SendCompoundPacket();
|
||||
rtcp_transceiver.SendRawPacket(raw);
|
||||
rtcp_transceiver.SendNack(ssrcs[0], sequence_numbers);
|
||||
rtcp_transceiver.SendPictureLossIndication(ssrcs[0]);
|
||||
rtcp_transceiver.SendFullIntraRequest(ssrcs);
|
||||
}
|
||||
|
||||
TEST(RtcpTransceiverImplTest, SendsPeriodicRtcpWhenNetworkStateIsUp) {
|
||||
rtc::TaskQueue queue("rtcp");
|
||||
FakeRtcpTransport transport;
|
||||
RtcpTransceiverConfig config = DefaultTestConfig();
|
||||
config.schedule_periodic_compound_packets = true;
|
||||
config.initial_ready_to_send = false;
|
||||
config.outgoing_transport = &transport;
|
||||
config.task_queue = &queue;
|
||||
rtc::Optional<RtcpTransceiverImpl> rtcp_transceiver;
|
||||
rtcp_transceiver.emplace(config);
|
||||
|
||||
rtcp_transceiver->SetReadyToSend(true);
|
||||
|
||||
EXPECT_TRUE(transport.WaitPacket());
|
||||
|
||||
// Cleanup.
|
||||
rtc::Event done(false, false);
|
||||
queue.PostTask([&] {
|
||||
rtcp_transceiver.reset();
|
||||
done.Set();
|
||||
});
|
||||
ASSERT_TRUE(done.Wait(kAlmostForeverMs));
|
||||
}
|
||||
|
||||
TEST(RtcpTransceiverImplTest, SendsMinimalCompoundPacket) {
|
||||
const uint32_t kSenderSsrc = 12345;
|
||||
RtcpTransceiverConfig config;
|
||||
|
Reference in New Issue
Block a user