Index: media/cast/net/rtcp/rtcp_builder_unittest.cc |
diff --git a/media/cast/net/rtcp/rtcp_sender_unittest.cc b/media/cast/net/rtcp/rtcp_builder_unittest.cc |
similarity index 70% |
rename from media/cast/net/rtcp/rtcp_sender_unittest.cc |
rename to media/cast/net/rtcp/rtcp_builder_unittest.cc |
index 6dbea4d94eb286856c7b6f7eef0f45635395c5fd..e68444aef32d426eb2633620b23aa84557b5120f 100644 |
--- a/media/cast/net/rtcp/rtcp_sender_unittest.cc |
+++ b/media/cast/net/rtcp/rtcp_builder_unittest.cc |
@@ -9,10 +9,9 @@ |
#include "media/cast/net/cast_transport_defines.h" |
#include "media/cast/net/pacing/paced_sender.h" |
#include "media/cast/net/rtcp/receiver_rtcp_event_subscriber.h" |
-#include "media/cast/net/rtcp/rtcp_sender.h" |
+#include "media/cast/net/rtcp/rtcp_builder.h" |
#include "media/cast/net/rtcp/rtcp_utility.h" |
#include "media/cast/net/rtcp/test_rtcp_packet_builder.h" |
-#include "media/cast/test/fake_single_thread_task_runner.h" |
#include "testing/gmock/include/gmock/gmock.h" |
namespace media { |
@@ -40,93 +39,50 @@ RtcpReportBlock GetReportBlock() { |
} // namespace |
-class TestRtcpTransport : public PacedPacketSender { |
- public: |
- TestRtcpTransport() : packet_count_(0) {} |
- |
- virtual bool SendRtcpPacket(uint32 ssrc, |
- PacketRef packet) OVERRIDE { |
- EXPECT_EQ(expected_packet_.size(), packet->data.size()); |
- if (expected_packet_.size() != packet->data.size()) |
- return false; |
- EXPECT_EQ(0, memcmp(&expected_packet_[0], |
- &packet->data[0], |
- packet->data.size())); |
- packet_count_++; |
- return true; |
- } |
- |
- virtual bool SendPackets( |
- const SendPacketVector& packets) OVERRIDE { |
- return false; |
- } |
- virtual bool ResendPackets( |
- const SendPacketVector& packets, |
- const DedupInfo& dedup_info) OVERRIDE { |
- return false; |
- } |
- |
- virtual void CancelSendingPacket( |
- const PacketKey& packet_key) OVERRIDE { |
- } |
- void SetExpectedRtcpPacket(scoped_ptr<Packet> packet) { |
- expected_packet_.swap(*packet); |
+class RtcpBuilderTest : public ::testing::Test { |
+ protected: |
+ RtcpBuilderTest() |
+ : rtcp_builder_(new RtcpBuilder(kSendingSsrc)) {} |
+ |
+ void ExpectPacketEQ(scoped_ptr<Packet> golden_packet, |
+ PacketRef packet) { |
+ EXPECT_EQ(golden_packet->size(), packet->data.size()); |
+ if (golden_packet->size() == packet->data.size()) { |
+ for (size_t x = 0; x < golden_packet->size(); x++) { |
+ EXPECT_EQ((*golden_packet)[x], packet->data[x]); |
+ if ((*golden_packet)[x] != packet->data[x]) |
+ break; |
+ } |
+ } |
} |
- int packet_count() const { return packet_count_; } |
- |
- private: |
- Packet expected_packet_; |
- int packet_count_; |
+ scoped_ptr<RtcpBuilder> rtcp_builder_; |
- DISALLOW_COPY_AND_ASSIGN(TestRtcpTransport); |
-}; |
- |
-class RtcpSenderTest : public ::testing::Test { |
- protected: |
- RtcpSenderTest() |
- : 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_sender_(new RtcpSender(&test_transport_, kSendingSsrc)) {} |
- |
- base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. |
- TestRtcpTransport test_transport_; |
- scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; |
- scoped_refptr<CastEnvironment> cast_environment_; |
- scoped_ptr<RtcpSender> rtcp_sender_; |
- |
- DISALLOW_COPY_AND_ASSIGN(RtcpSenderTest); |
+ DISALLOW_COPY_AND_ASSIGN(RtcpBuilderTest); |
}; |
-TEST_F(RtcpSenderTest, RtcpReceiverReport) { |
+TEST_F(RtcpBuilderTest, RtcpReceiverReport) { |
// Receiver report with report block. |
TestRtcpPacketBuilder p2; |
p2.AddRr(kSendingSsrc, 1); |
p2.AddRb(kMediaSsrc); |
- test_transport_.SetExpectedRtcpPacket(p2.GetPacket().Pass()); |
RtcpReportBlock report_block = GetReportBlock(); |
- rtcp_sender_->SendRtcpFromRtpReceiver( |
- &report_block, NULL, NULL, NULL, kDefaultDelay); |
- |
- EXPECT_EQ(1, test_transport_.packet_count()); |
+ ExpectPacketEQ( |
+ p2.GetPacket().Pass(), |
+ rtcp_builder_->BuildRtcpFromReceiver( |
+ &report_block, NULL, NULL, NULL, kDefaultDelay)); |
} |
-TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtr) { |
+TEST_F(RtcpBuilderTest, RtcpReceiverReportWithRrtr) { |
// Receiver report with report block. |
TestRtcpPacketBuilder p; |
p.AddRr(kSendingSsrc, 1); |
p.AddRb(kMediaSsrc); |
p.AddXrHeader(kSendingSsrc); |
p.AddXrRrtrBlock(); |
- test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
RtcpReportBlock report_block = GetReportBlock(); |
@@ -134,23 +90,21 @@ TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtr) { |
rrtr.ntp_seconds = kNtpHigh; |
rrtr.ntp_fraction = kNtpLow; |
- rtcp_sender_->SendRtcpFromRtpReceiver( |
- &report_block, |
- &rrtr, |
- NULL, |
- NULL, |
- kDefaultDelay); |
- |
- EXPECT_EQ(1, test_transport_.packet_count()); |
+ ExpectPacketEQ(p.GetPacket().Pass(), |
+ rtcp_builder_->BuildRtcpFromReceiver( |
+ &report_block, |
+ &rrtr, |
+ NULL, |
+ NULL, |
+ kDefaultDelay)); |
} |
-TEST_F(RtcpSenderTest, RtcpReceiverReportWithCast) { |
+TEST_F(RtcpBuilderTest, RtcpReceiverReportWithCast) { |
// Receiver report with report block. |
TestRtcpPacketBuilder p; |
p.AddRr(kSendingSsrc, 1); |
p.AddRb(kMediaSsrc); |
p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay); |
- test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
RtcpReportBlock report_block = GetReportBlock(); |
@@ -165,24 +119,22 @@ TEST_F(RtcpSenderTest, RtcpReceiverReportWithCast) { |
cast_message.missing_frames_and_packets[kFrameIdWithLostPackets] = |
missing_packets; |
- rtcp_sender_->SendRtcpFromRtpReceiver( |
- &report_block, |
- NULL, |
- &cast_message, |
- NULL, |
- kDefaultDelay); |
- |
- EXPECT_EQ(1, test_transport_.packet_count()); |
+ ExpectPacketEQ(p.GetPacket().Pass(), |
+ rtcp_builder_->BuildRtcpFromReceiver( |
+ &report_block, |
+ NULL, |
+ &cast_message, |
+ NULL, |
+ kDefaultDelay)); |
} |
-TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtraAndCastMessage) { |
+TEST_F(RtcpBuilderTest, RtcpReceiverReportWithRrtraAndCastMessage) { |
TestRtcpPacketBuilder p; |
p.AddRr(kSendingSsrc, 1); |
p.AddRb(kMediaSsrc); |
p.AddXrHeader(kSendingSsrc); |
p.AddXrRrtrBlock(); |
p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay); |
- test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
RtcpReportBlock report_block = GetReportBlock(); |
@@ -201,17 +153,16 @@ TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtraAndCastMessage) { |
cast_message.missing_frames_and_packets[kFrameIdWithLostPackets] = |
missing_packets; |
- rtcp_sender_->SendRtcpFromRtpReceiver( |
- &report_block, |
- &rrtr, |
- &cast_message, |
- NULL, |
- kDefaultDelay); |
- |
- EXPECT_EQ(1, test_transport_.packet_count()); |
+ ExpectPacketEQ(p.GetPacket().Pass(), |
+ rtcp_builder_->BuildRtcpFromReceiver( |
+ &report_block, |
+ &rrtr, |
+ &cast_message, |
+ NULL, |
+ kDefaultDelay)); |
} |
-TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtrCastMessageAndLog) { |
+TEST_F(RtcpBuilderTest, RtcpReceiverReportWithRrtrCastMessageAndLog) { |
static const uint32 kTimeBaseMs = 12345678; |
static const uint32 kTimeDelayMs = 10; |
@@ -221,7 +172,6 @@ TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtrCastMessageAndLog) { |
p.AddXrHeader(kSendingSsrc); |
p.AddXrRrtrBlock(); |
p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay); |
- test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
RtcpReportBlock report_block = GetReportBlock(); |
@@ -243,12 +193,13 @@ TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtrCastMessageAndLog) { |
ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; |
- rtcp_sender_->SendRtcpFromRtpReceiver( |
- &report_block, |
- &rrtr, |
- &cast_message, |
- &rtcp_events, |
- kDefaultDelay); |
+ ExpectPacketEQ(p.GetPacket().Pass(), |
+ rtcp_builder_->BuildRtcpFromReceiver( |
+ &report_block, |
+ &rrtr, |
+ &cast_message, |
+ &rtcp_events, |
+ kDefaultDelay)); |
base::SimpleTestTickClock testing_clock; |
testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); |
@@ -258,8 +209,6 @@ TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtrCastMessageAndLog) { |
p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); |
p.AddReceiverEventLog(kLostPacketId1, PACKET_RECEIVED, kTimeDelayMs); |
- test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
- |
FrameEvent frame_event; |
frame_event.rtp_timestamp = kRtpTimestamp; |
frame_event.type = FRAME_ACK_SENT; |
@@ -278,17 +227,17 @@ TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtrCastMessageAndLog) { |
event_subscriber.GetRtcpEventsAndReset(&rtcp_events); |
EXPECT_EQ(2u, rtcp_events.size()); |
- rtcp_sender_->SendRtcpFromRtpReceiver( |
- &report_block, |
- &rrtr, |
- &cast_message, |
- &rtcp_events, |
- kDefaultDelay); |
- |
- EXPECT_EQ(2, test_transport_.packet_count()); |
+ ExpectPacketEQ( |
+ p.GetPacket().Pass(), |
+ rtcp_builder_->BuildRtcpFromReceiver( |
+ &report_block, |
+ &rrtr, |
+ &cast_message, |
+ &rtcp_events, |
+ kDefaultDelay)); |
} |
-TEST_F(RtcpSenderTest, RtcpReceiverReportWithOversizedFrameLog) { |
+TEST_F(RtcpBuilderTest, RtcpReceiverReportWithOversizedFrameLog) { |
static const uint32 kTimeBaseMs = 12345678; |
static const uint32 kTimeDelayMs = 10; |
@@ -320,7 +269,6 @@ TEST_F(RtcpSenderTest, RtcpReceiverReportWithOversizedFrameLog) { |
static_cast<uint16>(kTimeDelayMs * i)); |
} |
- test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
FrameEvent frame_event; |
@@ -344,17 +292,16 @@ TEST_F(RtcpSenderTest, RtcpReceiverReportWithOversizedFrameLog) { |
ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; |
event_subscriber.GetRtcpEventsAndReset(&rtcp_events); |
- rtcp_sender_->SendRtcpFromRtpReceiver( |
- &report_block, |
- NULL, |
- NULL, |
- &rtcp_events, |
- kDefaultDelay); |
- |
- EXPECT_EQ(1, test_transport_.packet_count()); |
+ ExpectPacketEQ(p.GetPacket().Pass(), |
+ rtcp_builder_->BuildRtcpFromReceiver( |
+ &report_block, |
+ NULL, |
+ NULL, |
+ &rtcp_events, |
+ kDefaultDelay)); |
} |
-TEST_F(RtcpSenderTest, RtcpReceiverReportWithTooManyLogFrames) { |
+TEST_F(RtcpBuilderTest, RtcpReceiverReportWithTooManyLogFrames) { |
static const uint32 kTimeBaseMs = 12345678; |
static const uint32 kTimeDelayMs = 10; |
@@ -382,7 +329,6 @@ TEST_F(RtcpSenderTest, RtcpReceiverReportWithTooManyLogFrames) { |
p.AddReceiverFrameLog(kRtpTimestamp + i, 1, kTimeBaseMs + i * kTimeDelayMs); |
p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); |
} |
- test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
@@ -399,17 +345,16 @@ TEST_F(RtcpSenderTest, RtcpReceiverReportWithTooManyLogFrames) { |
ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; |
event_subscriber.GetRtcpEventsAndReset(&rtcp_events); |
- rtcp_sender_->SendRtcpFromRtpReceiver( |
- &report_block, |
- NULL, |
- NULL, |
- &rtcp_events, |
- kDefaultDelay); |
- |
- EXPECT_EQ(1, test_transport_.packet_count()); |
+ ExpectPacketEQ(p.GetPacket().Pass(), |
+ rtcp_builder_->BuildRtcpFromReceiver( |
+ &report_block, |
+ NULL, |
+ NULL, |
+ &rtcp_events, |
+ kDefaultDelay)); |
} |
-TEST_F(RtcpSenderTest, RtcpReceiverReportWithOldLogFrames) { |
+TEST_F(RtcpBuilderTest, RtcpReceiverReportWithOldLogFrames) { |
static const uint32 kTimeBaseMs = 12345678; |
TestRtcpPacketBuilder p; |
@@ -431,7 +376,6 @@ TEST_F(RtcpSenderTest, RtcpReceiverReportWithOldLogFrames) { |
for (int i = 0; i < 10; ++i) { |
p.AddReceiverEventLog(0, FRAME_ACK_SENT, i * kTimeBetweenEventsMs); |
} |
- test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
for (int i = 0; i < 11; ++i) { |
@@ -448,17 +392,16 @@ TEST_F(RtcpSenderTest, RtcpReceiverReportWithOldLogFrames) { |
ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; |
event_subscriber.GetRtcpEventsAndReset(&rtcp_events); |
- rtcp_sender_->SendRtcpFromRtpReceiver( |
- &report_block, |
- NULL, |
- NULL, |
- &rtcp_events, |
- kDefaultDelay); |
- |
- EXPECT_EQ(1, test_transport_.packet_count()); |
+ ExpectPacketEQ(p.GetPacket().Pass(), |
+ rtcp_builder_->BuildRtcpFromReceiver( |
+ &report_block, |
+ NULL, |
+ NULL, |
+ &rtcp_events, |
+ kDefaultDelay)); |
} |
-TEST_F(RtcpSenderTest, RtcpReceiverReportRedundancy) { |
+TEST_F(RtcpBuilderTest, RtcpReceiverReportRedundancy) { |
uint32 time_base_ms = 12345678; |
int kTimeBetweenEventsMs = 10; |
@@ -493,8 +436,6 @@ TEST_F(RtcpSenderTest, RtcpReceiverReportRedundancy) { |
p.AddReceiverFrameLog(kRtpTimestamp, 1, time_base_ms); |
p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); |
- test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
- |
FrameEvent frame_event; |
frame_event.rtp_timestamp = kRtpTimestamp; |
frame_event.type = FRAME_ACK_SENT; |
@@ -505,22 +446,21 @@ TEST_F(RtcpSenderTest, RtcpReceiverReportRedundancy) { |
ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; |
event_subscriber.GetRtcpEventsAndReset(&rtcp_events); |
- rtcp_sender_->SendRtcpFromRtpReceiver( |
- &report_block, |
- NULL, |
- NULL, |
- &rtcp_events, |
- kDefaultDelay); |
+ ExpectPacketEQ(p.GetPacket().Pass(), |
+ rtcp_builder_->BuildRtcpFromReceiver( |
+ &report_block, |
+ NULL, |
+ NULL, |
+ &rtcp_events, |
+ kDefaultDelay)); |
testing_clock.Advance( |
base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); |
time_base_ms += kTimeBetweenEventsMs; |
} |
- |
- EXPECT_EQ(static_cast<int>(packet_count), test_transport_.packet_count()); |
} |
-TEST_F(RtcpSenderTest, RtcpSenderReport) { |
+TEST_F(RtcpBuilderTest, RtcpSenderReport) { |
RtcpSenderInfo sender_info; |
sender_info.ntp_seconds = kNtpHigh; |
sender_info.ntp_fraction = kNtpLow; |
@@ -531,11 +471,9 @@ TEST_F(RtcpSenderTest, RtcpSenderReport) { |
// Sender report. |
TestRtcpPacketBuilder p; |
p.AddSr(kSendingSsrc, 0); |
- test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
- |
- rtcp_sender_->SendRtcpFromRtpSender(sender_info); |
- EXPECT_EQ(1, test_transport_.packet_count()); |
+ ExpectPacketEQ(p.GetPacket().Pass(), |
+ rtcp_builder_->BuildRtcpFromSender(sender_info)); |
} |
} // namespace cast |