Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Side by Side Diff: media/cast/rtcp/rtcp_sender_unittest.cc

Issue 102413014: Cast:Splitting rtcp sender (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/cast/rtcp/rtcp_sender.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « media/cast/rtcp/rtcp_sender.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698