| Index: media/cast/sender/video_sender_unittest.cc
|
| diff --git a/media/cast/sender/video_sender_unittest.cc b/media/cast/sender/video_sender_unittest.cc
|
| index 9c5d9c4dd2228f73e25b0a29aa747152512287f4..3d315ea2199d91c8cfc671391b4c4187cae9cb4c 100644
|
| --- a/media/cast/sender/video_sender_unittest.cc
|
| +++ b/media/cast/sender/video_sender_unittest.cc
|
| @@ -77,6 +77,11 @@ class TestPacketSender : public PacketSender {
|
|
|
| int64_t GetBytesSent() final { return 0; }
|
|
|
| + void StartReceiving(
|
| + const PacketReceiverCallbackWithStatus& packet_receiver) final {}
|
| +
|
| + void StopReceiving() final {}
|
| +
|
| int number_of_rtp_packets() const { return number_of_rtp_packets_; }
|
|
|
| int number_of_rtcp_packets() const { return number_of_rtcp_packets_; }
|
| @@ -121,6 +126,21 @@ class PeerVideoSender : public VideoSender {
|
| using VideoSender::OnReceivedCastFeedback;
|
| };
|
|
|
| +class TransportClient : public CastTransportSender::Client {
|
| + public:
|
| + TransportClient() {}
|
| +
|
| + void OnStatusChanged(CastTransportStatus status) final {
|
| + EXPECT_EQ(TRANSPORT_VIDEO_INITIALIZED, status);
|
| + };
|
| + void OnLoggingEventsReceived(
|
| + scoped_ptr<std::vector<FrameEvent>> frame_events,
|
| + scoped_ptr<std::vector<PacketEvent>> packet_events) final{};
|
| + void ProcessRtpPacket(scoped_ptr<Packet> packet) final{};
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TransportClient);
|
| +};
|
| +
|
| } // namespace
|
|
|
| class VideoSenderTest : public ::testing::Test {
|
| @@ -138,19 +158,11 @@ class VideoSenderTest : public ::testing::Test {
|
| testing_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks());
|
| vea_factory_.SetAutoRespond(true);
|
| last_pixel_value_ = kPixelValue;
|
| - net::IPEndPoint dummy_endpoint;
|
| - transport_sender_.reset(new CastTransportSenderImpl(
|
| - NULL,
|
| - testing_clock_,
|
| - dummy_endpoint,
|
| - dummy_endpoint,
|
| - make_scoped_ptr(new base::DictionaryValue),
|
| - base::Bind(&UpdateCastTransportStatus),
|
| - BulkRawEventsCallback(),
|
| - base::TimeDelta(),
|
| - task_runner_,
|
| - PacketReceiverCallback(),
|
| - &transport_));
|
| + transport_ = new TestPacketSender();
|
| + transport_sender_.reset(
|
| + new CastTransportSenderImpl(testing_clock_, base::TimeDelta(),
|
| + make_scoped_ptr(new TransportClient()),
|
| + make_scoped_ptr(transport_), task_runner_));
|
| }
|
|
|
| ~VideoSenderTest() override {}
|
| @@ -160,10 +172,6 @@ class VideoSenderTest : public ::testing::Test {
|
| task_runner_->RunTasks();
|
| }
|
|
|
| - static void UpdateCastTransportStatus(CastTransportStatus status) {
|
| - EXPECT_EQ(TRANSPORT_VIDEO_INITIALIZED, status);
|
| - }
|
| -
|
| // If |external| is true then external video encoder (VEA) is used.
|
| // |expect_init_success| is true if initialization is expected to succeed.
|
| void InitEncoder(bool external, bool expect_init_success) {
|
| @@ -229,7 +237,7 @@ class VideoSenderTest : public ::testing::Test {
|
| const scoped_refptr<CastEnvironment> cast_environment_;
|
| OperationalStatus operational_status_;
|
| FakeVideoEncodeAcceleratorFactory vea_factory_;
|
| - TestPacketSender transport_;
|
| + TestPacketSender* transport_; // Owned by CastTransportSender.
|
| scoped_ptr<CastTransportSenderImpl> transport_sender_;
|
| scoped_ptr<PeerVideoSender> video_sender_;
|
| int last_pixel_value_;
|
| @@ -249,8 +257,8 @@ TEST_F(VideoSenderTest, BuiltInEncoder) {
|
| video_sender_->InsertRawVideoFrame(video_frame, reference_time);
|
|
|
| task_runner_->RunTasks();
|
| - EXPECT_LE(1, transport_.number_of_rtp_packets());
|
| - EXPECT_LE(1, transport_.number_of_rtcp_packets());
|
| + EXPECT_LE(1, transport_->number_of_rtp_packets());
|
| + EXPECT_LE(1, transport_->number_of_rtcp_packets());
|
| }
|
|
|
| TEST_F(VideoSenderTest, ExternalEncoder) {
|
| @@ -324,15 +332,15 @@ TEST_F(VideoSenderTest, RtcpTimer) {
|
| base::TimeDelta::FromMilliseconds(1 + kRtcpReportIntervalMs * 3 / 2);
|
|
|
| RunTasks(max_rtcp_timeout.InMilliseconds());
|
| - EXPECT_LE(1, transport_.number_of_rtp_packets());
|
| - EXPECT_LE(1, transport_.number_of_rtcp_packets());
|
| + EXPECT_LE(1, transport_->number_of_rtp_packets());
|
| + EXPECT_LE(1, transport_->number_of_rtcp_packets());
|
| // Build Cast msg and expect RTCP packet.
|
| RtcpCastMessage cast_feedback(1);
|
| cast_feedback.media_ssrc = 2;
|
| cast_feedback.ack_frame_id = 0;
|
| video_sender_->OnReceivedCastFeedback(cast_feedback);
|
| RunTasks(max_rtcp_timeout.InMilliseconds());
|
| - EXPECT_LE(1, transport_.number_of_rtcp_packets());
|
| + EXPECT_LE(1, transport_->number_of_rtcp_packets());
|
| }
|
|
|
| TEST_F(VideoSenderTest, ResendTimer) {
|
| @@ -359,9 +367,8 @@ TEST_F(VideoSenderTest, ResendTimer) {
|
| // Make sure that we do a re-send.
|
| RunTasks(max_resend_timeout.InMilliseconds());
|
| // Should have sent at least 3 packets.
|
| - EXPECT_LE(
|
| - 3,
|
| - transport_.number_of_rtp_packets() + transport_.number_of_rtcp_packets());
|
| + EXPECT_LE(3, transport_->number_of_rtp_packets() +
|
| + transport_->number_of_rtcp_packets());
|
| }
|
|
|
| TEST_F(VideoSenderTest, LogAckReceivedEvent) {
|
| @@ -414,7 +421,7 @@ TEST_F(VideoSenderTest, StopSendingInTheAbsenceOfAck) {
|
| video_sender_->InsertRawVideoFrame(video_frame, testing_clock_->NowTicks());
|
| RunTasks(33);
|
| }
|
| - const int number_of_packets_sent = transport_.number_of_rtp_packets();
|
| + const int number_of_packets_sent = transport_->number_of_rtp_packets();
|
|
|
| // Send 3 more frames - they should not be encoded, as we have not received
|
| // any acks.
|
| @@ -426,24 +433,21 @@ TEST_F(VideoSenderTest, StopSendingInTheAbsenceOfAck) {
|
|
|
| // We expect a frame to be retransmitted because of duplicated ACKs.
|
| // Only one packet of the frame is re-transmitted.
|
| - EXPECT_EQ(number_of_packets_sent + 1,
|
| - transport_.number_of_rtp_packets());
|
| + EXPECT_EQ(number_of_packets_sent + 1, transport_->number_of_rtp_packets());
|
|
|
| // Start acking and make sure we're back to steady-state.
|
| RtcpCastMessage cast_feedback(1);
|
| cast_feedback.media_ssrc = 2;
|
| cast_feedback.ack_frame_id = 0;
|
| video_sender_->OnReceivedCastFeedback(cast_feedback);
|
| - EXPECT_LE(
|
| - 4,
|
| - transport_.number_of_rtp_packets() + transport_.number_of_rtcp_packets());
|
| + EXPECT_LE(4, transport_->number_of_rtp_packets() +
|
| + transport_->number_of_rtcp_packets());
|
|
|
| // Empty the pipeline.
|
| RunTasks(100);
|
| // Should have sent at least 7 packets.
|
| - EXPECT_LE(
|
| - 7,
|
| - transport_.number_of_rtp_packets() + transport_.number_of_rtcp_packets());
|
| + EXPECT_LE(7, transport_->number_of_rtp_packets() +
|
| + transport_->number_of_rtcp_packets());
|
| }
|
|
|
| TEST_F(VideoSenderTest, DuplicateAckRetransmit) {
|
| @@ -463,7 +467,7 @@ TEST_F(VideoSenderTest, DuplicateAckRetransmit) {
|
| video_sender_->InsertRawVideoFrame(video_frame, testing_clock_->NowTicks());
|
| RunTasks(33);
|
| }
|
| - const int number_of_packets_sent = transport_.number_of_rtp_packets();
|
| + const int number_of_packets_sent = transport_->number_of_rtp_packets();
|
|
|
| // Send duplicated ACKs and mix some invalid NACKs.
|
| for (int i = 0; i < 10; ++i) {
|
| @@ -476,7 +480,7 @@ TEST_F(VideoSenderTest, DuplicateAckRetransmit) {
|
| video_sender_->OnReceivedCastFeedback(ack_feedback);
|
| video_sender_->OnReceivedCastFeedback(nack_feedback);
|
| }
|
| - EXPECT_EQ(number_of_packets_sent, transport_.number_of_rtp_packets());
|
| + EXPECT_EQ(number_of_packets_sent, transport_->number_of_rtp_packets());
|
|
|
| // Re-transmit one packet because of duplicated ACKs.
|
| for (int i = 0; i < 3; ++i) {
|
| @@ -485,7 +489,7 @@ TEST_F(VideoSenderTest, DuplicateAckRetransmit) {
|
| ack_feedback.ack_frame_id = 0;
|
| video_sender_->OnReceivedCastFeedback(ack_feedback);
|
| }
|
| - EXPECT_EQ(number_of_packets_sent + 1, transport_.number_of_rtp_packets());
|
| + EXPECT_EQ(number_of_packets_sent + 1, transport_->number_of_rtp_packets());
|
| }
|
|
|
| TEST_F(VideoSenderTest, DuplicateAckRetransmitDoesNotCancelRetransmits) {
|
| @@ -506,14 +510,14 @@ TEST_F(VideoSenderTest, DuplicateAckRetransmitDoesNotCancelRetransmits) {
|
| RunTasks(33);
|
| }
|
| // Pause the transport
|
| - transport_.SetPause(true);
|
| + transport_->SetPause(true);
|
|
|
| // Insert one more video frame.
|
| video_frame = GetLargeNewVideoFrame();
|
| video_sender_->InsertRawVideoFrame(video_frame, testing_clock_->NowTicks());
|
| RunTasks(33);
|
|
|
| - const int number_of_packets_sent = transport_.number_of_rtp_packets();
|
| + const int number_of_packets_sent = transport_->number_of_rtp_packets();
|
|
|
| // Send duplicated ACKs and mix some invalid NACKs.
|
| for (int i = 0; i < 10; ++i) {
|
| @@ -526,7 +530,7 @@ TEST_F(VideoSenderTest, DuplicateAckRetransmitDoesNotCancelRetransmits) {
|
| video_sender_->OnReceivedCastFeedback(ack_feedback);
|
| video_sender_->OnReceivedCastFeedback(nack_feedback);
|
| }
|
| - EXPECT_EQ(number_of_packets_sent, transport_.number_of_rtp_packets());
|
| + EXPECT_EQ(number_of_packets_sent, transport_->number_of_rtp_packets());
|
|
|
| // Re-transmit one packet because of duplicated ACKs.
|
| for (int i = 0; i < 3; ++i) {
|
| @@ -536,16 +540,16 @@ TEST_F(VideoSenderTest, DuplicateAckRetransmitDoesNotCancelRetransmits) {
|
| video_sender_->OnReceivedCastFeedback(ack_feedback);
|
| }
|
|
|
| - transport_.SetPause(false);
|
| + transport_->SetPause(false);
|
| RunTasks(100);
|
| - EXPECT_LT(number_of_packets_sent + 1, transport_.number_of_rtp_packets());
|
| + EXPECT_LT(number_of_packets_sent + 1, transport_->number_of_rtp_packets());
|
| }
|
|
|
| TEST_F(VideoSenderTest, AcksCancelRetransmits) {
|
| InitEncoder(false, true);
|
| ASSERT_EQ(STATUS_INITIALIZED, operational_status_);
|
|
|
| - transport_.SetPause(true);
|
| + transport_->SetPause(true);
|
| scoped_refptr<media::VideoFrame> video_frame = GetLargeNewVideoFrame();
|
| video_sender_->InsertRawVideoFrame(video_frame, testing_clock_->NowTicks());
|
| RunTasks(33);
|
| @@ -556,9 +560,9 @@ TEST_F(VideoSenderTest, AcksCancelRetransmits) {
|
| cast_feedback.ack_frame_id = 0;
|
| video_sender_->OnReceivedCastFeedback(cast_feedback);
|
|
|
| - transport_.SetPause(false);
|
| + transport_->SetPause(false);
|
| RunTasks(33);
|
| - EXPECT_EQ(0, transport_.number_of_rtp_packets());
|
| + EXPECT_EQ(0, transport_->number_of_rtp_packets());
|
| }
|
|
|
| TEST_F(VideoSenderTest, CheckVideoFrameFactoryIsNull) {
|
|
|