diff options
Diffstat (limited to 'chromium/media/cast/rtcp/rtcp_receiver_unittest.cc')
-rw-r--r-- | chromium/media/cast/rtcp/rtcp_receiver_unittest.cc | 256 |
1 files changed, 106 insertions, 150 deletions
diff --git a/chromium/media/cast/rtcp/rtcp_receiver_unittest.cc b/chromium/media/cast/rtcp/rtcp_receiver_unittest.cc index b5c5d2d3889..51026d1554b 100644 --- a/chromium/media/cast/rtcp/rtcp_receiver_unittest.cc +++ b/chromium/media/cast/rtcp/rtcp_receiver_unittest.cc @@ -10,7 +10,8 @@ #include "media/cast/rtcp/rtcp_receiver.h" #include "media/cast/rtcp/rtcp_utility.h" #include "media/cast/rtcp/test_rtcp_packet_builder.h" -#include "media/cast/test/fake_task_runner.h" +#include "media/cast/test/fake_single_thread_task_runner.h" +#include "media/cast/transport/cast_transport_defines.h" #include "testing/gmock/include/gmock/gmock.h" namespace media { @@ -21,6 +22,7 @@ using testing::_; static const uint32 kSenderSsrc = 0x10203; static const uint32 kSourceSsrc = 0x40506; static const uint32 kUnknownSsrc = 0xDEAD; +static const uint16 kTargetDelayMs = 100; static const std::string kCName("test@10.1.1.1"); namespace { @@ -28,8 +30,8 @@ class SenderFeedbackCastVerification : public RtcpSenderFeedback { public: SenderFeedbackCastVerification() : called_(false) {} - virtual void OnReceivedCastFeedback( - const RtcpCastMessage& cast_feedback) OVERRIDE { + virtual void OnReceivedCastFeedback(const RtcpCastMessage& cast_feedback) + OVERRIDE { EXPECT_EQ(cast_feedback.media_ssrc_, kSenderSsrc); EXPECT_EQ(cast_feedback.ack_frame_id_, kAckFrameId); @@ -38,7 +40,8 @@ class SenderFeedbackCastVerification : public RtcpSenderFeedback { EXPECT_TRUE(frame_it != cast_feedback.missing_frames_and_packets_.end()); EXPECT_EQ(kLostFrameId, frame_it->first); - EXPECT_TRUE(frame_it->second.empty()); + EXPECT_EQ(frame_it->second.size(), 1UL); + EXPECT_EQ(*frame_it->second.begin(), kRtcpCastAllPacketsLost); ++frame_it; EXPECT_TRUE(frame_it != cast_feedback.missing_frames_and_packets_.end()); EXPECT_EQ(kFrameIdWithLostPackets, frame_it->first); @@ -58,6 +61,8 @@ class SenderFeedbackCastVerification : public RtcpSenderFeedback { private: bool called_; + + DISALLOW_COPY_AND_ASSIGN(SenderFeedbackCastVerification); }; class RtcpReceiverCastLogVerification : public RtcpReceiverFeedback { @@ -67,18 +72,18 @@ class RtcpReceiverCastLogVerification : public RtcpReceiverFeedback { called_on_received_receiver_log_(false) {} virtual void OnReceivedSenderReport( - const RtcpSenderInfo& remote_sender_info) OVERRIDE {}; + const transport::RtcpSenderInfo& remote_sender_info) OVERRIDE{}; virtual void OnReceiverReferenceTimeReport( - const RtcpReceiverReferenceTimeReport& remote_time_report) OVERRIDE {}; + const RtcpReceiverReferenceTimeReport& remote_time_report) OVERRIDE{}; - virtual void OnReceivedSendReportRequest() OVERRIDE {}; + virtual void OnReceivedSendReportRequest() OVERRIDE{}; - virtual void OnReceivedReceiverLog( - const RtcpReceiverLogMessage& receiver_log) OVERRIDE { + virtual void OnReceivedReceiverLog(const RtcpReceiverLogMessage& receiver_log) + OVERRIDE { EXPECT_EQ(expected_receiver_log_.size(), receiver_log.size()); RtcpReceiverLogMessage::const_iterator expected_it = - expected_receiver_log_.begin(); + expected_receiver_log_.begin(); RtcpReceiverLogMessage::const_iterator incoming_it = receiver_log.begin(); for (; incoming_it != receiver_log.end(); ++incoming_it) { EXPECT_EQ(expected_it->rtp_timestamp_, incoming_it->rtp_timestamp_); @@ -94,7 +99,7 @@ class RtcpReceiverCastLogVerification : public RtcpReceiverFeedback { EXPECT_EQ(event_expected_it->type, event_incoming_it->type); EXPECT_EQ(event_expected_it->event_timestamp, event_incoming_it->event_timestamp); - if (event_expected_it->type == kPacketReceived) { + if (event_expected_it->type == PACKET_RECEIVED) { EXPECT_EQ(event_expected_it->packet_id, event_incoming_it->packet_id); } else { EXPECT_EQ(event_expected_it->delay_delta, @@ -107,26 +112,6 @@ class RtcpReceiverCastLogVerification : public RtcpReceiverFeedback { called_on_received_receiver_log_ = true; } - virtual void OnReceivedSenderLog( - const RtcpSenderLogMessage& sender_log) OVERRIDE { - EXPECT_EQ(expected_sender_log_.size(), sender_log.size()); - - RtcpSenderLogMessage::const_iterator expected_it = - expected_sender_log_.begin(); - RtcpSenderLogMessage::const_iterator incoming_it = sender_log.begin(); - for (; expected_it != expected_sender_log_.end(); - ++expected_it, ++incoming_it) { - EXPECT_EQ(expected_it->frame_status, incoming_it->frame_status); - EXPECT_EQ(0xffffff & expected_it->rtp_timestamp, - incoming_it->rtp_timestamp); - } - called_on_received_sender_log_ = true; - } - - bool OnReceivedSenderLogCalled() { - return called_on_received_sender_log_; - } - bool OnReceivedReceiverLogCalled() { return called_on_received_receiver_log_ && expected_receiver_log_.empty(); } @@ -135,15 +120,12 @@ class RtcpReceiverCastLogVerification : public RtcpReceiverFeedback { expected_receiver_log_ = receiver_log; } - void SetExpectedSenderLog(const RtcpSenderLogMessage& sender_log) { - expected_sender_log_ = sender_log; - } - private: RtcpReceiverLogMessage expected_receiver_log_; - RtcpSenderLogMessage expected_sender_log_; bool called_on_received_sender_log_; bool called_on_received_receiver_log_; + + DISALLOW_COPY_AND_ASSIGN(RtcpReceiverCastLogVerification); }; } // namespace @@ -151,28 +133,26 @@ class RtcpReceiverCastLogVerification : public RtcpReceiverFeedback { class RtcpReceiverTest : public ::testing::Test { protected: RtcpReceiverTest() - : task_runner_(new test::FakeTaskRunner(&testing_clock_)), - cast_environment_(new CastEnvironment(&testing_clock_, task_runner_, - task_runner_, task_runner_, task_runner_, task_runner_, - GetDefaultCastLoggingConfig())), + : testing_clock_(new base::SimpleTestTickClock()), + task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)), + cast_environment_(new CastEnvironment( + scoped_ptr<base::TickClock>(testing_clock_).Pass(), + task_runner_, + task_runner_, + task_runner_)), rtcp_receiver_(new RtcpReceiver(cast_environment_, &mock_sender_feedback_, &mock_receiver_feedback_, &mock_rtt_feedback_, kSourceSsrc)) { - } - - virtual ~RtcpReceiverTest() {} - - virtual void SetUp() OVERRIDE { EXPECT_CALL(mock_receiver_feedback_, OnReceivedSenderReport(_)).Times(0); - EXPECT_CALL(mock_receiver_feedback_, - OnReceiverReferenceTimeReport(_)).Times(0); - EXPECT_CALL(mock_receiver_feedback_, - OnReceivedSendReportRequest()).Times(0); + EXPECT_CALL(mock_receiver_feedback_, OnReceiverReferenceTimeReport(_)) + .Times(0); + EXPECT_CALL(mock_receiver_feedback_, OnReceivedSendReportRequest()) + .Times(0); EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(0); - EXPECT_CALL(mock_rtt_feedback_, - OnReceivedDelaySinceLastReport(_, _, _)).Times(0); + EXPECT_CALL(mock_rtt_feedback_, OnReceivedDelaySinceLastReport(_, _, _)) + .Times(0); expected_sender_info_.ntp_seconds = kNtpHigh; expected_sender_info_.ntp_fraction = kNtpLow; @@ -193,22 +173,26 @@ class RtcpReceiverTest : public ::testing::Test { expected_receiver_reference_report_.ntp_fraction = kNtpLow; } + virtual ~RtcpReceiverTest() {} + // Injects an RTCP packet into the receiver. void InjectRtcpPacket(const uint8* packet, uint16 length) { RtcpParser rtcp_parser(packet, length); rtcp_receiver_->IncomingRtcpPacket(&rtcp_parser); } - base::SimpleTestTickClock testing_clock_; - scoped_refptr<test::FakeTaskRunner> task_runner_; + base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. + scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; scoped_refptr<CastEnvironment> cast_environment_; MockRtcpReceiverFeedback mock_receiver_feedback_; MockRtcpRttFeedback mock_rtt_feedback_; MockRtcpSenderFeedback mock_sender_feedback_; scoped_ptr<RtcpReceiver> rtcp_receiver_; - RtcpSenderInfo expected_sender_info_; - RtcpReportBlock expected_report_block_; + transport::RtcpSenderInfo expected_sender_info_; + transport::RtcpReportBlock expected_report_block_; RtcpReceiverReferenceTimeReport expected_receiver_reference_report_; + + DISALLOW_COPY_AND_ASSIGN(RtcpReceiverTest); }; TEST_F(RtcpReceiverTest, BrokenPacketIsIgnored) { @@ -222,14 +206,14 @@ TEST_F(RtcpReceiverTest, InjectSenderReportPacket) { // Expected to be ignored since the sender ssrc does not match our // remote ssrc. - InjectRtcpPacket(p.Packet(), p.Length()); + InjectRtcpPacket(p.Data(), p.Length()); EXPECT_CALL(mock_receiver_feedback_, OnReceivedSenderReport(expected_sender_info_)).Times(1); rtcp_receiver_->SetRemoteSSRC(kSenderSsrc); // Expected to be pass through since the sender ssrc match our remote ssrc. - InjectRtcpPacket(p.Packet(), p.Length()); + InjectRtcpPacket(p.Data(), p.Length()); } TEST_F(RtcpReceiverTest, InjectReceiveReportPacket) { @@ -239,19 +223,18 @@ TEST_F(RtcpReceiverTest, InjectReceiveReportPacket) { // Expected to be ignored since the source ssrc does not match our // local ssrc. - InjectRtcpPacket(p1.Packet(), p1.Length()); + InjectRtcpPacket(p1.Data(), p1.Length()); EXPECT_CALL(mock_rtt_feedback_, - OnReceivedDelaySinceLastReport(kSourceSsrc, - kLastSr, - kDelayLastSr)).Times(1); + OnReceivedDelaySinceLastReport( + kSourceSsrc, kLastSr, kDelayLastSr)).Times(1); TestRtcpPacketBuilder p2; p2.AddRr(kSenderSsrc, 1); p2.AddRb(kSourceSsrc); // Expected to be pass through since the sender ssrc match our local ssrc. - InjectRtcpPacket(p2.Packet(), p2.Length()); + InjectRtcpPacket(p2.Data(), p2.Length()); } TEST_F(RtcpReceiverTest, InjectSenderReportWithReportBlockPacket) { @@ -263,7 +246,7 @@ TEST_F(RtcpReceiverTest, InjectSenderReportWithReportBlockPacket) { // our remote ssrc. // Report block expected to be ignored since the source ssrc does not match // our local ssrc. - InjectRtcpPacket(p1.Packet(), p1.Length()); + InjectRtcpPacket(p1.Data(), p1.Length()); EXPECT_CALL(mock_receiver_feedback_, OnReceivedSenderReport(expected_sender_info_)).Times(1); @@ -273,13 +256,12 @@ TEST_F(RtcpReceiverTest, InjectSenderReportWithReportBlockPacket) { // remote ssrc. // Report block expected to be ignored since the source ssrc does not match // our local ssrc. - InjectRtcpPacket(p1.Packet(), p1.Length()); + InjectRtcpPacket(p1.Data(), p1.Length()); EXPECT_CALL(mock_receiver_feedback_, OnReceivedSenderReport(_)).Times(0); EXPECT_CALL(mock_rtt_feedback_, - OnReceivedDelaySinceLastReport(kSourceSsrc, - kLastSr, - kDelayLastSr)).Times(1); + OnReceivedDelaySinceLastReport( + kSourceSsrc, kLastSr, kDelayLastSr)).Times(1); rtcp_receiver_->SetRemoteSSRC(0); @@ -291,14 +273,13 @@ TEST_F(RtcpReceiverTest, InjectSenderReportWithReportBlockPacket) { // our remote ssrc. // Receiver report expected to be pass through since the sender ssrc match // our local ssrc. - InjectRtcpPacket(p2.Packet(), p2.Length()); + InjectRtcpPacket(p2.Data(), p2.Length()); EXPECT_CALL(mock_receiver_feedback_, OnReceivedSenderReport(expected_sender_info_)).Times(1); EXPECT_CALL(mock_rtt_feedback_, - OnReceivedDelaySinceLastReport(kSourceSsrc, - kLastSr, - kDelayLastSr)).Times(1); + OnReceivedDelaySinceLastReport( + kSourceSsrc, kLastSr, kDelayLastSr)).Times(1); rtcp_receiver_->SetRemoteSSRC(kSenderSsrc); @@ -306,7 +287,7 @@ TEST_F(RtcpReceiverTest, InjectSenderReportWithReportBlockPacket) { // remote ssrc. // Receiver report expected to be pass through since the sender ssrc match // our local ssrc. - InjectRtcpPacket(p2.Packet(), p2.Length()); + InjectRtcpPacket(p2.Data(), p2.Length()); } TEST_F(RtcpReceiverTest, InjectSenderReportPacketWithDlrr) { @@ -320,20 +301,19 @@ TEST_F(RtcpReceiverTest, InjectSenderReportPacketWithDlrr) { // Expected to be ignored since the source ssrc does not match our // local ssrc. - InjectRtcpPacket(p.Packet(), p.Length()); + InjectRtcpPacket(p.Data(), p.Length()); EXPECT_CALL(mock_receiver_feedback_, OnReceivedSenderReport(expected_sender_info_)).Times(1); EXPECT_CALL(mock_rtt_feedback_, - OnReceivedDelaySinceLastReport(kSenderSsrc, - kLastSr, - kDelayLastSr)).Times(1); + OnReceivedDelaySinceLastReport( + kSenderSsrc, kLastSr, kDelayLastSr)).Times(1); // Enable receiving sender report. rtcp_receiver_->SetRemoteSSRC(kSenderSsrc); // Expected to be pass through since the sender ssrc match our local ssrc. - InjectRtcpPacket(p.Packet(), p.Length()); + InjectRtcpPacket(p.Data(), p.Length()); } TEST_F(RtcpReceiverTest, InjectReceiverReportPacketWithRrtr) { @@ -345,14 +325,14 @@ TEST_F(RtcpReceiverTest, InjectReceiverReportPacketWithRrtr) { // Expected to be ignored since the source ssrc does not match our // local ssrc. - InjectRtcpPacket(p1.Packet(), p1.Length()); + InjectRtcpPacket(p1.Data(), p1.Length()); EXPECT_CALL(mock_rtt_feedback_, - OnReceivedDelaySinceLastReport(kSourceSsrc, - kLastSr, - kDelayLastSr)).Times(1); - EXPECT_CALL(mock_receiver_feedback_, OnReceiverReferenceTimeReport( - expected_receiver_reference_report_)).Times(1); + OnReceivedDelaySinceLastReport( + kSourceSsrc, kLastSr, kDelayLastSr)).Times(1); + EXPECT_CALL(mock_receiver_feedback_, + OnReceiverReferenceTimeReport( + expected_receiver_reference_report_)).Times(1); // Enable receiving reference time report. rtcp_receiver_->SetRemoteSSRC(kSenderSsrc); @@ -364,7 +344,7 @@ TEST_F(RtcpReceiverTest, InjectReceiverReportPacketWithRrtr) { p2.AddXrRrtrBlock(); // Expected to be pass through since the sender ssrc match our local ssrc. - InjectRtcpPacket(p2.Packet(), p2.Length()); + InjectRtcpPacket(p2.Data(), p2.Length()); } TEST_F(RtcpReceiverTest, InjectReceiverReportPacketWithIntraFrameRequest) { @@ -375,12 +355,11 @@ TEST_F(RtcpReceiverTest, InjectReceiverReportPacketWithIntraFrameRequest) { // Expected to be ignored since the source ssrc does not match our // local ssrc. - InjectRtcpPacket(p1.Packet(), p1.Length()); + InjectRtcpPacket(p1.Data(), p1.Length()); EXPECT_CALL(mock_rtt_feedback_, - OnReceivedDelaySinceLastReport(kSourceSsrc, - kLastSr, - kDelayLastSr)).Times(1); + OnReceivedDelaySinceLastReport( + kSourceSsrc, kLastSr, kDelayLastSr)).Times(1); TestRtcpPacketBuilder p2; p2.AddRr(kSenderSsrc, 1); @@ -388,23 +367,22 @@ TEST_F(RtcpReceiverTest, InjectReceiverReportPacketWithIntraFrameRequest) { p2.AddPli(kSenderSsrc, kSourceSsrc); // Expected to be pass through since the sender ssrc match our local ssrc. - InjectRtcpPacket(p2.Packet(), p2.Length()); + InjectRtcpPacket(p2.Data(), p2.Length()); } TEST_F(RtcpReceiverTest, InjectReceiverReportPacketWithCastFeedback) { TestRtcpPacketBuilder p1; p1.AddRr(kSenderSsrc, 1); p1.AddRb(kUnknownSsrc); - p1.AddCast(kSenderSsrc, kUnknownSsrc); + p1.AddCast(kSenderSsrc, kUnknownSsrc, kTargetDelayMs); // Expected to be ignored since the source ssrc does not match our // local ssrc. - InjectRtcpPacket(p1.Packet(), p1.Length()); + InjectRtcpPacket(p1.Data(), p1.Length()); EXPECT_CALL(mock_rtt_feedback_, - OnReceivedDelaySinceLastReport(kSourceSsrc, - kLastSr, - kDelayLastSr)).Times(1); + OnReceivedDelaySinceLastReport( + kSourceSsrc, kLastSr, kDelayLastSr)).Times(1); EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(1); // Enable receiving the cast feedback. @@ -413,10 +391,10 @@ TEST_F(RtcpReceiverTest, InjectReceiverReportPacketWithCastFeedback) { TestRtcpPacketBuilder p2; p2.AddRr(kSenderSsrc, 1); p2.AddRb(kSourceSsrc); - p2.AddCast(kSenderSsrc, kSourceSsrc); + p2.AddCast(kSenderSsrc, kSourceSsrc, kTargetDelayMs); // Expected to be pass through since the sender ssrc match our local ssrc. - InjectRtcpPacket(p2.Packet(), p2.Length()); + InjectRtcpPacket(p2.Data(), p2.Length()); } TEST_F(RtcpReceiverTest, InjectReceiverReportPacketWithCastVerification) { @@ -428,9 +406,8 @@ TEST_F(RtcpReceiverTest, InjectReceiverReportPacketWithCastVerification) { kSourceSsrc); EXPECT_CALL(mock_rtt_feedback_, - OnReceivedDelaySinceLastReport(kSourceSsrc, - kLastSr, - kDelayLastSr)).Times(1); + OnReceivedDelaySinceLastReport( + kSourceSsrc, kLastSr, kDelayLastSr)).Times(1); // Enable receiving the cast feedback. rtcp_receiver.SetRemoteSSRC(kSenderSsrc); @@ -438,48 +415,15 @@ TEST_F(RtcpReceiverTest, InjectReceiverReportPacketWithCastVerification) { TestRtcpPacketBuilder p; p.AddRr(kSenderSsrc, 1); p.AddRb(kSourceSsrc); - p.AddCast(kSenderSsrc, kSourceSsrc); + p.AddCast(kSenderSsrc, kSourceSsrc, kTargetDelayMs); // Expected to be pass through since the sender ssrc match our local ssrc. - RtcpParser rtcp_parser(p.Packet(), p.Length()); + RtcpParser rtcp_parser(p.Data(), p.Length()); rtcp_receiver.IncomingRtcpPacket(&rtcp_parser); EXPECT_TRUE(sender_feedback_cast_verification.called()); } -TEST_F(RtcpReceiverTest, InjectSenderReportWithCastSenderLogVerification) { - RtcpReceiverCastLogVerification cast_log_verification; - RtcpReceiver rtcp_receiver(cast_environment_, - &mock_sender_feedback_, - &cast_log_verification, - &mock_rtt_feedback_, - kSourceSsrc); - rtcp_receiver.SetRemoteSSRC(kSenderSsrc); - - RtcpSenderLogMessage sender_log; - for (int j = 0; j < 359; ++j) { - RtcpSenderFrameLogMessage sender_frame_log; - sender_frame_log.frame_status = kRtcpSenderFrameStatusSentToNetwork; - sender_frame_log.rtp_timestamp = kRtpTimestamp + j * 90; - sender_log.push_back(sender_frame_log); - } - cast_log_verification.SetExpectedSenderLog(sender_log); - - TestRtcpPacketBuilder p; - p.AddSr(kSenderSsrc, 0); - p.AddSdesCname(kSenderSsrc, kCName); - p.AddSenderLog(kSenderSsrc); - - for (int i = 0; i < 359; ++i) { - p.AddSenderFrameLog(kRtcpSenderFrameStatusSentToNetwork, - kRtpTimestamp + i * 90); - } - RtcpParser rtcp_parser(p.Packet(), p.Length()); - rtcp_receiver.IncomingRtcpPacket(&rtcp_parser); - - EXPECT_TRUE(cast_log_verification.OnReceivedSenderLogCalled()); -} - TEST_F(RtcpReceiverTest, InjectReceiverReportWithReceiverLogVerificationBase) { static const uint32 kTimeBaseMs = 12345678; static const uint32 kTimeDelayMs = 10; @@ -494,21 +438,28 @@ TEST_F(RtcpReceiverTest, InjectReceiverReportWithReceiverLogVerificationBase) { &mock_rtt_feedback_, kSourceSsrc); rtcp_receiver.SetRemoteSSRC(kSenderSsrc); + rtcp_receiver.SetCastReceiverEventHistorySize(100); RtcpReceiverLogMessage receiver_log; RtcpReceiverFrameLogMessage frame_log(kRtpTimestamp); RtcpReceiverEventLogMessage event_log; - event_log.type = kAckSent; + event_log.type = FRAME_ACK_SENT; event_log.event_timestamp = testing_clock.NowTicks(); event_log.delay_delta = base::TimeDelta::FromMilliseconds(kDelayDeltaMs); frame_log.event_log_messages_.push_back(event_log); testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); - event_log.type = kPacketReceived; + event_log.type = PACKET_RECEIVED; event_log.event_timestamp = testing_clock.NowTicks(); event_log.packet_id = kLostPacketId1; frame_log.event_log_messages_.push_back(event_log); + + event_log.type = PACKET_RECEIVED; + event_log.event_timestamp = testing_clock.NowTicks(); + event_log.packet_id = kLostPacketId2; + frame_log.event_log_messages_.push_back(event_log); + receiver_log.push_back(frame_log); cast_log_verification.SetExpectedReceiverLog(receiver_log); @@ -517,15 +468,22 @@ TEST_F(RtcpReceiverTest, InjectReceiverReportWithReceiverLogVerificationBase) { p.AddRr(kSenderSsrc, 1); p.AddRb(kSourceSsrc); p.AddReceiverLog(kSenderSsrc); - p.AddReceiverFrameLog(kRtpTimestamp, 2, kTimeBaseMs); - p.AddReceiverEventLog(kDelayDeltaMs, 1, 0); - p.AddReceiverEventLog(kLostPacketId1, 6, kTimeDelayMs); + p.AddReceiverFrameLog(kRtpTimestamp, 3, kTimeBaseMs); + p.AddReceiverEventLog(kDelayDeltaMs, FRAME_ACK_SENT, 0); + p.AddReceiverEventLog(kLostPacketId1, PACKET_RECEIVED, kTimeDelayMs); + p.AddReceiverEventLog(kLostPacketId2, PACKET_RECEIVED, kTimeDelayMs); + + // Adds duplicated receiver event. + p.AddReceiverFrameLog(kRtpTimestamp, 3, kTimeBaseMs); + p.AddReceiverEventLog(kDelayDeltaMs, FRAME_ACK_SENT, 0); + p.AddReceiverEventLog(kLostPacketId1, PACKET_RECEIVED, kTimeDelayMs); + p.AddReceiverEventLog(kLostPacketId2, PACKET_RECEIVED, kTimeDelayMs); EXPECT_CALL(mock_rtt_feedback_, - OnReceivedDelaySinceLastReport(kSourceSsrc, kLastSr, kDelayLastSr)). - Times(1); + OnReceivedDelaySinceLastReport( + kSourceSsrc, kLastSr, kDelayLastSr)).Times(1); - RtcpParser rtcp_parser(p.Packet(), p.Length()); + RtcpParser rtcp_parser(p.Data(), p.Length()); rtcp_receiver.IncomingRtcpPacket(&rtcp_parser); EXPECT_TRUE(cast_log_verification.OnReceivedReceiverLogCalled()); @@ -551,7 +509,7 @@ TEST_F(RtcpReceiverTest, InjectReceiverReportWithReceiverLogVerificationMulti) { for (int j = 0; j < 100; ++j) { RtcpReceiverFrameLogMessage frame_log(kRtpTimestamp); RtcpReceiverEventLogMessage event_log; - event_log.type = kAckSent; + event_log.type = FRAME_ACK_SENT; event_log.event_timestamp = testing_clock.NowTicks(); event_log.delay_delta = base::TimeDelta::FromMilliseconds(kDelayDeltaMs); frame_log.event_log_messages_.push_back(event_log); @@ -566,21 +524,19 @@ TEST_F(RtcpReceiverTest, InjectReceiverReportWithReceiverLogVerificationMulti) { p.AddRb(kSourceSsrc); p.AddReceiverLog(kSenderSsrc); for (int i = 0; i < 100; ++i) { - p.AddReceiverFrameLog(kRtpTimestamp, 1, kTimeBaseMs + i * kTimeDelayMs); - p.AddReceiverEventLog(kDelayDeltaMs, 1, 0); + p.AddReceiverFrameLog(kRtpTimestamp, 1, kTimeBaseMs + i * kTimeDelayMs); + p.AddReceiverEventLog(kDelayDeltaMs, FRAME_ACK_SENT, 0); } EXPECT_CALL(mock_rtt_feedback_, - OnReceivedDelaySinceLastReport(kSourceSsrc, kLastSr, kDelayLastSr)). - Times(1); + OnReceivedDelaySinceLastReport( + kSourceSsrc, kLastSr, kDelayLastSr)).Times(1); - RtcpParser rtcp_parser(p.Packet(), p.Length()); + RtcpParser rtcp_parser(p.Data(), p.Length()); rtcp_receiver.IncomingRtcpPacket(&rtcp_parser); EXPECT_TRUE(cast_log_verification.OnReceivedReceiverLogCalled()); } - - } // namespace cast } // namespace media |