| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
| 6 #include "base/test/simple_test_tick_clock.h" | 6 #include "base/test/simple_test_tick_clock.h" |
| 7 #include "media/cast/cast_defines.h" | 7 #include "media/cast/cast_defines.h" |
| 8 #include "media/cast/cast_environment.h" | 8 #include "media/cast/cast_environment.h" |
| 9 #include "media/cast/net/pacing/paced_sender.h" | |
| 10 #include "media/cast/rtcp/rtcp_sender.h" | 9 #include "media/cast/rtcp/rtcp_sender.h" |
| 11 #include "media/cast/rtcp/rtcp_utility.h" | 10 #include "media/cast/rtcp/rtcp_utility.h" |
| 12 #include "media/cast/rtcp/test_rtcp_packet_builder.h" | 11 #include "media/cast/rtcp/test_rtcp_packet_builder.h" |
| 13 #include "media/cast/test/fake_task_runner.h" | 12 #include "media/cast/test/fake_task_runner.h" |
| 13 #include "media/cast/transport/cast_transport_defines.h" |
| 14 #include "media/cast/transport/pacing/paced_sender.h" |
| 14 #include "testing/gmock/include/gmock/gmock.h" | 15 #include "testing/gmock/include/gmock/gmock.h" |
| 15 | 16 |
| 16 namespace media { | 17 namespace media { |
| 17 namespace cast { | 18 namespace cast { |
| 18 | 19 |
| 19 namespace { | 20 namespace { |
| 20 static const uint32 kSendingSsrc = 0x12345678; | 21 static const uint32 kSendingSsrc = 0x12345678; |
| 21 static const uint32 kMediaSsrc = 0x87654321; | 22 static const uint32 kMediaSsrc = 0x87654321; |
| 22 static const std::string kCName("test@10.1.1.1"); | 23 static const std::string kCName("test@10.1.1.1"); |
| 23 } // namespace | 24 } // namespace |
| 24 | 25 |
| 25 class TestRtcpTransport : public PacedPacketSender { | 26 class TestRtcpTransport : public transport::PacedPacketSender { |
| 26 public: | 27 public: |
| 27 TestRtcpTransport() | 28 TestRtcpTransport() |
| 28 : expected_packet_length_(0), | 29 : expected_packet_length_(0), |
| 29 packet_count_(0) { | 30 packet_count_(0) { |
| 30 } | 31 } |
| 31 | 32 |
| 32 virtual bool SendRtcpPacket(const Packet& packet) OVERRIDE { | 33 virtual bool SendRtcpPacket(const Packet& packet) OVERRIDE { |
| 33 EXPECT_EQ(expected_packet_length_, packet.size()); | 34 EXPECT_EQ(expected_packet_length_, packet.size()); |
| 34 EXPECT_EQ(0, memcmp(expected_packet_, &(packet[0]), packet.size())); | 35 EXPECT_EQ(0, memcmp(expected_packet_, &(packet[0]), packet.size())); |
| 35 packet_count_++; | 36 packet_count_++; |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 | 90 |
| 90 EXPECT_EQ(1, test_transport_.packet_count()); | 91 EXPECT_EQ(1, test_transport_.packet_count()); |
| 91 | 92 |
| 92 // Receiver report with report block + c_name. | 93 // Receiver report with report block + c_name. |
| 93 TestRtcpPacketBuilder p2; | 94 TestRtcpPacketBuilder p2; |
| 94 p2.AddRr(kSendingSsrc, 1); | 95 p2.AddRr(kSendingSsrc, 1); |
| 95 p2.AddRb(kMediaSsrc); | 96 p2.AddRb(kMediaSsrc); |
| 96 p2.AddSdesCname(kSendingSsrc, kCName); | 97 p2.AddSdesCname(kSendingSsrc, kCName); |
| 97 test_transport_.SetExpectedRtcpPacket(p2.Packet(), p2.Length()); | 98 test_transport_.SetExpectedRtcpPacket(p2.Packet(), p2.Length()); |
| 98 | 99 |
| 99 RtcpReportBlock report_block; | 100 transport::RtcpReportBlock report_block; |
| 100 // Initialize remote_ssrc to a "clearly illegal" value. | 101 // Initialize remote_ssrc to a "clearly illegal" value. |
| 101 report_block.remote_ssrc = 0xDEAD; | 102 report_block.remote_ssrc = 0xDEAD; |
| 102 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender. | 103 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender. |
| 103 report_block.fraction_lost = kLoss >> 24; | 104 report_block.fraction_lost = kLoss >> 24; |
| 104 report_block.cumulative_lost = kLoss; // 24 bits valid. | 105 report_block.cumulative_lost = kLoss; // 24 bits valid. |
| 105 report_block.extended_high_sequence_number = kExtendedMax; | 106 report_block.extended_high_sequence_number = kExtendedMax; |
| 106 report_block.jitter = kTestJitter; | 107 report_block.jitter = kTestJitter; |
| 107 report_block.last_sr = kLastSr; | 108 report_block.last_sr = kLastSr; |
| 108 report_block.delay_since_last_sr = kDelayLastSr; | 109 report_block.delay_since_last_sr = kDelayLastSr; |
| 109 | 110 |
| 110 rtcp_sender_->SendRtcpFromRtpReceiver(RtcpSender::kRtcpRr, &report_block, | 111 rtcp_sender_->SendRtcpFromRtpReceiver(RtcpSender::kRtcpRr, &report_block, |
| 111 NULL, NULL, NULL); | 112 NULL, NULL, NULL); |
| 112 | 113 |
| 113 EXPECT_EQ(2, test_transport_.packet_count()); | 114 EXPECT_EQ(2, test_transport_.packet_count()); |
| 114 } | 115 } |
| 115 | 116 |
| 116 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtr) { | 117 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtr) { |
| 117 // Receiver report with report block + c_name. | 118 // Receiver report with report block + c_name. |
| 118 TestRtcpPacketBuilder p; | 119 TestRtcpPacketBuilder p; |
| 119 p.AddRr(kSendingSsrc, 1); | 120 p.AddRr(kSendingSsrc, 1); |
| 120 p.AddRb(kMediaSsrc); | 121 p.AddRb(kMediaSsrc); |
| 121 p.AddSdesCname(kSendingSsrc, kCName); | 122 p.AddSdesCname(kSendingSsrc, kCName); |
| 122 p.AddXrHeader(kSendingSsrc); | 123 p.AddXrHeader(kSendingSsrc); |
| 123 p.AddXrRrtrBlock(); | 124 p.AddXrRrtrBlock(); |
| 124 test_transport_.SetExpectedRtcpPacket(p.Packet(), p.Length()); | 125 test_transport_.SetExpectedRtcpPacket(p.Packet(), p.Length()); |
| 125 | 126 |
| 126 RtcpReportBlock report_block; | 127 transport::RtcpReportBlock report_block; |
| 127 // Initialize remote_ssrc to a "clearly illegal" value. | 128 // Initialize remote_ssrc to a "clearly illegal" value. |
| 128 report_block.remote_ssrc = 0xDEAD; | 129 report_block.remote_ssrc = 0xDEAD; |
| 129 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender. | 130 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender. |
| 130 report_block.fraction_lost = kLoss >> 24; | 131 report_block.fraction_lost = kLoss >> 24; |
| 131 report_block.cumulative_lost = kLoss; // 24 bits valid. | 132 report_block.cumulative_lost = kLoss; // 24 bits valid. |
| 132 report_block.extended_high_sequence_number = kExtendedMax; | 133 report_block.extended_high_sequence_number = kExtendedMax; |
| 133 report_block.jitter = kTestJitter; | 134 report_block.jitter = kTestJitter; |
| 134 report_block.last_sr = kLastSr; | 135 report_block.last_sr = kLastSr; |
| 135 report_block.delay_since_last_sr = kDelayLastSr; | 136 report_block.delay_since_last_sr = kDelayLastSr; |
| 136 | 137 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 150 | 151 |
| 151 TEST_F(RtcpSenderTest, RtcpReceiverReportWithCast) { | 152 TEST_F(RtcpSenderTest, RtcpReceiverReportWithCast) { |
| 152 // Receiver report with report block + c_name. | 153 // Receiver report with report block + c_name. |
| 153 TestRtcpPacketBuilder p; | 154 TestRtcpPacketBuilder p; |
| 154 p.AddRr(kSendingSsrc, 1); | 155 p.AddRr(kSendingSsrc, 1); |
| 155 p.AddRb(kMediaSsrc); | 156 p.AddRb(kMediaSsrc); |
| 156 p.AddSdesCname(kSendingSsrc, kCName); | 157 p.AddSdesCname(kSendingSsrc, kCName); |
| 157 p.AddCast(kSendingSsrc, kMediaSsrc); | 158 p.AddCast(kSendingSsrc, kMediaSsrc); |
| 158 test_transport_.SetExpectedRtcpPacket(p.Packet(), p.Length()); | 159 test_transport_.SetExpectedRtcpPacket(p.Packet(), p.Length()); |
| 159 | 160 |
| 160 RtcpReportBlock report_block; | 161 transport::RtcpReportBlock report_block; |
| 161 // Initialize remote_ssrc to a "clearly illegal" value. | 162 // Initialize remote_ssrc to a "clearly illegal" value. |
| 162 report_block.remote_ssrc = 0xDEAD; | 163 report_block.remote_ssrc = 0xDEAD; |
| 163 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender. | 164 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender. |
| 164 report_block.fraction_lost = kLoss >> 24; | 165 report_block.fraction_lost = kLoss >> 24; |
| 165 report_block.cumulative_lost = kLoss; // 24 bits valid. | 166 report_block.cumulative_lost = kLoss; // 24 bits valid. |
| 166 report_block.extended_high_sequence_number = kExtendedMax; | 167 report_block.extended_high_sequence_number = kExtendedMax; |
| 167 report_block.jitter = kTestJitter; | 168 report_block.jitter = kTestJitter; |
| 168 report_block.last_sr = kLastSr; | 169 report_block.last_sr = kLastSr; |
| 169 report_block.delay_since_last_sr = kDelayLastSr; | 170 report_block.delay_since_last_sr = kDelayLastSr; |
| 170 | 171 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 192 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtraAndCastMessage) { | 193 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtraAndCastMessage) { |
| 193 TestRtcpPacketBuilder p; | 194 TestRtcpPacketBuilder p; |
| 194 p.AddRr(kSendingSsrc, 1); | 195 p.AddRr(kSendingSsrc, 1); |
| 195 p.AddRb(kMediaSsrc); | 196 p.AddRb(kMediaSsrc); |
| 196 p.AddSdesCname(kSendingSsrc, kCName); | 197 p.AddSdesCname(kSendingSsrc, kCName); |
| 197 p.AddXrHeader(kSendingSsrc); | 198 p.AddXrHeader(kSendingSsrc); |
| 198 p.AddXrRrtrBlock(); | 199 p.AddXrRrtrBlock(); |
| 199 p.AddCast(kSendingSsrc, kMediaSsrc); | 200 p.AddCast(kSendingSsrc, kMediaSsrc); |
| 200 test_transport_.SetExpectedRtcpPacket(p.Packet(), p.Length()); | 201 test_transport_.SetExpectedRtcpPacket(p.Packet(), p.Length()); |
| 201 | 202 |
| 202 RtcpReportBlock report_block; | 203 transport::RtcpReportBlock report_block; |
| 203 // Initialize remote_ssrc to a "clearly illegal" value. | 204 // Initialize remote_ssrc to a "clearly illegal" value. |
| 204 report_block.remote_ssrc = 0xDEAD; | 205 report_block.remote_ssrc = 0xDEAD; |
| 205 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender. | 206 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender. |
| 206 report_block.fraction_lost = kLoss >> 24; | 207 report_block.fraction_lost = kLoss >> 24; |
| 207 report_block.cumulative_lost = kLoss; // 24 bits valid. | 208 report_block.cumulative_lost = kLoss; // 24 bits valid. |
| 208 report_block.extended_high_sequence_number = kExtendedMax; | 209 report_block.extended_high_sequence_number = kExtendedMax; |
| 209 report_block.jitter = kTestJitter; | 210 report_block.jitter = kTestJitter; |
| 210 report_block.last_sr = kLastSr; | 211 report_block.last_sr = kLastSr; |
| 211 report_block.delay_since_last_sr = kDelayLastSr; | 212 report_block.delay_since_last_sr = kDelayLastSr; |
| 212 | 213 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 242 | 243 |
| 243 TestRtcpPacketBuilder p; | 244 TestRtcpPacketBuilder p; |
| 244 p.AddRr(kSendingSsrc, 1); | 245 p.AddRr(kSendingSsrc, 1); |
| 245 p.AddRb(kMediaSsrc); | 246 p.AddRb(kMediaSsrc); |
| 246 p.AddSdesCname(kSendingSsrc, kCName); | 247 p.AddSdesCname(kSendingSsrc, kCName); |
| 247 p.AddXrHeader(kSendingSsrc); | 248 p.AddXrHeader(kSendingSsrc); |
| 248 p.AddXrRrtrBlock(); | 249 p.AddXrRrtrBlock(); |
| 249 p.AddCast(kSendingSsrc, kMediaSsrc); | 250 p.AddCast(kSendingSsrc, kMediaSsrc); |
| 250 test_transport_.SetExpectedRtcpPacket(p.Packet(), p.Length()); | 251 test_transport_.SetExpectedRtcpPacket(p.Packet(), p.Length()); |
| 251 | 252 |
| 252 RtcpReportBlock report_block; | 253 transport::RtcpReportBlock report_block; |
| 253 // Initialize remote_ssrc to a "clearly illegal" value. | 254 // Initialize remote_ssrc to a "clearly illegal" value. |
| 254 report_block.remote_ssrc = 0xDEAD; | 255 report_block.remote_ssrc = 0xDEAD; |
| 255 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender. | 256 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender. |
| 256 report_block.fraction_lost = kLoss >> 24; | 257 report_block.fraction_lost = kLoss >> 24; |
| 257 report_block.cumulative_lost = kLoss; // 24 bits valid. | 258 report_block.cumulative_lost = kLoss; // 24 bits valid. |
| 258 report_block.extended_high_sequence_number = kExtendedMax; | 259 report_block.extended_high_sequence_number = kExtendedMax; |
| 259 report_block.jitter = kTestJitter; | 260 report_block.jitter = kTestJitter; |
| 260 report_block.last_sr = kLastSr; | 261 report_block.last_sr = kLastSr; |
| 261 report_block.delay_since_last_sr = kDelayLastSr; | 262 report_block.delay_since_last_sr = kDelayLastSr; |
| 262 | 263 |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 TEST_F(RtcpSenderTest, RtcpReceiverReportWithOversizedFrameLog) { | 331 TEST_F(RtcpSenderTest, RtcpReceiverReportWithOversizedFrameLog) { |
| 331 static const uint32 kTimeBaseMs = 12345678; | 332 static const uint32 kTimeBaseMs = 12345678; |
| 332 static const uint32 kTimeDelayMs = 10; | 333 static const uint32 kTimeDelayMs = 10; |
| 333 static const uint32 kDelayDeltaMs = 123; | 334 static const uint32 kDelayDeltaMs = 123; |
| 334 | 335 |
| 335 TestRtcpPacketBuilder p; | 336 TestRtcpPacketBuilder p; |
| 336 p.AddRr(kSendingSsrc, 1); | 337 p.AddRr(kSendingSsrc, 1); |
| 337 p.AddRb(kMediaSsrc); | 338 p.AddRb(kMediaSsrc); |
| 338 p.AddSdesCname(kSendingSsrc, kCName); | 339 p.AddSdesCname(kSendingSsrc, kCName); |
| 339 | 340 |
| 340 RtcpReportBlock report_block; | 341 transport::RtcpReportBlock report_block; |
| 341 // Initialize remote_ssrc to a "clearly illegal" value. | 342 // Initialize remote_ssrc to a "clearly illegal" value. |
| 342 report_block.remote_ssrc = 0xDEAD; | 343 report_block.remote_ssrc = 0xDEAD; |
| 343 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender. | 344 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender. |
| 344 report_block.fraction_lost = kLoss >> 24; | 345 report_block.fraction_lost = kLoss >> 24; |
| 345 report_block.cumulative_lost = kLoss; // 24 bits valid. | 346 report_block.cumulative_lost = kLoss; // 24 bits valid. |
| 346 report_block.extended_high_sequence_number = kExtendedMax; | 347 report_block.extended_high_sequence_number = kExtendedMax; |
| 347 report_block.jitter = kTestJitter; | 348 report_block.jitter = kTestJitter; |
| 348 report_block.last_sr = kLastSr; | 349 report_block.last_sr = kLastSr; |
| 349 report_block.delay_since_last_sr = kDelayLastSr; | 350 report_block.delay_since_last_sr = kDelayLastSr; |
| 350 | 351 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 403 TEST_F(RtcpSenderTest, RtcpReceiverReportWithTooManyLogFrames) { | 404 TEST_F(RtcpSenderTest, RtcpReceiverReportWithTooManyLogFrames) { |
| 404 static const uint32 kTimeBaseMs = 12345678; | 405 static const uint32 kTimeBaseMs = 12345678; |
| 405 static const uint32 kTimeDelayMs = 10; | 406 static const uint32 kTimeDelayMs = 10; |
| 406 static const uint32 kDelayDeltaMs = 123; | 407 static const uint32 kDelayDeltaMs = 123; |
| 407 | 408 |
| 408 TestRtcpPacketBuilder p; | 409 TestRtcpPacketBuilder p; |
| 409 p.AddRr(kSendingSsrc, 1); | 410 p.AddRr(kSendingSsrc, 1); |
| 410 p.AddRb(kMediaSsrc); | 411 p.AddRb(kMediaSsrc); |
| 411 p.AddSdesCname(kSendingSsrc, kCName); | 412 p.AddSdesCname(kSendingSsrc, kCName); |
| 412 | 413 |
| 413 RtcpReportBlock report_block; | 414 transport::RtcpReportBlock report_block; |
| 414 // Initialize remote_ssrc to a "clearly illegal" value. | 415 // Initialize remote_ssrc to a "clearly illegal" value. |
| 415 report_block.remote_ssrc = 0xDEAD; | 416 report_block.remote_ssrc = 0xDEAD; |
| 416 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender. | 417 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender. |
| 417 report_block.fraction_lost = kLoss >> 24; | 418 report_block.fraction_lost = kLoss >> 24; |
| 418 report_block.cumulative_lost = kLoss; // 24 bits valid. | 419 report_block.cumulative_lost = kLoss; // 24 bits valid. |
| 419 report_block.extended_high_sequence_number = kExtendedMax; | 420 report_block.extended_high_sequence_number = kExtendedMax; |
| 420 report_block.jitter = kTestJitter; | 421 report_block.jitter = kTestJitter; |
| 421 report_block.last_sr = kLastSr; | 422 report_block.last_sr = kLastSr; |
| 422 report_block.delay_since_last_sr = kDelayLastSr; | 423 report_block.delay_since_last_sr = kDelayLastSr; |
| 423 | 424 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 451 NULL, | 452 NULL, |
| 452 NULL, | 453 NULL, |
| 453 &receiver_log); | 454 &receiver_log); |
| 454 | 455 |
| 455 EXPECT_EQ(1, test_transport_.packet_count()); | 456 EXPECT_EQ(1, test_transport_.packet_count()); |
| 456 EXPECT_EQ(81u, receiver_log.size()); | 457 EXPECT_EQ(81u, receiver_log.size()); |
| 457 } | 458 } |
| 458 | 459 |
| 459 } // namespace cast | 460 } // namespace cast |
| 460 } // namespace media | 461 } // namespace media |
| OLD | NEW |