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

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

Issue 1582503002: [rtp_rtcp] rtcp::Empty moved into own file and renamed to CompoundPacket on the way (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 11 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) 2014 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2014 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 * This file includes unit tests for the RtcpPacket. 10 * This file includes unit tests for the RtcpPacket.
11 */ 11 */
12 12
13 #include "testing/gmock/include/gmock/gmock.h" 13 #include "testing/gmock/include/gmock/gmock.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 15
16 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet.h" 16 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet.h"
17 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/app.h" 17 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/app.h"
18 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.h" 18 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.h"
19 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h" 19 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h"
20 #include "webrtc/test/rtcp_packet_parser.h" 20 #include "webrtc/test/rtcp_packet_parser.h"
21 21
22 using ::testing::ElementsAre; 22 using ::testing::ElementsAre;
23 23
24 using webrtc::rtcp::App; 24 using webrtc::rtcp::App;
25 using webrtc::rtcp::Bye; 25 using webrtc::rtcp::Bye;
26 using webrtc::rtcp::Dlrr; 26 using webrtc::rtcp::Dlrr;
27 using webrtc::rtcp::Empty;
28 using webrtc::rtcp::Fir; 27 using webrtc::rtcp::Fir;
29 using webrtc::rtcp::RawPacket; 28 using webrtc::rtcp::RawPacket;
30 using webrtc::rtcp::ReceiverReport; 29 using webrtc::rtcp::ReceiverReport;
31 using webrtc::rtcp::Remb; 30 using webrtc::rtcp::Remb;
32 using webrtc::rtcp::ReportBlock; 31 using webrtc::rtcp::ReportBlock;
33 using webrtc::rtcp::Rpsi; 32 using webrtc::rtcp::Rpsi;
34 using webrtc::rtcp::Rrtr; 33 using webrtc::rtcp::Rrtr;
35 using webrtc::rtcp::Sdes; 34 using webrtc::rtcp::Sdes;
36 using webrtc::rtcp::SenderReport; 35 using webrtc::rtcp::SenderReport;
37 using webrtc::rtcp::Sli; 36 using webrtc::rtcp::Sli;
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 rtc::scoped_ptr<RawPacket> packet(fir.Build()); 321 rtc::scoped_ptr<RawPacket> packet(fir.Build());
323 RtcpPacketParser parser; 322 RtcpPacketParser parser;
324 parser.Parse(packet->Buffer(), packet->Length()); 323 parser.Parse(packet->Buffer(), packet->Length());
325 EXPECT_EQ(1, parser.fir()->num_packets()); 324 EXPECT_EQ(1, parser.fir()->num_packets());
326 EXPECT_EQ(kSenderSsrc, parser.fir()->Ssrc()); 325 EXPECT_EQ(kSenderSsrc, parser.fir()->Ssrc());
327 EXPECT_EQ(1, parser.fir_item()->num_packets()); 326 EXPECT_EQ(1, parser.fir_item()->num_packets());
328 EXPECT_EQ(kRemoteSsrc, parser.fir_item()->Ssrc()); 327 EXPECT_EQ(kRemoteSsrc, parser.fir_item()->Ssrc());
329 EXPECT_EQ(123U, parser.fir_item()->SeqNum()); 328 EXPECT_EQ(123U, parser.fir_item()->SeqNum());
330 } 329 }
331 330
332 TEST(RtcpPacketTest, AppendPacket) {
333 Fir fir;
334 ReportBlock rb;
335 ReceiverReport rr;
336 rr.From(kSenderSsrc);
337 EXPECT_TRUE(rr.WithReportBlock(rb));
338 rr.Append(&fir);
339
340 rtc::scoped_ptr<RawPacket> packet(rr.Build());
341 RtcpPacketParser parser;
342 parser.Parse(packet->Buffer(), packet->Length());
343 EXPECT_EQ(1, parser.receiver_report()->num_packets());
344 EXPECT_EQ(kSenderSsrc, parser.receiver_report()->Ssrc());
345 EXPECT_EQ(1, parser.report_block()->num_packets());
346 EXPECT_EQ(1, parser.fir()->num_packets());
347 }
348
349 TEST(RtcpPacketTest, AppendPacketOnEmpty) {
350 Empty empty;
351 ReceiverReport rr;
352 rr.From(kSenderSsrc);
353 empty.Append(&rr);
354
355 rtc::scoped_ptr<RawPacket> packet(empty.Build());
356 RtcpPacketParser parser;
357 parser.Parse(packet->Buffer(), packet->Length());
358 EXPECT_EQ(1, parser.receiver_report()->num_packets());
359 EXPECT_EQ(0, parser.report_block()->num_packets());
360 }
361
362 TEST(RtcpPacketTest, AppendPacketWithOwnAppendedPacket) {
363 Fir fir;
364 Bye bye;
365 ReportBlock rb;
366
367 ReceiverReport rr;
368 EXPECT_TRUE(rr.WithReportBlock(rb));
369 rr.Append(&fir);
370
371 SenderReport sr;
372 sr.Append(&bye);
373 sr.Append(&rr);
374
375 rtc::scoped_ptr<RawPacket> packet(sr.Build());
376 RtcpPacketParser parser;
377 parser.Parse(packet->Buffer(), packet->Length());
378 EXPECT_EQ(1, parser.sender_report()->num_packets());
379 EXPECT_EQ(1, parser.receiver_report()->num_packets());
380 EXPECT_EQ(1, parser.report_block()->num_packets());
381 EXPECT_EQ(1, parser.bye()->num_packets());
382 EXPECT_EQ(1, parser.fir()->num_packets());
383 }
384
385 TEST(RtcpPacketTest, BuildWithInputBuffer) {
386 Fir fir;
387 ReportBlock rb;
388 ReceiverReport rr;
389 rr.From(kSenderSsrc);
390 EXPECT_TRUE(rr.WithReportBlock(rb));
391 rr.Append(&fir);
392
393 const size_t kRrLength = 8;
394 const size_t kReportBlockLength = 24;
395 const size_t kFirLength = 20;
396
397 class Verifier : public rtcp::RtcpPacket::PacketReadyCallback {
398 public:
399 void OnPacketReady(uint8_t* data, size_t length) override {
400 RtcpPacketParser parser;
401 parser.Parse(data, length);
402 EXPECT_EQ(1, parser.receiver_report()->num_packets());
403 EXPECT_EQ(1, parser.report_block()->num_packets());
404 EXPECT_EQ(1, parser.fir()->num_packets());
405 ++packets_created_;
406 }
407
408 int packets_created_ = 0;
409 } verifier;
410 const size_t kBufferSize = kRrLength + kReportBlockLength + kFirLength;
411 uint8_t buffer[kBufferSize];
412 EXPECT_TRUE(rr.BuildExternalBuffer(buffer, kBufferSize, &verifier));
413 EXPECT_EQ(1, verifier.packets_created_);
414 }
415
416 TEST(RtcpPacketTest, BuildWithTooSmallBuffer) { 331 TEST(RtcpPacketTest, BuildWithTooSmallBuffer) {
417 ReportBlock rb; 332 ReportBlock rb;
418 ReceiverReport rr; 333 ReceiverReport rr;
419 rr.From(kSenderSsrc); 334 rr.From(kSenderSsrc);
420 EXPECT_TRUE(rr.WithReportBlock(rb)); 335 EXPECT_TRUE(rr.WithReportBlock(rb));
421 336
422 const size_t kRrLength = 8; 337 const size_t kRrLength = 8;
423 const size_t kReportBlockLength = 24; 338 const size_t kReportBlockLength = 24;
424 339
425 // No packet. 340 // No packet.
426 class Verifier : public rtcp::RtcpPacket::PacketReadyCallback { 341 class Verifier : public rtcp::RtcpPacket::PacketReadyCallback {
427 void OnPacketReady(uint8_t* data, size_t length) override { 342 void OnPacketReady(uint8_t* data, size_t length) override {
428 ADD_FAILURE() << "Packet should not fit within max size."; 343 ADD_FAILURE() << "Packet should not fit within max size.";
429 } 344 }
430 } verifier; 345 } verifier;
431 const size_t kBufferSize = kRrLength + kReportBlockLength - 1; 346 const size_t kBufferSize = kRrLength + kReportBlockLength - 1;
432 uint8_t buffer[kBufferSize]; 347 uint8_t buffer[kBufferSize];
433 EXPECT_FALSE(rr.BuildExternalBuffer(buffer, kBufferSize, &verifier)); 348 EXPECT_FALSE(rr.BuildExternalBuffer(buffer, kBufferSize, &verifier));
434 } 349 }
435 350
436 TEST(RtcpPacketTest, BuildWithTooSmallBuffer_FragmentedSend) {
437 Fir fir;
438 ReportBlock rb;
439 ReceiverReport rr;
440 rr.From(kSenderSsrc);
441 EXPECT_TRUE(rr.WithReportBlock(rb));
442 rr.Append(&fir);
443
444 const size_t kRrLength = 8;
445 const size_t kReportBlockLength = 24;
446
447 class Verifier : public rtcp::RtcpPacket::PacketReadyCallback {
448 public:
449 void OnPacketReady(uint8_t* data, size_t length) override {
450 RtcpPacketParser parser;
451 parser.Parse(data, length);
452 switch (packets_created_++) {
453 case 0:
454 EXPECT_EQ(1, parser.receiver_report()->num_packets());
455 EXPECT_EQ(1, parser.report_block()->num_packets());
456 EXPECT_EQ(0, parser.fir()->num_packets());
457 break;
458 case 1:
459 EXPECT_EQ(0, parser.receiver_report()->num_packets());
460 EXPECT_EQ(0, parser.report_block()->num_packets());
461 EXPECT_EQ(1, parser.fir()->num_packets());
462 break;
463 default:
464 ADD_FAILURE() << "OnPacketReady not expected to be called "
465 << packets_created_ << " times.";
466 }
467 }
468
469 int packets_created_ = 0;
470 } verifier;
471 const size_t kBufferSize = kRrLength + kReportBlockLength;
472 uint8_t buffer[kBufferSize];
473 EXPECT_TRUE(rr.BuildExternalBuffer(buffer, kBufferSize, &verifier));
474 EXPECT_EQ(2, verifier.packets_created_);
475 }
476
477 TEST(RtcpPacketTest, Remb) { 351 TEST(RtcpPacketTest, Remb) {
478 Remb remb; 352 Remb remb;
479 remb.From(kSenderSsrc); 353 remb.From(kSenderSsrc);
480 remb.AppliesTo(kRemoteSsrc); 354 remb.AppliesTo(kRemoteSsrc);
481 remb.AppliesTo(kRemoteSsrc + 1); 355 remb.AppliesTo(kRemoteSsrc + 1);
482 remb.AppliesTo(kRemoteSsrc + 2); 356 remb.AppliesTo(kRemoteSsrc + 2);
483 remb.WithBitrateBps(261011); 357 remb.WithBitrateBps(261011);
484 358
485 rtc::scoped_ptr<RawPacket> packet(remb.Build()); 359 rtc::scoped_ptr<RawPacket> packet(remb.Build());
486 RtcpPacketParser parser; 360 RtcpPacketParser parser;
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 EXPECT_TRUE(xr.WithDlrr(&dlrr)); 606 EXPECT_TRUE(xr.WithDlrr(&dlrr));
733 EXPECT_FALSE(xr.WithDlrr(&dlrr)); 607 EXPECT_FALSE(xr.WithDlrr(&dlrr));
734 608
735 VoipMetric voip_metric; 609 VoipMetric voip_metric;
736 for (int i = 0; i < kMaxBlocks; ++i) 610 for (int i = 0; i < kMaxBlocks; ++i)
737 EXPECT_TRUE(xr.WithVoipMetric(&voip_metric)); 611 EXPECT_TRUE(xr.WithVoipMetric(&voip_metric));
738 EXPECT_FALSE(xr.WithVoipMetric(&voip_metric)); 612 EXPECT_FALSE(xr.WithVoipMetric(&voip_metric));
739 } 613 }
740 614
741 } // namespace webrtc 615 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_packet_unittest.cc ('k') | webrtc/modules/rtp_rtcp/source/rtcp_sender.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698