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

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