| OLD | NEW |
| 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. |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 using webrtc::rtcp::Fir; | 28 using webrtc::rtcp::Fir; |
| 29 using webrtc::rtcp::RawPacket; | 29 using webrtc::rtcp::RawPacket; |
| 30 using webrtc::rtcp::ReceiverReport; | 30 using webrtc::rtcp::ReceiverReport; |
| 31 using webrtc::rtcp::Remb; | 31 using webrtc::rtcp::Remb; |
| 32 using webrtc::rtcp::ReportBlock; | 32 using webrtc::rtcp::ReportBlock; |
| 33 using webrtc::rtcp::Rpsi; | 33 using webrtc::rtcp::Rpsi; |
| 34 using webrtc::rtcp::Rrtr; | 34 using webrtc::rtcp::Rrtr; |
| 35 using webrtc::rtcp::Sdes; | 35 using webrtc::rtcp::Sdes; |
| 36 using webrtc::rtcp::SenderReport; | 36 using webrtc::rtcp::SenderReport; |
| 37 using webrtc::rtcp::Sli; | 37 using webrtc::rtcp::Sli; |
| 38 using webrtc::rtcp::Tmmbn; | |
| 39 using webrtc::rtcp::Tmmbr; | 38 using webrtc::rtcp::Tmmbr; |
| 40 using webrtc::rtcp::VoipMetric; | 39 using webrtc::rtcp::VoipMetric; |
| 41 using webrtc::rtcp::Xr; | 40 using webrtc::rtcp::Xr; |
| 42 using webrtc::test::RtcpPacketParser; | 41 using webrtc::test::RtcpPacketParser; |
| 43 | 42 |
| 44 namespace webrtc { | 43 namespace webrtc { |
| 45 | 44 |
| 46 const uint32_t kSenderSsrc = 0x12345678; | 45 const uint32_t kSenderSsrc = 0x12345678; |
| 47 const uint32_t kRemoteSsrc = 0x23456789; | 46 const uint32_t kRemoteSsrc = 0x23456789; |
| 48 | 47 |
| (...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 507 rtc::scoped_ptr<RawPacket> packet(tmmbr.Build()); | 506 rtc::scoped_ptr<RawPacket> packet(tmmbr.Build()); |
| 508 RtcpPacketParser parser; | 507 RtcpPacketParser parser; |
| 509 parser.Parse(packet->Buffer(), packet->Length()); | 508 parser.Parse(packet->Buffer(), packet->Length()); |
| 510 EXPECT_EQ(1, parser.tmmbr()->num_packets()); | 509 EXPECT_EQ(1, parser.tmmbr()->num_packets()); |
| 511 EXPECT_EQ(kSenderSsrc, parser.tmmbr()->Ssrc()); | 510 EXPECT_EQ(kSenderSsrc, parser.tmmbr()->Ssrc()); |
| 512 EXPECT_EQ(1, parser.tmmbr_item()->num_packets()); | 511 EXPECT_EQ(1, parser.tmmbr_item()->num_packets()); |
| 513 EXPECT_EQ(312U, parser.tmmbr_item()->BitrateKbps()); | 512 EXPECT_EQ(312U, parser.tmmbr_item()->BitrateKbps()); |
| 514 EXPECT_EQ(60U, parser.tmmbr_item()->Overhead()); | 513 EXPECT_EQ(60U, parser.tmmbr_item()->Overhead()); |
| 515 } | 514 } |
| 516 | 515 |
| 517 TEST(RtcpPacketTest, TmmbnWithNoItem) { | |
| 518 Tmmbn tmmbn; | |
| 519 tmmbn.From(kSenderSsrc); | |
| 520 | |
| 521 rtc::scoped_ptr<RawPacket> packet(tmmbn.Build()); | |
| 522 RtcpPacketParser parser; | |
| 523 parser.Parse(packet->Buffer(), packet->Length()); | |
| 524 EXPECT_EQ(1, parser.tmmbn()->num_packets()); | |
| 525 EXPECT_EQ(kSenderSsrc, parser.tmmbn()->Ssrc()); | |
| 526 EXPECT_EQ(0, parser.tmmbn_items()->num_packets()); | |
| 527 } | |
| 528 | |
| 529 TEST(RtcpPacketTest, TmmbnWithOneItem) { | |
| 530 Tmmbn tmmbn; | |
| 531 tmmbn.From(kSenderSsrc); | |
| 532 EXPECT_TRUE(tmmbn.WithTmmbr(kRemoteSsrc, 312, 60)); | |
| 533 | |
| 534 rtc::scoped_ptr<RawPacket> packet(tmmbn.Build()); | |
| 535 RtcpPacketParser parser; | |
| 536 parser.Parse(packet->Buffer(), packet->Length()); | |
| 537 EXPECT_EQ(1, parser.tmmbn()->num_packets()); | |
| 538 EXPECT_EQ(kSenderSsrc, parser.tmmbn()->Ssrc()); | |
| 539 EXPECT_EQ(1, parser.tmmbn_items()->num_packets()); | |
| 540 EXPECT_EQ(kRemoteSsrc, parser.tmmbn_items()->Ssrc(0)); | |
| 541 EXPECT_EQ(312U, parser.tmmbn_items()->BitrateKbps(0)); | |
| 542 EXPECT_EQ(60U, parser.tmmbn_items()->Overhead(0)); | |
| 543 } | |
| 544 | |
| 545 TEST(RtcpPacketTest, TmmbnWithTwoItems) { | |
| 546 Tmmbn tmmbn; | |
| 547 tmmbn.From(kSenderSsrc); | |
| 548 EXPECT_TRUE(tmmbn.WithTmmbr(kRemoteSsrc, 312, 60)); | |
| 549 EXPECT_TRUE(tmmbn.WithTmmbr(kRemoteSsrc + 1, 1288, 40)); | |
| 550 | |
| 551 rtc::scoped_ptr<RawPacket> packet(tmmbn.Build()); | |
| 552 RtcpPacketParser parser; | |
| 553 parser.Parse(packet->Buffer(), packet->Length()); | |
| 554 EXPECT_EQ(1, parser.tmmbn()->num_packets()); | |
| 555 EXPECT_EQ(kSenderSsrc, parser.tmmbn()->Ssrc()); | |
| 556 EXPECT_EQ(2, parser.tmmbn_items()->num_packets()); | |
| 557 EXPECT_EQ(kRemoteSsrc, parser.tmmbn_items()->Ssrc(0)); | |
| 558 EXPECT_EQ(312U, parser.tmmbn_items()->BitrateKbps(0)); | |
| 559 EXPECT_EQ(60U, parser.tmmbn_items()->Overhead(0)); | |
| 560 EXPECT_EQ(kRemoteSsrc + 1, parser.tmmbn_items()->Ssrc(1)); | |
| 561 EXPECT_EQ(1288U, parser.tmmbn_items()->BitrateKbps(1)); | |
| 562 EXPECT_EQ(40U, parser.tmmbn_items()->Overhead(1)); | |
| 563 } | |
| 564 | |
| 565 TEST(RtcpPacketTest, TmmbnWithTooManyItems) { | |
| 566 Tmmbn tmmbn; | |
| 567 tmmbn.From(kSenderSsrc); | |
| 568 const int kMaxTmmbrItems = 50; | |
| 569 for (int i = 0; i < kMaxTmmbrItems; ++i) | |
| 570 EXPECT_TRUE(tmmbn.WithTmmbr(kRemoteSsrc + i, 312, 60)); | |
| 571 | |
| 572 EXPECT_FALSE(tmmbn.WithTmmbr(kRemoteSsrc + kMaxTmmbrItems, 312, 60)); | |
| 573 } | |
| 574 | |
| 575 TEST(RtcpPacketTest, XrWithNoReportBlocks) { | 516 TEST(RtcpPacketTest, XrWithNoReportBlocks) { |
| 576 Xr xr; | 517 Xr xr; |
| 577 xr.From(kSenderSsrc); | 518 xr.From(kSenderSsrc); |
| 578 | 519 |
| 579 rtc::scoped_ptr<RawPacket> packet(xr.Build()); | 520 rtc::scoped_ptr<RawPacket> packet(xr.Build()); |
| 580 RtcpPacketParser parser; | 521 RtcpPacketParser parser; |
| 581 parser.Parse(packet->Buffer(), packet->Length()); | 522 parser.Parse(packet->Buffer(), packet->Length()); |
| 582 EXPECT_EQ(1, parser.xr_header()->num_packets()); | 523 EXPECT_EQ(1, parser.xr_header()->num_packets()); |
| 583 EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc()); | 524 EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc()); |
| 584 } | 525 } |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 809 EXPECT_TRUE(xr.WithDlrr(&dlrr)); | 750 EXPECT_TRUE(xr.WithDlrr(&dlrr)); |
| 810 EXPECT_FALSE(xr.WithDlrr(&dlrr)); | 751 EXPECT_FALSE(xr.WithDlrr(&dlrr)); |
| 811 | 752 |
| 812 VoipMetric voip_metric; | 753 VoipMetric voip_metric; |
| 813 for (int i = 0; i < kMaxBlocks; ++i) | 754 for (int i = 0; i < kMaxBlocks; ++i) |
| 814 EXPECT_TRUE(xr.WithVoipMetric(&voip_metric)); | 755 EXPECT_TRUE(xr.WithVoipMetric(&voip_metric)); |
| 815 EXPECT_FALSE(xr.WithVoipMetric(&voip_metric)); | 756 EXPECT_FALSE(xr.WithVoipMetric(&voip_metric)); |
| 816 } | 757 } |
| 817 | 758 |
| 818 } // namespace webrtc | 759 } // namespace webrtc |
| OLD | NEW |