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

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 * This file includes unit tests for the RtcpPacket.
åsapersson 2016/01/12 13:07:19 perhaps remove this comment
danilchap 2016/01/12 13:20:49 Done.
11 */
12
13 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_packet.h"
14
15 #include "testing/gtest/include/gtest/gtest.h"
16 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet.h"
17 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.h"
18 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h"
19 #include "webrtc/test/rtcp_packet_parser.h"
20
21 using webrtc::rtcp::Bye;
22 using webrtc::rtcp::CompoundPacket;
23 using webrtc::rtcp::Fir;
24 using webrtc::rtcp::RawPacket;
25 using webrtc::rtcp::ReceiverReport;
26 using webrtc::rtcp::ReportBlock;
27 using webrtc::rtcp::SenderReport;
28 using webrtc::test::RtcpPacketParser;
29
30 namespace webrtc {
31
32 const uint32_t kSenderSsrc = 0x12345678;
33
34 TEST(RtcpPacketTest, AppendPacket) {
åsapersson 2016/01/12 13:07:19 rename to RtcpPacketCompoundTest?
danilchap 2016/01/12 13:20:49 Done.
35 Fir fir;
36 ReportBlock rb;
37 ReceiverReport rr;
38 rr.From(kSenderSsrc);
39 EXPECT_TRUE(rr.WithReportBlock(rb));
40 rr.Append(&fir);
41
42 rtc::scoped_ptr<RawPacket> packet(rr.Build());
43 RtcpPacketParser parser;
44 parser.Parse(packet->Buffer(), packet->Length());
45 EXPECT_EQ(1, parser.receiver_report()->num_packets());
46 EXPECT_EQ(kSenderSsrc, parser.receiver_report()->Ssrc());
47 EXPECT_EQ(1, parser.report_block()->num_packets());
48 EXPECT_EQ(1, parser.fir()->num_packets());
49 }
50
51 TEST(RtcpPacketTest, AppendPacketOnEmpty) {
52 CompoundPacket empty;
53 ReceiverReport rr;
54 rr.From(kSenderSsrc);
55 empty.Append(&rr);
56
57 rtc::scoped_ptr<RawPacket> packet(empty.Build());
58 RtcpPacketParser parser;
59 parser.Parse(packet->Buffer(), packet->Length());
60 EXPECT_EQ(1, parser.receiver_report()->num_packets());
61 EXPECT_EQ(0, parser.report_block()->num_packets());
62 }
63
64 TEST(RtcpPacketTest, AppendPacketWithOwnAppendedPacket) {
65 Fir fir;
66 Bye bye;
67 ReportBlock rb;
68
69 ReceiverReport rr;
70 EXPECT_TRUE(rr.WithReportBlock(rb));
71 rr.Append(&fir);
72
73 SenderReport sr;
74 sr.Append(&bye);
75 sr.Append(&rr);
76
77 rtc::scoped_ptr<RawPacket> packet(sr.Build());
78 RtcpPacketParser parser;
79 parser.Parse(packet->Buffer(), packet->Length());
80 EXPECT_EQ(1, parser.sender_report()->num_packets());
81 EXPECT_EQ(1, parser.receiver_report()->num_packets());
82 EXPECT_EQ(1, parser.report_block()->num_packets());
83 EXPECT_EQ(1, parser.bye()->num_packets());
84 EXPECT_EQ(1, parser.fir()->num_packets());
85 }
86
87 TEST(RtcpPacketTest, BuildWithInputBuffer) {
88 Fir fir;
89 ReportBlock rb;
90 ReceiverReport rr;
91 rr.From(kSenderSsrc);
92 EXPECT_TRUE(rr.WithReportBlock(rb));
93 rr.Append(&fir);
94
95 const size_t kRrLength = 8;
96 const size_t kReportBlockLength = 24;
97 const size_t kFirLength = 20;
98
99 class Verifier : public rtcp::RtcpPacket::PacketReadyCallback {
100 public:
101 void OnPacketReady(uint8_t* data, size_t length) override {
102 RtcpPacketParser parser;
103 parser.Parse(data, length);
104 EXPECT_EQ(1, parser.receiver_report()->num_packets());
105 EXPECT_EQ(1, parser.report_block()->num_packets());
106 EXPECT_EQ(1, parser.fir()->num_packets());
107 ++packets_created_;
108 }
109
110 int packets_created_ = 0;
111 } verifier;
112 const size_t kBufferSize = kRrLength + kReportBlockLength + kFirLength;
113 uint8_t buffer[kBufferSize];
114 EXPECT_TRUE(rr.BuildExternalBuffer(buffer, kBufferSize, &verifier));
115 EXPECT_EQ(1, verifier.packets_created_);
116 }
117
118 TEST(RtcpPacketTest, BuildWithTooSmallBuffer_FragmentedSend) {
119 Fir fir;
120 ReportBlock rb;
121 ReceiverReport rr;
122 rr.From(kSenderSsrc);
123 EXPECT_TRUE(rr.WithReportBlock(rb));
124 rr.Append(&fir);
125
126 const size_t kRrLength = 8;
127 const size_t kReportBlockLength = 24;
128
129 class Verifier : public rtcp::RtcpPacket::PacketReadyCallback {
130 public:
131 void OnPacketReady(uint8_t* data, size_t length) override {
132 RtcpPacketParser parser;
133 parser.Parse(data, length);
134 switch (packets_created_++) {
135 case 0:
136 EXPECT_EQ(1, parser.receiver_report()->num_packets());
137 EXPECT_EQ(1, parser.report_block()->num_packets());
138 EXPECT_EQ(0, parser.fir()->num_packets());
139 break;
140 case 1:
141 EXPECT_EQ(0, parser.receiver_report()->num_packets());
142 EXPECT_EQ(0, parser.report_block()->num_packets());
143 EXPECT_EQ(1, parser.fir()->num_packets());
144 break;
145 default:
146 ADD_FAILURE() << "OnPacketReady not expected to be called "
147 << packets_created_ << " times.";
148 }
149 }
150
151 int packets_created_ = 0;
152 } verifier;
153 const size_t kBufferSize = kRrLength + kReportBlockLength;
154 uint8_t buffer[kBufferSize];
155 EXPECT_TRUE(rr.BuildExternalBuffer(buffer, kBufferSize, &verifier));
156 EXPECT_EQ(2, verifier.packets_created_);
157 }
158
159 } // 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