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

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

Issue 1579213005: [rtp_rtcp] rtcp::Xr moved into own file and renamed to ExtendedReports 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/extended_reports.h"
12
13 #include "testing/gmock/include/gmock/gmock.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15
16 using webrtc::rtcp::Dlrr;
17 using webrtc::rtcp::ExtendedReports;
18 using webrtc::rtcp::RawPacket;
19 using webrtc::rtcp::Rrtr;
20 using webrtc::rtcp::VoipMetric;
21 using webrtc::test::RtcpPacketParser;
22
23 namespace webrtc {
24 namespace rtcp {
25
26 TEST(RtcpPacketTest, ExtendedReportsWithNoReportBlocks) {
åsapersson 2016/01/15 11:10:30 rename to RtcpPacketExtendedReportsTest.WithNoRepo
27 ExtendedReports xr;
28 xr.From(kSenderSsrc);
29
30 rtc::scoped_ptr<RawPacket> packet(xr.Build());
31 RtcpPacketParser parser;
32 parser.Parse(packet->Buffer(), packet->Length());
33 EXPECT_EQ(1, parser.xr_header()->num_packets());
34 EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc());
35 }
36
37 TEST(RtcpPacketTest, ExtendedReportsWithRrtr) {
åsapersson 2016/01/15 11:10:30 and similar...
38 Rrtr rrtr;
39 rrtr.WithNtp(NtpTime(0x11111111, 0x22222222));
40 ExtendedReports xr;
41 xr.From(kSenderSsrc);
42 EXPECT_TRUE(xr.WithRrtr(&rrtr));
43
44 rtc::scoped_ptr<RawPacket> packet(xr.Build());
45 RtcpPacketParser parser;
46 parser.Parse(packet->Buffer(), packet->Length());
47 EXPECT_EQ(1, parser.xr_header()->num_packets());
48 EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc());
49 EXPECT_EQ(1, parser.rrtr()->num_packets());
50 EXPECT_EQ(0x11111111U, parser.rrtr()->NtpSec());
51 EXPECT_EQ(0x22222222U, parser.rrtr()->NtpFrac());
52 }
53
54 TEST(RtcpPacketTest, ExtendedReportsWithTwoRrtrBlocks) {
55 Rrtr rrtr1;
56 rrtr1.WithNtp(NtpTime(0x11111111, 0x22222222));
57 Rrtr rrtr2;
58 rrtr2.WithNtp(NtpTime(0x33333333, 0x44444444));
59 ExtendedReports xr;
60 xr.From(kSenderSsrc);
61 EXPECT_TRUE(xr.WithRrtr(&rrtr1));
62 EXPECT_TRUE(xr.WithRrtr(&rrtr2));
63
64 rtc::scoped_ptr<RawPacket> packet(xr.Build());
65 RtcpPacketParser parser;
66 parser.Parse(packet->Buffer(), packet->Length());
67 EXPECT_EQ(1, parser.xr_header()->num_packets());
68 EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc());
69 EXPECT_EQ(2, parser.rrtr()->num_packets());
70 EXPECT_EQ(0x33333333U, parser.rrtr()->NtpSec());
71 EXPECT_EQ(0x44444444U, parser.rrtr()->NtpFrac());
72 }
73
74 TEST(RtcpPacketTest, ExtendedReportsWithDlrrWithOneSubBlock) {
75 Dlrr dlrr;
76 EXPECT_TRUE(dlrr.WithDlrrItem(0x11111111, 0x22222222, 0x33333333));
77 ExtendedReports xr;
78 xr.From(kSenderSsrc);
79 EXPECT_TRUE(xr.WithDlrr(&dlrr));
80
81 rtc::scoped_ptr<RawPacket> packet(xr.Build());
82 RtcpPacketParser parser;
83 parser.Parse(packet->Buffer(), packet->Length());
84 EXPECT_EQ(1, parser.xr_header()->num_packets());
85 EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc());
86 EXPECT_EQ(1, parser.dlrr()->num_packets());
87 EXPECT_EQ(1, parser.dlrr_items()->num_packets());
88 EXPECT_EQ(0x11111111U, parser.dlrr_items()->Ssrc(0));
89 EXPECT_EQ(0x22222222U, parser.dlrr_items()->LastRr(0));
90 EXPECT_EQ(0x33333333U, parser.dlrr_items()->DelayLastRr(0));
91 }
92
93 TEST(RtcpPacketTest, ExtendedReportsWithDlrrWithTwoSubBlocks) {
94 Dlrr dlrr;
95 EXPECT_TRUE(dlrr.WithDlrrItem(0x11111111, 0x22222222, 0x33333333));
96 EXPECT_TRUE(dlrr.WithDlrrItem(0x44444444, 0x55555555, 0x66666666));
97 ExtendedReports xr;
98 xr.From(kSenderSsrc);
99 EXPECT_TRUE(xr.WithDlrr(&dlrr));
100
101 rtc::scoped_ptr<RawPacket> packet(xr.Build());
102 RtcpPacketParser parser;
103 parser.Parse(packet->Buffer(), packet->Length());
104 EXPECT_EQ(1, parser.xr_header()->num_packets());
105 EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc());
106 EXPECT_EQ(1, parser.dlrr()->num_packets());
107 EXPECT_EQ(2, parser.dlrr_items()->num_packets());
108 EXPECT_EQ(0x11111111U, parser.dlrr_items()->Ssrc(0));
109 EXPECT_EQ(0x22222222U, parser.dlrr_items()->LastRr(0));
110 EXPECT_EQ(0x33333333U, parser.dlrr_items()->DelayLastRr(0));
111 EXPECT_EQ(0x44444444U, parser.dlrr_items()->Ssrc(1));
112 EXPECT_EQ(0x55555555U, parser.dlrr_items()->LastRr(1));
113 EXPECT_EQ(0x66666666U, parser.dlrr_items()->DelayLastRr(1));
114 }
115
116 TEST(RtcpPacketTest, ExtendedReportsWithTwoDlrrBlocks) {
117 Dlrr dlrr1;
118 EXPECT_TRUE(dlrr1.WithDlrrItem(0x11111111, 0x22222222, 0x33333333));
119 Dlrr dlrr2;
120 EXPECT_TRUE(dlrr2.WithDlrrItem(0x44444444, 0x55555555, 0x66666666));
121 ExtendedReports xr;
122 xr.From(kSenderSsrc);
123 EXPECT_TRUE(xr.WithDlrr(&dlrr1));
124 EXPECT_TRUE(xr.WithDlrr(&dlrr2));
125
126 rtc::scoped_ptr<RawPacket> packet(xr.Build());
127 RtcpPacketParser parser;
128 parser.Parse(packet->Buffer(), packet->Length());
129 EXPECT_EQ(1, parser.xr_header()->num_packets());
130 EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc());
131 EXPECT_EQ(2, parser.dlrr()->num_packets());
132 EXPECT_EQ(2, parser.dlrr_items()->num_packets());
133 EXPECT_EQ(0x11111111U, parser.dlrr_items()->Ssrc(0));
134 EXPECT_EQ(0x22222222U, parser.dlrr_items()->LastRr(0));
135 EXPECT_EQ(0x33333333U, parser.dlrr_items()->DelayLastRr(0));
136 EXPECT_EQ(0x44444444U, parser.dlrr_items()->Ssrc(1));
137 EXPECT_EQ(0x55555555U, parser.dlrr_items()->LastRr(1));
138 EXPECT_EQ(0x66666666U, parser.dlrr_items()->DelayLastRr(1));
139 }
140
141 TEST(RtcpPacketTest, ExtendedReportsWithVoipMetric) {
142 RTCPVoIPMetric metric;
143 metric.lossRate = 1;
144 metric.discardRate = 2;
145 metric.burstDensity = 3;
146 metric.gapDensity = 4;
147 metric.burstDuration = 0x1111;
148 metric.gapDuration = 0x2222;
149 metric.roundTripDelay = 0x3333;
150 metric.endSystemDelay = 0x4444;
151 metric.signalLevel = 5;
152 metric.noiseLevel = 6;
153 metric.RERL = 7;
154 metric.Gmin = 8;
155 metric.Rfactor = 9;
156 metric.extRfactor = 10;
157 metric.MOSLQ = 11;
158 metric.MOSCQ = 12;
159 metric.RXconfig = 13;
160 metric.JBnominal = 0x5555;
161 metric.JBmax = 0x6666;
162 metric.JBabsMax = 0x7777;
163 VoipMetric metric_block;
164 metric_block.To(kRemoteSsrc);
165 metric_block.WithVoipMetric(metric);
166 ExtendedReports xr;
167 xr.From(kSenderSsrc);
168 EXPECT_TRUE(xr.WithVoipMetric(&metric_block));
169
170 rtc::scoped_ptr<RawPacket> packet(xr.Build());
171 RtcpPacketParser parser;
172 parser.Parse(packet->Buffer(), packet->Length());
173 EXPECT_EQ(1, parser.xr_header()->num_packets());
174 EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc());
175 EXPECT_EQ(1, parser.voip_metric()->num_packets());
176 EXPECT_EQ(kRemoteSsrc, parser.voip_metric()->Ssrc());
177 EXPECT_EQ(1, parser.voip_metric()->LossRate());
178 EXPECT_EQ(2, parser.voip_metric()->DiscardRate());
179 EXPECT_EQ(3, parser.voip_metric()->BurstDensity());
180 EXPECT_EQ(4, parser.voip_metric()->GapDensity());
181 EXPECT_EQ(0x1111, parser.voip_metric()->BurstDuration());
182 EXPECT_EQ(0x2222, parser.voip_metric()->GapDuration());
183 EXPECT_EQ(0x3333, parser.voip_metric()->RoundTripDelay());
184 EXPECT_EQ(0x4444, parser.voip_metric()->EndSystemDelay());
185 EXPECT_EQ(5, parser.voip_metric()->SignalLevel());
186 EXPECT_EQ(6, parser.voip_metric()->NoiseLevel());
187 EXPECT_EQ(7, parser.voip_metric()->Rerl());
188 EXPECT_EQ(8, parser.voip_metric()->Gmin());
189 EXPECT_EQ(9, parser.voip_metric()->Rfactor());
190 EXPECT_EQ(10, parser.voip_metric()->ExtRfactor());
191 EXPECT_EQ(11, parser.voip_metric()->MosLq());
192 EXPECT_EQ(12, parser.voip_metric()->MosCq());
193 EXPECT_EQ(13, parser.voip_metric()->RxConfig());
194 EXPECT_EQ(0x5555, parser.voip_metric()->JbNominal());
195 EXPECT_EQ(0x6666, parser.voip_metric()->JbMax());
196 EXPECT_EQ(0x7777, parser.voip_metric()->JbAbsMax());
197 }
198
199 TEST(RtcpPacketTest, ExtendedReportsWithMultipleReportBlocks) {
200 Rrtr rrtr;
201 Dlrr dlrr;
202 EXPECT_TRUE(dlrr.WithDlrrItem(1, 2, 3));
203 VoipMetric metric;
204 ExtendedReports xr;
205 xr.From(kSenderSsrc);
206 EXPECT_TRUE(xr.WithRrtr(&rrtr));
207 EXPECT_TRUE(xr.WithDlrr(&dlrr));
208 EXPECT_TRUE(xr.WithVoipMetric(&metric));
209
210 rtc::scoped_ptr<RawPacket> packet(xr.Build());
211 RtcpPacketParser parser;
212 parser.Parse(packet->Buffer(), packet->Length());
213 EXPECT_EQ(1, parser.xr_header()->num_packets());
214 EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc());
215 EXPECT_EQ(1, parser.rrtr()->num_packets());
216 EXPECT_EQ(1, parser.dlrr()->num_packets());
217 EXPECT_EQ(1, parser.dlrr_items()->num_packets());
218 EXPECT_EQ(1, parser.voip_metric()->num_packets());
219 }
220
221 TEST(RtcpPacketTest, DlrrWithoutItemNotIncludedInPacket) {
222 Rrtr rrtr;
223 Dlrr dlrr;
224 VoipMetric metric;
225 ExtendedReports xr;
226 xr.From(kSenderSsrc);
227 EXPECT_TRUE(xr.WithRrtr(&rrtr));
228 EXPECT_TRUE(xr.WithDlrr(&dlrr));
229 EXPECT_TRUE(xr.WithVoipMetric(&metric));
230
231 rtc::scoped_ptr<RawPacket> packet(xr.Build());
232 RtcpPacketParser parser;
233 parser.Parse(packet->Buffer(), packet->Length());
234 EXPECT_EQ(1, parser.xr_header()->num_packets());
235 EXPECT_EQ(kSenderSsrc, parser.xr_header()->Ssrc());
236 EXPECT_EQ(1, parser.rrtr()->num_packets());
237 EXPECT_EQ(0, parser.dlrr()->num_packets());
238 EXPECT_EQ(1, parser.voip_metric()->num_packets());
239 }
240
241 TEST(RtcpPacketTest, ExtendedReportsWithTooManyBlocks) {
242 const int kMaxBlocks = 50;
243 Xr xr;
244
245 Rrtr rrtr;
246 for (int i = 0; i < kMaxBlocks; ++i)
247 EXPECT_TRUE(xr.WithRrtr(&rrtr));
248 EXPECT_FALSE(xr.WithRrtr(&rrtr));
249
250 Dlrr dlrr;
251 for (int i = 0; i < kMaxBlocks; ++i)
252 EXPECT_TRUE(xr.WithDlrr(&dlrr));
253 EXPECT_FALSE(xr.WithDlrr(&dlrr));
254
255 VoipMetric voip_metric;
256 for (int i = 0; i < kMaxBlocks; ++i)
257 EXPECT_TRUE(xr.WithVoipMetric(&voip_metric));
258 EXPECT_FALSE(xr.WithVoipMetric(&voip_metric));
259 }
260 } // namespace rtcp
261 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.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