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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_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
(Empty)
1 /*
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
3 *
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
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_packet.h"
12
13 #include "testing/gtest/include/gtest/gtest.h"
14 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet.h"
15 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.h"
16 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h"
17 #include "webrtc/test/rtcp_packet_parser.h"
18
19 using webrtc::rtcp::Bye;
20 using webrtc::rtcp::CompoundPacket;
21 using webrtc::rtcp::Fir;
22 using webrtc::rtcp::RawPacket;
23 using webrtc::rtcp::ReceiverReport;
24 using webrtc::rtcp::ReportBlock;
25 using webrtc::rtcp::SenderReport;
26 using webrtc::test::RtcpPacketParser;
27
28 namespace webrtc {
29
30 const uint32_t kSenderSsrc = 0x12345678;
31
32 TEST(RtcpCompoundPacketTest, AppendPacket) {
33 Fir fir;
34 ReportBlock rb;
35 ReceiverReport rr;
36 rr.From(kSenderSsrc);
37 EXPECT_TRUE(rr.WithReportBlock(rb));
38 rr.Append(&fir);
39
40 rtc::scoped_ptr<RawPacket> packet(rr.Build());
41 RtcpPacketParser parser;
42 parser.Parse(packet->Buffer(), packet->Length());
43 EXPECT_EQ(1, parser.receiver_report()->num_packets());
44 EXPECT_EQ(kSenderSsrc, parser.receiver_report()->Ssrc());
45 EXPECT_EQ(1, parser.report_block()->num_packets());
46 EXPECT_EQ(1, parser.fir()->num_packets());
47 }
48
49 TEST(RtcpCompoundPacketTest, AppendPacketOnEmpty) {
50 CompoundPacket empty;
51 ReceiverReport rr;
52 rr.From(kSenderSsrc);
53 empty.Append(&rr);
54
55 rtc::scoped_ptr<RawPacket> packet(empty.Build());
56 RtcpPacketParser parser;
57 parser.Parse(packet->Buffer(), packet->Length());
58 EXPECT_EQ(1, parser.receiver_report()->num_packets());
59 EXPECT_EQ(0, parser.report_block()->num_packets());
60 }
61
62 TEST(RtcpCompoundPacketTest, AppendPacketWithOwnAppendedPacket) {
63 Fir fir;
64 Bye bye;
65 ReportBlock rb;
66
67 ReceiverReport rr;
68 EXPECT_TRUE(rr.WithReportBlock(rb));
69 rr.Append(&fir);
70
71 SenderReport sr;
72 sr.Append(&bye);
73 sr.Append(&rr);
74
75 rtc::scoped_ptr<RawPacket> packet(sr.Build());
76 RtcpPacketParser parser;
77 parser.Parse(packet->Buffer(), packet->Length());
78 EXPECT_EQ(1, parser.sender_report()->num_packets());
79 EXPECT_EQ(1, parser.receiver_report()->num_packets());
80 EXPECT_EQ(1, parser.report_block()->num_packets());
81 EXPECT_EQ(1, parser.bye()->num_packets());
82 EXPECT_EQ(1, parser.fir()->num_packets());
83 }
84
85 TEST(RtcpCompoundPacketTest, BuildWithInputBuffer) {
86 Fir fir;
87 ReportBlock rb;
88 ReceiverReport rr;
89 rr.From(kSenderSsrc);
90 EXPECT_TRUE(rr.WithReportBlock(rb));
91 rr.Append(&fir);
92
93 const size_t kRrLength = 8;
94 const size_t kReportBlockLength = 24;
95 const size_t kFirLength = 20;
96
97 class Verifier : public rtcp::RtcpPacket::PacketReadyCallback {
98 public:
99 void OnPacketReady(uint8_t* data, size_t length) override {
100 RtcpPacketParser parser;
101 parser.Parse(data, length);
102 EXPECT_EQ(1, parser.receiver_report()->num_packets());
103 EXPECT_EQ(1, parser.report_block()->num_packets());
104 EXPECT_EQ(1, parser.fir()->num_packets());
105 ++packets_created_;
106 }
107
108 int packets_created_ = 0;
109 } verifier;
110 const size_t kBufferSize = kRrLength + kReportBlockLength + kFirLength;
111 uint8_t buffer[kBufferSize];
112 EXPECT_TRUE(rr.BuildExternalBuffer(buffer, kBufferSize, &verifier));
113 EXPECT_EQ(1, verifier.packets_created_);
114 }
115
116 TEST(RtcpCompoundPacketTest, BuildWithTooSmallBuffer_FragmentedSend) {
117 Fir fir;
118 ReportBlock rb;
119 ReceiverReport rr;
120 rr.From(kSenderSsrc);
121 EXPECT_TRUE(rr.WithReportBlock(rb));
122 rr.Append(&fir);
123
124 const size_t kRrLength = 8;
125 const size_t kReportBlockLength = 24;
126
127 class Verifier : public rtcp::RtcpPacket::PacketReadyCallback {
128 public:
129 void OnPacketReady(uint8_t* data, size_t length) override {
130 RtcpPacketParser parser;
131 parser.Parse(data, length);
132 switch (packets_created_++) {
133 case 0:
134 EXPECT_EQ(1, parser.receiver_report()->num_packets());
135 EXPECT_EQ(1, parser.report_block()->num_packets());
136 EXPECT_EQ(0, parser.fir()->num_packets());
137 break;
138 case 1:
139 EXPECT_EQ(0, parser.receiver_report()->num_packets());
140 EXPECT_EQ(0, parser.report_block()->num_packets());
141 EXPECT_EQ(1, parser.fir()->num_packets());
142 break;
143 default:
144 ADD_FAILURE() << "OnPacketReady not expected to be called "
145 << packets_created_ << " times.";
146 }
147 }
148
149 int packets_created_ = 0;
150 } verifier;
151 const size_t kBufferSize = kRrLength + kReportBlockLength;
152 uint8_t buffer[kBufferSize];
153 EXPECT_TRUE(rr.BuildExternalBuffer(buffer, kBufferSize, &verifier));
154 EXPECT_EQ(2, verifier.packets_created_);
155 }
156
157 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_packet.cc ('k') | webrtc/modules/rtp_rtcp/source/rtcp_packet_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698