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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc

Issue 1170723002: Use RtcpPacket classes for SenderReport/ReceiveReport in RTCPSender (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase Created 5 years, 6 months 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 const uint32_t kSenderSsrc = 0x10203; 190 const uint32_t kSenderSsrc = 0x10203;
191 const uint32_t kSourceSsrc = 0x123456; 191 const uint32_t kSourceSsrc = 0x123456;
192 std::set<uint32_t> ssrcs; 192 std::set<uint32_t> ssrcs;
193 ssrcs.insert(kSourceSsrc); 193 ssrcs.insert(kSourceSsrc);
194 rtcp_receiver_->SetSsrcs(kSourceSsrc, ssrcs); 194 rtcp_receiver_->SetSsrcs(kSourceSsrc, ssrcs);
195 195
196 rtcp::ReportBlock rb; 196 rtcp::ReportBlock rb;
197 rb.To(kSourceSsrc + 1); 197 rb.To(kSourceSsrc + 1);
198 rtcp::ReceiverReport rr; 198 rtcp::ReceiverReport rr;
199 rr.From(kSenderSsrc); 199 rr.From(kSenderSsrc);
200 rr.WithReportBlock(&rb); 200 rr.WithReportBlock(rb);
201 rtc::scoped_ptr<rtcp::RawPacket> packet(rr.Build()); 201 rtc::scoped_ptr<rtcp::RawPacket> packet(rr.Build());
202 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); 202 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length()));
203 EXPECT_EQ(kSenderSsrc, rtcp_packet_info_.remoteSSRC); 203 EXPECT_EQ(kSenderSsrc, rtcp_packet_info_.remoteSSRC);
204 EXPECT_EQ(kRtcpRr, rtcp_packet_info_.rtcpPacketTypeFlags); 204 EXPECT_EQ(kRtcpRr, rtcp_packet_info_.rtcpPacketTypeFlags);
205 ASSERT_EQ(0u, rtcp_packet_info_.report_blocks.size()); 205 ASSERT_EQ(0u, rtcp_packet_info_.report_blocks.size());
206 206
207 std::vector<RTCPReportBlock> received_blocks; 207 std::vector<RTCPReportBlock> received_blocks;
208 rtcp_receiver_->StatisticsReceived(&received_blocks); 208 rtcp_receiver_->StatisticsReceived(&received_blocks);
209 EXPECT_TRUE(received_blocks.empty()); 209 EXPECT_TRUE(received_blocks.empty());
210 } 210 }
211 211
212 TEST_F(RtcpReceiverTest, InjectRrPacketWithOneReportBlock) { 212 TEST_F(RtcpReceiverTest, InjectRrPacketWithOneReportBlock) {
213 const uint32_t kSenderSsrc = 0x10203; 213 const uint32_t kSenderSsrc = 0x10203;
214 const uint32_t kSourceSsrc = 0x123456; 214 const uint32_t kSourceSsrc = 0x123456;
215 std::set<uint32_t> ssrcs; 215 std::set<uint32_t> ssrcs;
216 ssrcs.insert(kSourceSsrc); 216 ssrcs.insert(kSourceSsrc);
217 rtcp_receiver_->SetSsrcs(kSourceSsrc, ssrcs); 217 rtcp_receiver_->SetSsrcs(kSourceSsrc, ssrcs);
218 218
219 rtcp::ReportBlock rb; 219 rtcp::ReportBlock rb;
220 rb.To(kSourceSsrc); 220 rb.To(kSourceSsrc);
221 rtcp::ReceiverReport rr; 221 rtcp::ReceiverReport rr;
222 rr.From(kSenderSsrc); 222 rr.From(kSenderSsrc);
223 rr.WithReportBlock(&rb); 223 rr.WithReportBlock(rb);
224 rtc::scoped_ptr<rtcp::RawPacket> packet(rr.Build()); 224 rtc::scoped_ptr<rtcp::RawPacket> packet(rr.Build());
225 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); 225 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length()));
226 EXPECT_EQ(kSenderSsrc, rtcp_packet_info_.remoteSSRC); 226 EXPECT_EQ(kSenderSsrc, rtcp_packet_info_.remoteSSRC);
227 EXPECT_EQ(kRtcpRr, rtcp_packet_info_.rtcpPacketTypeFlags); 227 EXPECT_EQ(kRtcpRr, rtcp_packet_info_.rtcpPacketTypeFlags);
228 ASSERT_EQ(1u, rtcp_packet_info_.report_blocks.size()); 228 ASSERT_EQ(1u, rtcp_packet_info_.report_blocks.size());
229 229
230 std::vector<RTCPReportBlock> received_blocks; 230 std::vector<RTCPReportBlock> received_blocks;
231 rtcp_receiver_->StatisticsReceived(&received_blocks); 231 rtcp_receiver_->StatisticsReceived(&received_blocks);
232 EXPECT_EQ(1u, received_blocks.size()); 232 EXPECT_EQ(1u, received_blocks.size());
233 } 233 }
(...skipping 14 matching lines...) Expand all
248 rb1.WithExtHighestSeqNum(kSequenceNumbers[0]); 248 rb1.WithExtHighestSeqNum(kSequenceNumbers[0]);
249 rb1.WithFractionLost(10); 249 rb1.WithFractionLost(10);
250 rb1.WithCumulativeLost(5); 250 rb1.WithCumulativeLost(5);
251 251
252 rtcp::ReportBlock rb2; 252 rtcp::ReportBlock rb2;
253 rb2.To(kSourceSsrcs[1]); 253 rb2.To(kSourceSsrcs[1]);
254 rb2.WithExtHighestSeqNum(kSequenceNumbers[1]); 254 rb2.WithExtHighestSeqNum(kSequenceNumbers[1]);
255 255
256 rtcp::ReceiverReport rr1; 256 rtcp::ReceiverReport rr1;
257 rr1.From(kSenderSsrc); 257 rr1.From(kSenderSsrc);
258 rr1.WithReportBlock(&rb1); 258 rr1.WithReportBlock(rb1);
259 rr1.WithReportBlock(&rb2); 259 rr1.WithReportBlock(rb2);
260 260
261 rtc::scoped_ptr<rtcp::RawPacket> p1(rr1.Build()); 261 rtc::scoped_ptr<rtcp::RawPacket> p1(rr1.Build());
262 EXPECT_EQ(0, InjectRtcpPacket(p1->Buffer(), p1->Length())); 262 EXPECT_EQ(0, InjectRtcpPacket(p1->Buffer(), p1->Length()));
263 ASSERT_EQ(2u, rtcp_packet_info_.report_blocks.size()); 263 ASSERT_EQ(2u, rtcp_packet_info_.report_blocks.size());
264 EXPECT_EQ(10, rtcp_packet_info_.report_blocks.front().fractionLost); 264 EXPECT_EQ(10, rtcp_packet_info_.report_blocks.front().fractionLost);
265 EXPECT_EQ(0, rtcp_packet_info_.report_blocks.back().fractionLost); 265 EXPECT_EQ(0, rtcp_packet_info_.report_blocks.back().fractionLost);
266 266
267 rtcp::ReportBlock rb3; 267 rtcp::ReportBlock rb3;
268 rb3.To(kSourceSsrcs[0]); 268 rb3.To(kSourceSsrcs[0]);
269 rb3.WithExtHighestSeqNum(kSequenceNumbers[0]); 269 rb3.WithExtHighestSeqNum(kSequenceNumbers[0]);
270 rb3.WithFractionLost(kFracLost[0]); 270 rb3.WithFractionLost(kFracLost[0]);
271 rb3.WithCumulativeLost(kCumLost[0]); 271 rb3.WithCumulativeLost(kCumLost[0]);
272 272
273 rtcp::ReportBlock rb4; 273 rtcp::ReportBlock rb4;
274 rb4.To(kSourceSsrcs[1]); 274 rb4.To(kSourceSsrcs[1]);
275 rb4.WithExtHighestSeqNum(kSequenceNumbers[1]); 275 rb4.WithExtHighestSeqNum(kSequenceNumbers[1]);
276 rb4.WithFractionLost(kFracLost[1]); 276 rb4.WithFractionLost(kFracLost[1]);
277 rb4.WithCumulativeLost(kCumLost[1]); 277 rb4.WithCumulativeLost(kCumLost[1]);
278 278
279 rtcp::ReceiverReport rr2; 279 rtcp::ReceiverReport rr2;
280 rr2.From(kSenderSsrc); 280 rr2.From(kSenderSsrc);
281 rr2.WithReportBlock(&rb3); 281 rr2.WithReportBlock(rb3);
282 rr2.WithReportBlock(&rb4); 282 rr2.WithReportBlock(rb4);
283 283
284 rtc::scoped_ptr<rtcp::RawPacket> p2(rr2.Build()); 284 rtc::scoped_ptr<rtcp::RawPacket> p2(rr2.Build());
285 EXPECT_EQ(0, InjectRtcpPacket(p2->Buffer(), p2->Length())); 285 EXPECT_EQ(0, InjectRtcpPacket(p2->Buffer(), p2->Length()));
286 ASSERT_EQ(2u, rtcp_packet_info_.report_blocks.size()); 286 ASSERT_EQ(2u, rtcp_packet_info_.report_blocks.size());
287 EXPECT_EQ(kFracLost[0], rtcp_packet_info_.report_blocks.front().fractionLost); 287 EXPECT_EQ(kFracLost[0], rtcp_packet_info_.report_blocks.front().fractionLost);
288 EXPECT_EQ(kFracLost[1], rtcp_packet_info_.report_blocks.back().fractionLost); 288 EXPECT_EQ(kFracLost[1], rtcp_packet_info_.report_blocks.back().fractionLost);
289 289
290 std::vector<RTCPReportBlock> received_blocks; 290 std::vector<RTCPReportBlock> received_blocks;
291 rtcp_receiver_->StatisticsReceived(&received_blocks); 291 rtcp_receiver_->StatisticsReceived(&received_blocks);
292 EXPECT_EQ(2u, received_blocks.size()); 292 EXPECT_EQ(2u, received_blocks.size());
(...skipping 18 matching lines...) Expand all
311 std::set<uint32_t> ssrcs(kSourceSsrcs, kSourceSsrcs + kNumSsrcs); 311 std::set<uint32_t> ssrcs(kSourceSsrcs, kSourceSsrcs + kNumSsrcs);
312 rtcp_receiver_->SetSsrcs(kSourceSsrcs[0], ssrcs); 312 rtcp_receiver_->SetSsrcs(kSourceSsrcs[0], ssrcs);
313 313
314 rtcp::ReportBlock rb1; 314 rtcp::ReportBlock rb1;
315 rb1.To(kSourceSsrcs[0]); 315 rb1.To(kSourceSsrcs[0]);
316 rb1.WithExtHighestSeqNum(kSequenceNumbers[0]); 316 rb1.WithExtHighestSeqNum(kSequenceNumbers[0]);
317 rb1.WithFractionLost(kFracLost[0]); 317 rb1.WithFractionLost(kFracLost[0]);
318 rb1.WithCumulativeLost(kCumLost[0]); 318 rb1.WithCumulativeLost(kCumLost[0]);
319 rtcp::ReceiverReport rr1; 319 rtcp::ReceiverReport rr1;
320 rr1.From(kSenderSsrc1); 320 rr1.From(kSenderSsrc1);
321 rr1.WithReportBlock(&rb1); 321 rr1.WithReportBlock(rb1);
322 322
323 rtc::scoped_ptr<rtcp::RawPacket> p1(rr1.Build()); 323 rtc::scoped_ptr<rtcp::RawPacket> p1(rr1.Build());
324 EXPECT_EQ(0, InjectRtcpPacket(p1->Buffer(), p1->Length())); 324 EXPECT_EQ(0, InjectRtcpPacket(p1->Buffer(), p1->Length()));
325 ASSERT_EQ(1u, rtcp_packet_info_.report_blocks.size()); 325 ASSERT_EQ(1u, rtcp_packet_info_.report_blocks.size());
326 EXPECT_EQ(kFracLost[0], rtcp_packet_info_.report_blocks.front().fractionLost); 326 EXPECT_EQ(kFracLost[0], rtcp_packet_info_.report_blocks.front().fractionLost);
327 327
328 std::vector<RTCPReportBlock> received_blocks; 328 std::vector<RTCPReportBlock> received_blocks;
329 rtcp_receiver_->StatisticsReceived(&received_blocks); 329 rtcp_receiver_->StatisticsReceived(&received_blocks);
330 EXPECT_EQ(1u, received_blocks.size()); 330 EXPECT_EQ(1u, received_blocks.size());
331 EXPECT_EQ(kSenderSsrc1, received_blocks[0].remoteSSRC); 331 EXPECT_EQ(kSenderSsrc1, received_blocks[0].remoteSSRC);
332 EXPECT_EQ(kSourceSsrcs[0], received_blocks[0].sourceSSRC); 332 EXPECT_EQ(kSourceSsrcs[0], received_blocks[0].sourceSSRC);
333 EXPECT_EQ(kFracLost[0], received_blocks[0].fractionLost); 333 EXPECT_EQ(kFracLost[0], received_blocks[0].fractionLost);
334 EXPECT_EQ(kCumLost[0], received_blocks[0].cumulativeLost); 334 EXPECT_EQ(kCumLost[0], received_blocks[0].cumulativeLost);
335 EXPECT_EQ(kSequenceNumbers[0], received_blocks[0].extendedHighSeqNum); 335 EXPECT_EQ(kSequenceNumbers[0], received_blocks[0].extendedHighSeqNum);
336 336
337 rtcp::ReportBlock rb2; 337 rtcp::ReportBlock rb2;
338 rb2.To(kSourceSsrcs[0]); 338 rb2.To(kSourceSsrcs[0]);
339 rb2.WithExtHighestSeqNum(kSequenceNumbers[1]); 339 rb2.WithExtHighestSeqNum(kSequenceNumbers[1]);
340 rb2.WithFractionLost(kFracLost[1]); 340 rb2.WithFractionLost(kFracLost[1]);
341 rb2.WithCumulativeLost(kCumLost[1]); 341 rb2.WithCumulativeLost(kCumLost[1]);
342 rtcp::ReceiverReport rr2; 342 rtcp::ReceiverReport rr2;
343 rr2.From(kSenderSsrc2); 343 rr2.From(kSenderSsrc2);
344 rr2.WithReportBlock(&rb2); 344 rr2.WithReportBlock(rb2);
345 rtc::scoped_ptr<rtcp::RawPacket> p2(rr2.Build()); 345 rtc::scoped_ptr<rtcp::RawPacket> p2(rr2.Build());
346 EXPECT_EQ(0, InjectRtcpPacket(p2->Buffer(), p2->Length())); 346 EXPECT_EQ(0, InjectRtcpPacket(p2->Buffer(), p2->Length()));
347 ASSERT_EQ(1u, rtcp_packet_info_.report_blocks.size()); 347 ASSERT_EQ(1u, rtcp_packet_info_.report_blocks.size());
348 EXPECT_EQ(kFracLost[1], rtcp_packet_info_.report_blocks.front().fractionLost); 348 EXPECT_EQ(kFracLost[1], rtcp_packet_info_.report_blocks.front().fractionLost);
349 349
350 received_blocks.clear(); 350 received_blocks.clear();
351 rtcp_receiver_->StatisticsReceived(&received_blocks); 351 rtcp_receiver_->StatisticsReceived(&received_blocks);
352 ASSERT_EQ(2u, received_blocks.size()); 352 ASSERT_EQ(2u, received_blocks.size());
353 EXPECT_EQ(kSenderSsrc1, received_blocks[0].remoteSSRC); 353 EXPECT_EQ(kSenderSsrc1, received_blocks[0].remoteSSRC);
354 EXPECT_EQ(kSenderSsrc2, received_blocks[1].remoteSSRC); 354 EXPECT_EQ(kSenderSsrc2, received_blocks[1].remoteSSRC);
(...skipping 12 matching lines...) Expand all
367 ssrcs.insert(kSourceSsrc); 367 ssrcs.insert(kSourceSsrc);
368 rtcp_receiver_->SetSsrcs(kSourceSsrc, ssrcs); 368 rtcp_receiver_->SetSsrcs(kSourceSsrc, ssrcs);
369 369
370 // No report block received. 370 // No report block received.
371 EXPECT_EQ(-1, rtcp_receiver_->RTT(kSenderSsrc, NULL, NULL, NULL, NULL)); 371 EXPECT_EQ(-1, rtcp_receiver_->RTT(kSenderSsrc, NULL, NULL, NULL, NULL));
372 372
373 rtcp::ReportBlock rb; 373 rtcp::ReportBlock rb;
374 rb.To(kSourceSsrc); 374 rb.To(kSourceSsrc);
375 rtcp::ReceiverReport rr; 375 rtcp::ReceiverReport rr;
376 rr.From(kSenderSsrc); 376 rr.From(kSenderSsrc);
377 rr.WithReportBlock(&rb); 377 rr.WithReportBlock(rb);
378 rtc::scoped_ptr<rtcp::RawPacket> packet(rr.Build()); 378 rtc::scoped_ptr<rtcp::RawPacket> packet(rr.Build());
379 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); 379 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length()));
380 EXPECT_EQ(kSenderSsrc, rtcp_packet_info_.remoteSSRC); 380 EXPECT_EQ(kSenderSsrc, rtcp_packet_info_.remoteSSRC);
381 EXPECT_EQ(kRtcpRr, rtcp_packet_info_.rtcpPacketTypeFlags); 381 EXPECT_EQ(kRtcpRr, rtcp_packet_info_.rtcpPacketTypeFlags);
382 EXPECT_EQ(1u, rtcp_packet_info_.report_blocks.size()); 382 EXPECT_EQ(1u, rtcp_packet_info_.report_blocks.size());
383 EXPECT_EQ(0, rtcp_receiver_->RTT(kSenderSsrc, NULL, NULL, NULL, NULL)); 383 EXPECT_EQ(0, rtcp_receiver_->RTT(kSenderSsrc, NULL, NULL, NULL, NULL));
384 384
385 // Report block not received. 385 // Report block not received.
386 EXPECT_EQ(-1, rtcp_receiver_->RTT(kSenderSsrc + 1, NULL, NULL, NULL, NULL)); 386 EXPECT_EQ(-1, rtcp_receiver_->RTT(kSenderSsrc + 1, NULL, NULL, NULL, NULL));
387 } 387 }
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
477 477
478 std::set<uint32_t> ssrcs(kSourceSsrcs, kSourceSsrcs + kNumSsrcs); 478 std::set<uint32_t> ssrcs(kSourceSsrcs, kSourceSsrcs + kNumSsrcs);
479 rtcp_receiver_->SetSsrcs(kSourceSsrcs[0], ssrcs); 479 rtcp_receiver_->SetSsrcs(kSourceSsrcs[0], ssrcs);
480 480
481 rtcp::ReportBlock rb1; 481 rtcp::ReportBlock rb1;
482 rb1.To(kSourceSsrcs[0]); 482 rb1.To(kSourceSsrcs[0]);
483 rtcp::ReportBlock rb2; 483 rtcp::ReportBlock rb2;
484 rb2.To(kSourceSsrcs[1]); 484 rb2.To(kSourceSsrcs[1]);
485 rtcp::ReceiverReport rr; 485 rtcp::ReceiverReport rr;
486 rr.From(kSenderSsrc); 486 rr.From(kSenderSsrc);
487 rr.WithReportBlock(&rb1); 487 rr.WithReportBlock(rb1);
488 rr.WithReportBlock(&rb2); 488 rr.WithReportBlock(rb2);
489 489
490 rtc::scoped_ptr<rtcp::RawPacket> p1(rr.Build()); 490 rtc::scoped_ptr<rtcp::RawPacket> p1(rr.Build());
491 EXPECT_EQ(0, InjectRtcpPacket(p1->Buffer(), p1->Length())); 491 EXPECT_EQ(0, InjectRtcpPacket(p1->Buffer(), p1->Length()));
492 ASSERT_EQ(2u, rtcp_packet_info_.report_blocks.size()); 492 ASSERT_EQ(2u, rtcp_packet_info_.report_blocks.size());
493 std::vector<RTCPReportBlock> received_blocks; 493 std::vector<RTCPReportBlock> received_blocks;
494 rtcp_receiver_->StatisticsReceived(&received_blocks); 494 rtcp_receiver_->StatisticsReceived(&received_blocks);
495 EXPECT_EQ(2u, received_blocks.size()); 495 EXPECT_EQ(2u, received_blocks.size());
496 496
497 // Verify that BYE removes the report blocks. 497 // Verify that BYE removes the report blocks.
498 rtcp::Bye bye; 498 rtcp::Bye bye;
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
795 // No RR received, shouldn't trigger a timeout. 795 // No RR received, shouldn't trigger a timeout.
796 EXPECT_FALSE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs)); 796 EXPECT_FALSE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs));
797 EXPECT_FALSE(rtcp_receiver_->RtcpRrSequenceNumberTimeout(kRtcpIntervalMs)); 797 EXPECT_FALSE(rtcp_receiver_->RtcpRrSequenceNumberTimeout(kRtcpIntervalMs));
798 798
799 // Add a RR and advance the clock just enough to not trigger a timeout. 799 // Add a RR and advance the clock just enough to not trigger a timeout.
800 rtcp::ReportBlock rb1; 800 rtcp::ReportBlock rb1;
801 rb1.To(kSourceSsrc); 801 rb1.To(kSourceSsrc);
802 rb1.WithExtHighestSeqNum(kSequenceNumber); 802 rb1.WithExtHighestSeqNum(kSequenceNumber);
803 rtcp::ReceiverReport rr1; 803 rtcp::ReceiverReport rr1;
804 rr1.From(kSenderSsrc); 804 rr1.From(kSenderSsrc);
805 rr1.WithReportBlock(&rb1); 805 rr1.WithReportBlock(rb1);
806 rtc::scoped_ptr<rtcp::RawPacket> p1(rr1.Build()); 806 rtc::scoped_ptr<rtcp::RawPacket> p1(rr1.Build());
807 EXPECT_EQ(0, InjectRtcpPacket(p1->Buffer(), p1->Length())); 807 EXPECT_EQ(0, InjectRtcpPacket(p1->Buffer(), p1->Length()));
808 system_clock_.AdvanceTimeMilliseconds(3 * kRtcpIntervalMs - 1); 808 system_clock_.AdvanceTimeMilliseconds(3 * kRtcpIntervalMs - 1);
809 EXPECT_FALSE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs)); 809 EXPECT_FALSE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs));
810 EXPECT_FALSE(rtcp_receiver_->RtcpRrSequenceNumberTimeout(kRtcpIntervalMs)); 810 EXPECT_FALSE(rtcp_receiver_->RtcpRrSequenceNumberTimeout(kRtcpIntervalMs));
811 811
812 // Add a RR with the same extended max as the previous RR to trigger a 812 // Add a RR with the same extended max as the previous RR to trigger a
813 // sequence number timeout, but not a RR timeout. 813 // sequence number timeout, but not a RR timeout.
814 EXPECT_EQ(0, InjectRtcpPacket(p1->Buffer(), p1->Length())); 814 EXPECT_EQ(0, InjectRtcpPacket(p1->Buffer(), p1->Length()));
815 system_clock_.AdvanceTimeMilliseconds(2); 815 system_clock_.AdvanceTimeMilliseconds(2);
816 EXPECT_FALSE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs)); 816 EXPECT_FALSE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs));
817 EXPECT_TRUE(rtcp_receiver_->RtcpRrSequenceNumberTimeout(kRtcpIntervalMs)); 817 EXPECT_TRUE(rtcp_receiver_->RtcpRrSequenceNumberTimeout(kRtcpIntervalMs));
818 818
819 // Advance clock enough to trigger an RR timeout too. 819 // Advance clock enough to trigger an RR timeout too.
820 system_clock_.AdvanceTimeMilliseconds(3 * kRtcpIntervalMs); 820 system_clock_.AdvanceTimeMilliseconds(3 * kRtcpIntervalMs);
821 EXPECT_TRUE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs)); 821 EXPECT_TRUE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs));
822 822
823 // We should only get one timeout even though we still haven't received a new 823 // We should only get one timeout even though we still haven't received a new
824 // RR. 824 // RR.
825 EXPECT_FALSE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs)); 825 EXPECT_FALSE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs));
826 EXPECT_FALSE(rtcp_receiver_->RtcpRrSequenceNumberTimeout(kRtcpIntervalMs)); 826 EXPECT_FALSE(rtcp_receiver_->RtcpRrSequenceNumberTimeout(kRtcpIntervalMs));
827 827
828 // Add a new RR with increase sequence number to reset timers. 828 // Add a new RR with increase sequence number to reset timers.
829 rtcp::ReportBlock rb2; 829 rtcp::ReportBlock rb2;
830 rb2.To(kSourceSsrc); 830 rb2.To(kSourceSsrc);
831 rb2.WithExtHighestSeqNum(kSequenceNumber + 1); 831 rb2.WithExtHighestSeqNum(kSequenceNumber + 1);
832 rtcp::ReceiverReport rr2; 832 rtcp::ReceiverReport rr2;
833 rr2.From(kSenderSsrc); 833 rr2.From(kSenderSsrc);
834 rr2.WithReportBlock(&rb2); 834 rr2.WithReportBlock(rb2);
835 rtc::scoped_ptr<rtcp::RawPacket> p2(rr2.Build()); 835 rtc::scoped_ptr<rtcp::RawPacket> p2(rr2.Build());
836 EXPECT_EQ(0, InjectRtcpPacket(p2->Buffer(), p2->Length())); 836 EXPECT_EQ(0, InjectRtcpPacket(p2->Buffer(), p2->Length()));
837 EXPECT_FALSE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs)); 837 EXPECT_FALSE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs));
838 EXPECT_FALSE(rtcp_receiver_->RtcpRrSequenceNumberTimeout(kRtcpIntervalMs)); 838 EXPECT_FALSE(rtcp_receiver_->RtcpRrSequenceNumberTimeout(kRtcpIntervalMs));
839 839
840 // Verify we can get a timeout again once we've received new RR. 840 // Verify we can get a timeout again once we've received new RR.
841 system_clock_.AdvanceTimeMilliseconds(2 * kRtcpIntervalMs); 841 system_clock_.AdvanceTimeMilliseconds(2 * kRtcpIntervalMs);
842 EXPECT_EQ(0, InjectRtcpPacket(p2->Buffer(), p2->Length())); 842 EXPECT_EQ(0, InjectRtcpPacket(p2->Buffer(), p2->Length()));
843 system_clock_.AdvanceTimeMilliseconds(kRtcpIntervalMs + 1); 843 system_clock_.AdvanceTimeMilliseconds(kRtcpIntervalMs + 1);
844 EXPECT_FALSE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs)); 844 EXPECT_FALSE(rtcp_receiver_->RtcpRrTimeout(kRtcpIntervalMs));
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 // First packet, all numbers should just propagate. 1001 // First packet, all numbers should just propagate.
1002 rtcp::ReportBlock rb1; 1002 rtcp::ReportBlock rb1;
1003 rb1.To(kSourceSsrc); 1003 rb1.To(kSourceSsrc);
1004 rb1.WithExtHighestSeqNum(kSequenceNumber); 1004 rb1.WithExtHighestSeqNum(kSequenceNumber);
1005 rb1.WithFractionLost(kFractionLoss); 1005 rb1.WithFractionLost(kFractionLoss);
1006 rb1.WithCumulativeLost(kCumulativeLoss); 1006 rb1.WithCumulativeLost(kCumulativeLoss);
1007 rb1.WithJitter(kJitter); 1007 rb1.WithJitter(kJitter);
1008 1008
1009 rtcp::ReceiverReport rr1; 1009 rtcp::ReceiverReport rr1;
1010 rr1.From(kSenderSsrc); 1010 rr1.From(kSenderSsrc);
1011 rr1.WithReportBlock(&rb1); 1011 rr1.WithReportBlock(rb1);
1012 rtc::scoped_ptr<rtcp::RawPacket> p1(rr1.Build()); 1012 rtc::scoped_ptr<rtcp::RawPacket> p1(rr1.Build());
1013 EXPECT_EQ(0, InjectRtcpPacket(p1->Buffer(), p1->Length())); 1013 EXPECT_EQ(0, InjectRtcpPacket(p1->Buffer(), p1->Length()));
1014 EXPECT_TRUE(callback.Matches(kSourceSsrc, kSequenceNumber, kFractionLoss, 1014 EXPECT_TRUE(callback.Matches(kSourceSsrc, kSequenceNumber, kFractionLoss,
1015 kCumulativeLoss, kJitter)); 1015 kCumulativeLoss, kJitter));
1016 1016
1017 rtcp_receiver_->RegisterRtcpStatisticsCallback(NULL); 1017 rtcp_receiver_->RegisterRtcpStatisticsCallback(NULL);
1018 1018
1019 // Add arbitrary numbers, callback should not be called (retain old values). 1019 // Add arbitrary numbers, callback should not be called (retain old values).
1020 rtcp::ReportBlock rb2; 1020 rtcp::ReportBlock rb2;
1021 rb2.To(kSourceSsrc); 1021 rb2.To(kSourceSsrc);
1022 rb2.WithExtHighestSeqNum(kSequenceNumber + 1); 1022 rb2.WithExtHighestSeqNum(kSequenceNumber + 1);
1023 rb2.WithFractionLost(42); 1023 rb2.WithFractionLost(42);
1024 rb2.WithCumulativeLost(137); 1024 rb2.WithCumulativeLost(137);
1025 rb2.WithJitter(4711); 1025 rb2.WithJitter(4711);
1026 1026
1027 rtcp::ReceiverReport rr2; 1027 rtcp::ReceiverReport rr2;
1028 rr2.From(kSenderSsrc); 1028 rr2.From(kSenderSsrc);
1029 rr2.WithReportBlock(&rb2); 1029 rr2.WithReportBlock(rb2);
1030 rtc::scoped_ptr<rtcp::RawPacket> p2(rr2.Build()); 1030 rtc::scoped_ptr<rtcp::RawPacket> p2(rr2.Build());
1031 EXPECT_EQ(0, InjectRtcpPacket(p2->Buffer(), p2->Length())); 1031 EXPECT_EQ(0, InjectRtcpPacket(p2->Buffer(), p2->Length()));
1032 EXPECT_TRUE(callback.Matches(kSourceSsrc, kSequenceNumber, kFractionLoss, 1032 EXPECT_TRUE(callback.Matches(kSourceSsrc, kSequenceNumber, kFractionLoss,
1033 kCumulativeLoss, kJitter)); 1033 kCumulativeLoss, kJitter));
1034 } 1034 }
1035 1035
1036 } // Anonymous namespace 1036 } // Anonymous namespace
1037 1037
1038 } // namespace webrtc 1038 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtcp_packet_unittest.cc ('k') | webrtc/modules/rtp_rtcp/source/rtcp_sender.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698