| 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" | 9 #include "media/cast/net/pacing/paced_sender.h" |
| 10 #include "media/cast/rtcp/rtcp_sender.h" | 10 #include "media/cast/rtcp/rtcp_sender.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 kCName)) { | 70 kCName)) { |
| 71 } | 71 } |
| 72 | 72 |
| 73 base::SimpleTestTickClock testing_clock_; | 73 base::SimpleTestTickClock testing_clock_; |
| 74 TestRtcpTransport test_transport_; | 74 TestRtcpTransport test_transport_; |
| 75 scoped_refptr<test::FakeTaskRunner> task_runner_; | 75 scoped_refptr<test::FakeTaskRunner> task_runner_; |
| 76 scoped_refptr<CastEnvironment> cast_environment_; | 76 scoped_refptr<CastEnvironment> cast_environment_; |
| 77 scoped_ptr<RtcpSender> rtcp_sender_; | 77 scoped_ptr<RtcpSender> rtcp_sender_; |
| 78 }; | 78 }; |
| 79 | 79 |
| 80 TEST_F(RtcpSenderTest, RtcpSenderReport) { | |
| 81 RtcpSenderInfo sender_info; | |
| 82 sender_info.ntp_seconds = kNtpHigh; | |
| 83 sender_info.ntp_fraction = kNtpLow; | |
| 84 sender_info.rtp_timestamp = kRtpTimestamp; | |
| 85 sender_info.send_packet_count = kSendPacketCount; | |
| 86 sender_info.send_octet_count = kSendOctetCount; | |
| 87 | |
| 88 // Sender report + c_name. | |
| 89 TestRtcpPacketBuilder p; | |
| 90 p.AddSr(kSendingSsrc, 0); | |
| 91 p.AddSdesCname(kSendingSsrc, kCName); | |
| 92 test_transport_.SetExpectedRtcpPacket(p.Packet(), p.Length()); | |
| 93 | |
| 94 rtcp_sender_->SendRtcpFromRtpSender(RtcpSender::kRtcpSr, | |
| 95 &sender_info, | |
| 96 NULL, | |
| 97 NULL); | |
| 98 | |
| 99 EXPECT_EQ(1, test_transport_.packet_count()); | |
| 100 } | |
| 101 | |
| 102 TEST_F(RtcpSenderTest, RtcpReceiverReport) { | 80 TEST_F(RtcpSenderTest, RtcpReceiverReport) { |
| 103 // Empty receiver report + c_name. | 81 // Empty receiver report + c_name. |
| 104 TestRtcpPacketBuilder p1; | 82 TestRtcpPacketBuilder p1; |
| 105 p1.AddRr(kSendingSsrc, 0); | 83 p1.AddRr(kSendingSsrc, 0); |
| 106 p1.AddSdesCname(kSendingSsrc, kCName); | 84 p1.AddSdesCname(kSendingSsrc, kCName); |
| 107 test_transport_.SetExpectedRtcpPacket(p1.Packet(), p1.Length()); | 85 test_transport_.SetExpectedRtcpPacket(p1.Packet(), p1.Length()); |
| 108 | 86 |
| 109 rtcp_sender_->SendRtcpFromRtpReceiver(RtcpSender::kRtcpRr, | 87 rtcp_sender_->SendRtcpFromRtpReceiver(RtcpSender::kRtcpRr, |
| 110 NULL, NULL, NULL, NULL); | 88 NULL, NULL, NULL, NULL); |
| 111 | 89 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 128 report_block.jitter = kTestJitter; | 106 report_block.jitter = kTestJitter; |
| 129 report_block.last_sr = kLastSr; | 107 report_block.last_sr = kLastSr; |
| 130 report_block.delay_since_last_sr = kDelayLastSr; | 108 report_block.delay_since_last_sr = kDelayLastSr; |
| 131 | 109 |
| 132 rtcp_sender_->SendRtcpFromRtpReceiver(RtcpSender::kRtcpRr, &report_block, | 110 rtcp_sender_->SendRtcpFromRtpReceiver(RtcpSender::kRtcpRr, &report_block, |
| 133 NULL, NULL, NULL); | 111 NULL, NULL, NULL); |
| 134 | 112 |
| 135 EXPECT_EQ(2, test_transport_.packet_count()); | 113 EXPECT_EQ(2, test_transport_.packet_count()); |
| 136 } | 114 } |
| 137 | 115 |
| 138 TEST_F(RtcpSenderTest, RtcpSenderReportWithDlrr) { | |
| 139 RtcpSenderInfo sender_info; | |
| 140 sender_info.ntp_seconds = kNtpHigh; | |
| 141 sender_info.ntp_fraction = kNtpLow; | |
| 142 sender_info.rtp_timestamp = kRtpTimestamp; | |
| 143 sender_info.send_packet_count = kSendPacketCount; | |
| 144 sender_info.send_octet_count = kSendOctetCount; | |
| 145 | |
| 146 // Sender report + c_name + dlrr. | |
| 147 TestRtcpPacketBuilder p1; | |
| 148 p1.AddSr(kSendingSsrc, 0); | |
| 149 p1.AddSdesCname(kSendingSsrc, kCName); | |
| 150 p1.AddXrHeader(kSendingSsrc); | |
| 151 p1.AddXrDlrrBlock(kSendingSsrc); | |
| 152 test_transport_.SetExpectedRtcpPacket(p1.Packet(), p1.Length()); | |
| 153 | |
| 154 RtcpDlrrReportBlock dlrr_rb; | |
| 155 dlrr_rb.last_rr = kLastRr; | |
| 156 dlrr_rb.delay_since_last_rr = kDelayLastRr; | |
| 157 | |
| 158 rtcp_sender_->SendRtcpFromRtpSender( | |
| 159 RtcpSender::kRtcpSr | RtcpSender::kRtcpDlrr, | |
| 160 &sender_info, | |
| 161 &dlrr_rb, | |
| 162 NULL); | |
| 163 | |
| 164 EXPECT_EQ(1, test_transport_.packet_count()); | |
| 165 } | |
| 166 | |
| 167 TEST_F(RtcpSenderTest, RtcpSenderReportWithDlrrAndLog) { | |
| 168 RtcpSenderInfo sender_info; | |
| 169 sender_info.ntp_seconds = kNtpHigh; | |
| 170 sender_info.ntp_fraction = kNtpLow; | |
| 171 sender_info.rtp_timestamp = kRtpTimestamp; | |
| 172 sender_info.send_packet_count = kSendPacketCount; | |
| 173 sender_info.send_octet_count = kSendOctetCount; | |
| 174 | |
| 175 // Sender report + c_name + dlrr + sender log. | |
| 176 TestRtcpPacketBuilder p; | |
| 177 p.AddSr(kSendingSsrc, 0); | |
| 178 p.AddSdesCname(kSendingSsrc, kCName); | |
| 179 p.AddXrHeader(kSendingSsrc); | |
| 180 p.AddXrDlrrBlock(kSendingSsrc); | |
| 181 p.AddSenderLog(kSendingSsrc); | |
| 182 p.AddSenderFrameLog(kRtcpSenderFrameStatusSentToNetwork, kRtpTimestamp); | |
| 183 | |
| 184 test_transport_.SetExpectedRtcpPacket(p.Packet(), p.Length()); | |
| 185 | |
| 186 RtcpDlrrReportBlock dlrr_rb; | |
| 187 dlrr_rb.last_rr = kLastRr; | |
| 188 dlrr_rb.delay_since_last_rr = kDelayLastRr; | |
| 189 | |
| 190 RtcpSenderFrameLogMessage sender_frame_log; | |
| 191 sender_frame_log.frame_status = kRtcpSenderFrameStatusSentToNetwork; | |
| 192 sender_frame_log.rtp_timestamp = kRtpTimestamp; | |
| 193 | |
| 194 RtcpSenderLogMessage sender_log; | |
| 195 sender_log.push_back(sender_frame_log); | |
| 196 | |
| 197 rtcp_sender_->SendRtcpFromRtpSender( | |
| 198 RtcpSender::kRtcpSr | RtcpSender::kRtcpDlrr | RtcpSender::kRtcpSenderLog, | |
| 199 &sender_info, | |
| 200 &dlrr_rb, | |
| 201 &sender_log); | |
| 202 | |
| 203 EXPECT_EQ(1, test_transport_.packet_count()); | |
| 204 EXPECT_TRUE(sender_log.empty()); | |
| 205 } | |
| 206 | |
| 207 TEST_F(RtcpSenderTest, RtcpSenderReporWithTooManyLogFrames) { | |
| 208 RtcpSenderInfo sender_info; | |
| 209 sender_info.ntp_seconds = kNtpHigh; | |
| 210 sender_info.ntp_fraction = kNtpLow; | |
| 211 sender_info.rtp_timestamp = kRtpTimestamp; | |
| 212 sender_info.send_packet_count = kSendPacketCount; | |
| 213 sender_info.send_octet_count = kSendOctetCount; | |
| 214 | |
| 215 // Sender report + c_name + sender log. | |
| 216 TestRtcpPacketBuilder p; | |
| 217 p.AddSr(kSendingSsrc, 0); | |
| 218 p.AddSdesCname(kSendingSsrc, kCName); | |
| 219 p.AddSenderLog(kSendingSsrc); | |
| 220 | |
| 221 for (int i = 0; i < 359; ++i) { | |
| 222 p.AddSenderFrameLog(kRtcpSenderFrameStatusSentToNetwork, | |
| 223 kRtpTimestamp + i * 90); | |
| 224 } | |
| 225 test_transport_.SetExpectedRtcpPacket(p.Packet(), p.Length()); | |
| 226 | |
| 227 | |
| 228 RtcpSenderLogMessage sender_log; | |
| 229 for (int j = 0; j < 400; ++j) { | |
| 230 RtcpSenderFrameLogMessage sender_frame_log; | |
| 231 sender_frame_log.frame_status = kRtcpSenderFrameStatusSentToNetwork; | |
| 232 sender_frame_log.rtp_timestamp = kRtpTimestamp + j * 90; | |
| 233 sender_log.push_back(sender_frame_log); | |
| 234 } | |
| 235 | |
| 236 rtcp_sender_->SendRtcpFromRtpSender( | |
| 237 RtcpSender::kRtcpSr | RtcpSender::kRtcpSenderLog, | |
| 238 &sender_info, | |
| 239 NULL, | |
| 240 &sender_log); | |
| 241 | |
| 242 EXPECT_EQ(1, test_transport_.packet_count()); | |
| 243 EXPECT_EQ(41u, sender_log.size()); | |
| 244 } | |
| 245 | |
| 246 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtr) { | 116 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtr) { |
| 247 // Receiver report with report block + c_name. | 117 // Receiver report with report block + c_name. |
| 248 TestRtcpPacketBuilder p; | 118 TestRtcpPacketBuilder p; |
| 249 p.AddRr(kSendingSsrc, 1); | 119 p.AddRr(kSendingSsrc, 1); |
| 250 p.AddRb(kMediaSsrc); | 120 p.AddRb(kMediaSsrc); |
| 251 p.AddSdesCname(kSendingSsrc, kCName); | 121 p.AddSdesCname(kSendingSsrc, kCName); |
| 252 p.AddXrHeader(kSendingSsrc); | 122 p.AddXrHeader(kSendingSsrc); |
| 253 p.AddXrRrtrBlock(); | 123 p.AddXrRrtrBlock(); |
| 254 test_transport_.SetExpectedRtcpPacket(p.Packet(), p.Length()); | 124 test_transport_.SetExpectedRtcpPacket(p.Packet(), p.Length()); |
| 255 | 125 |
| (...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 581 NULL, | 451 NULL, |
| 582 NULL, | 452 NULL, |
| 583 &receiver_log); | 453 &receiver_log); |
| 584 | 454 |
| 585 EXPECT_EQ(1, test_transport_.packet_count()); | 455 EXPECT_EQ(1, test_transport_.packet_count()); |
| 586 EXPECT_EQ(81u, receiver_log.size()); | 456 EXPECT_EQ(81u, receiver_log.size()); |
| 587 } | 457 } |
| 588 | 458 |
| 589 } // namespace cast | 459 } // namespace cast |
| 590 } // namespace media | 460 } // namespace media |
| OLD | NEW |