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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report_unittest.cc

Issue 1696203002: [rtp_rtcp] rtc::scoped_ptr<rtcp::RawPacket> replaced with rtc::Buffer (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 10 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) 2016 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2016 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
11 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.h" 11 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.h"
12 12
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 14
15 using webrtc::rtcp::RawPacket;
16 using webrtc::rtcp::ReportBlock; 15 using webrtc::rtcp::ReportBlock;
17 using webrtc::rtcp::SenderReport; 16 using webrtc::rtcp::SenderReport;
18 using webrtc::RTCPUtility::RtcpCommonHeader; 17 using webrtc::RTCPUtility::RtcpCommonHeader;
19 using webrtc::RTCPUtility::RtcpParseCommonHeader; 18 using webrtc::RTCPUtility::RtcpParseCommonHeader;
20 19
21 namespace webrtc { 20 namespace webrtc {
22 21
23 class RtcpPacketSenderReportTest : public ::testing::Test { 22 class RtcpPacketSenderReportTest : public ::testing::Test {
24 protected: 23 protected:
25 const uint32_t kSenderSsrc = 0x12345678; 24 const uint32_t kSenderSsrc = 0x12345678;
26 const uint32_t kRemoteSsrc = 0x23456789; 25 const uint32_t kRemoteSsrc = 0x23456789;
27 26
28 void ParsePacket(const RawPacket& packet) { 27 void ParsePacket(const rtc::Buffer& packet) {
29 RtcpCommonHeader header; 28 RtcpCommonHeader header;
30 EXPECT_TRUE( 29 EXPECT_TRUE(RtcpParseCommonHeader(packet.data(), packet.size(), &header));
31 RtcpParseCommonHeader(packet.Buffer(), packet.Length(), &header)); 30 EXPECT_EQ(packet.size(), header.BlockSize());
32 EXPECT_EQ(packet.Length(), header.BlockSize());
33 EXPECT_TRUE(parsed_.Parse( 31 EXPECT_TRUE(parsed_.Parse(
34 header, packet.Buffer() + RtcpCommonHeader::kHeaderSizeBytes)); 32 header, packet.data() + RtcpCommonHeader::kHeaderSizeBytes));
35 } 33 }
36 34
37 // Only ParsePacket can change parsed, tests should use it in readonly mode. 35 // Only ParsePacket can change parsed, tests should use it in readonly mode.
38 const SenderReport& parsed() { return parsed_; } 36 const SenderReport& parsed() { return parsed_; }
39 37
40 private: 38 private:
41 SenderReport parsed_; 39 SenderReport parsed_;
42 }; 40 };
43 41
44 TEST_F(RtcpPacketSenderReportTest, WithoutReportBlocks) { 42 TEST_F(RtcpPacketSenderReportTest, WithoutReportBlocks) {
45 const NtpTime kNtp(0x11121418, 0x22242628); 43 const NtpTime kNtp(0x11121418, 0x22242628);
46 const uint32_t kRtpTimestamp = 0x33343536; 44 const uint32_t kRtpTimestamp = 0x33343536;
47 const uint32_t kPacketCount = 0x44454647; 45 const uint32_t kPacketCount = 0x44454647;
48 const uint32_t kOctetCount = 0x55565758; 46 const uint32_t kOctetCount = 0x55565758;
49 47
50 SenderReport sr; 48 SenderReport sr;
51 sr.From(kSenderSsrc); 49 sr.From(kSenderSsrc);
52 sr.WithNtp(kNtp); 50 sr.WithNtp(kNtp);
53 sr.WithRtpTimestamp(kRtpTimestamp); 51 sr.WithRtpTimestamp(kRtpTimestamp);
54 sr.WithPacketCount(kPacketCount); 52 sr.WithPacketCount(kPacketCount);
55 sr.WithOctetCount(kOctetCount); 53 sr.WithOctetCount(kOctetCount);
56 54
57 rtc::scoped_ptr<RawPacket> packet = sr.Build(); 55 rtc::Buffer packet = sr.Build();
58 ParsePacket(*packet); 56 ParsePacket(packet);
59 57
60 EXPECT_EQ(kSenderSsrc, parsed().sender_ssrc()); 58 EXPECT_EQ(kSenderSsrc, parsed().sender_ssrc());
61 EXPECT_EQ(kNtp, parsed().ntp()); 59 EXPECT_EQ(kNtp, parsed().ntp());
62 EXPECT_EQ(kRtpTimestamp, parsed().rtp_timestamp()); 60 EXPECT_EQ(kRtpTimestamp, parsed().rtp_timestamp());
63 EXPECT_EQ(kPacketCount, parsed().sender_packet_count()); 61 EXPECT_EQ(kPacketCount, parsed().sender_packet_count());
64 EXPECT_EQ(kOctetCount, parsed().sender_octet_count()); 62 EXPECT_EQ(kOctetCount, parsed().sender_octet_count());
65 EXPECT_TRUE(parsed().report_blocks().empty()); 63 EXPECT_TRUE(parsed().report_blocks().empty());
66 } 64 }
67 65
68 TEST_F(RtcpPacketSenderReportTest, WithOneReportBlock) { 66 TEST_F(RtcpPacketSenderReportTest, WithOneReportBlock) {
69 ReportBlock rb; 67 ReportBlock rb;
70 rb.To(kRemoteSsrc); 68 rb.To(kRemoteSsrc);
71 69
72 SenderReport sr; 70 SenderReport sr;
73 sr.From(kSenderSsrc); 71 sr.From(kSenderSsrc);
74 EXPECT_TRUE(sr.WithReportBlock(rb)); 72 EXPECT_TRUE(sr.WithReportBlock(rb));
75 73
76 rtc::scoped_ptr<RawPacket> packet = sr.Build(); 74 rtc::Buffer packet = sr.Build();
77 ParsePacket(*packet); 75 ParsePacket(packet);
78 76
79 EXPECT_EQ(kSenderSsrc, parsed().sender_ssrc()); 77 EXPECT_EQ(kSenderSsrc, parsed().sender_ssrc());
80 EXPECT_EQ(1u, parsed().report_blocks().size()); 78 EXPECT_EQ(1u, parsed().report_blocks().size());
81 EXPECT_EQ(kRemoteSsrc, parsed().report_blocks()[0].source_ssrc()); 79 EXPECT_EQ(kRemoteSsrc, parsed().report_blocks()[0].source_ssrc());
82 } 80 }
83 81
84 TEST_F(RtcpPacketSenderReportTest, WithTwoReportBlocks) { 82 TEST_F(RtcpPacketSenderReportTest, WithTwoReportBlocks) {
85 ReportBlock rb1; 83 ReportBlock rb1;
86 rb1.To(kRemoteSsrc); 84 rb1.To(kRemoteSsrc);
87 ReportBlock rb2; 85 ReportBlock rb2;
88 rb2.To(kRemoteSsrc + 1); 86 rb2.To(kRemoteSsrc + 1);
89 87
90 SenderReport sr; 88 SenderReport sr;
91 sr.From(kSenderSsrc); 89 sr.From(kSenderSsrc);
92 EXPECT_TRUE(sr.WithReportBlock(rb1)); 90 EXPECT_TRUE(sr.WithReportBlock(rb1));
93 EXPECT_TRUE(sr.WithReportBlock(rb2)); 91 EXPECT_TRUE(sr.WithReportBlock(rb2));
94 92
95 rtc::scoped_ptr<RawPacket> packet = sr.Build(); 93 rtc::Buffer packet = sr.Build();
96 ParsePacket(*packet); 94 ParsePacket(packet);
97 95
98 EXPECT_EQ(kSenderSsrc, parsed().sender_ssrc()); 96 EXPECT_EQ(kSenderSsrc, parsed().sender_ssrc());
99 EXPECT_EQ(2u, parsed().report_blocks().size()); 97 EXPECT_EQ(2u, parsed().report_blocks().size());
100 EXPECT_EQ(kRemoteSsrc, parsed().report_blocks()[0].source_ssrc()); 98 EXPECT_EQ(kRemoteSsrc, parsed().report_blocks()[0].source_ssrc());
101 EXPECT_EQ(kRemoteSsrc + 1, parsed().report_blocks()[1].source_ssrc()); 99 EXPECT_EQ(kRemoteSsrc + 1, parsed().report_blocks()[1].source_ssrc());
102 } 100 }
103 101
104 TEST_F(RtcpPacketSenderReportTest, WithTooManyReportBlocks) { 102 TEST_F(RtcpPacketSenderReportTest, WithTooManyReportBlocks) {
105 SenderReport sr; 103 SenderReport sr;
106 sr.From(kSenderSsrc); 104 sr.From(kSenderSsrc);
107 const size_t kMaxReportBlocks = (1 << 5) - 1; 105 const size_t kMaxReportBlocks = (1 << 5) - 1;
108 ReportBlock rb; 106 ReportBlock rb;
109 for (size_t i = 0; i < kMaxReportBlocks; ++i) { 107 for (size_t i = 0; i < kMaxReportBlocks; ++i) {
110 rb.To(kRemoteSsrc + i); 108 rb.To(kRemoteSsrc + i);
111 EXPECT_TRUE(sr.WithReportBlock(rb)); 109 EXPECT_TRUE(sr.WithReportBlock(rb));
112 } 110 }
113 rb.To(kRemoteSsrc + kMaxReportBlocks); 111 rb.To(kRemoteSsrc + kMaxReportBlocks);
114 EXPECT_FALSE(sr.WithReportBlock(rb)); 112 EXPECT_FALSE(sr.WithReportBlock(rb));
115 } 113 }
116 114
117 } // namespace webrtc 115 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698