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 |