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

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

Issue 2006313010: [rtcp] ExtendedReports::Parse updated not to use RTCPUtility (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 6 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
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/extended_reports.h" 11 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h"
12 12
13 #include "testing/gmock/include/gmock/gmock.h" 13 #include "testing/gmock/include/gmock/gmock.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 #include "webrtc/base/random.h" 15 #include "webrtc/base/random.h"
16 #include "webrtc/test/rtcp_packet_parser.h"
16 17
17 using testing::ElementsAre; 18 using testing::ElementsAre;
18 using testing::ElementsAreArray; 19 using testing::ElementsAreArray;
19 using testing::IsEmpty; 20 using testing::IsEmpty;
20 using testing::make_tuple; 21 using testing::make_tuple;
21 using webrtc::rtcp::Dlrr; 22 using webrtc::rtcp::Dlrr;
22 using webrtc::rtcp::ExtendedReports; 23 using webrtc::rtcp::ExtendedReports;
23 using webrtc::rtcp::ReceiveTimeInfo; 24 using webrtc::rtcp::ReceiveTimeInfo;
24 using webrtc::rtcp::Rrtr; 25 using webrtc::rtcp::Rrtr;
25 using webrtc::rtcp::VoipMetric; 26 using webrtc::rtcp::VoipMetric;
26 using webrtc::RTCPUtility::RtcpCommonHeader;
27 using webrtc::RTCPUtility::RtcpParseCommonHeader;
28 27
29 namespace webrtc { 28 namespace webrtc {
30 // Define comparision operators that shouldn't be needed in production, 29 // Define comparision operators that shouldn't be needed in production,
31 // but make testing matches more clear. 30 // but make testing matches more clear.
32 bool operator==(const RTCPVoIPMetric& metric1, const RTCPVoIPMetric& metric2) { 31 bool operator==(const RTCPVoIPMetric& metric1, const RTCPVoIPMetric& metric2) {
33 return metric1.lossRate == metric2.lossRate && 32 return metric1.lossRate == metric2.lossRate &&
34 metric1.discardRate == metric2.discardRate && 33 metric1.discardRate == metric2.discardRate &&
35 metric1.burstDensity == metric2.burstDensity && 34 metric1.burstDensity == metric2.burstDensity &&
36 metric1.gapDensity == metric2.gapDensity && 35 metric1.gapDensity == metric2.gapDensity &&
37 metric1.burstDuration == metric2.burstDuration && 36 metric1.burstDuration == metric2.burstDuration &&
(...skipping 29 matching lines...) Expand all
67 return dlrr1.sub_blocks() == dlrr2.sub_blocks(); 66 return dlrr1.sub_blocks() == dlrr2.sub_blocks();
68 } 67 }
69 68
70 bool operator==(const VoipMetric& metric1, const VoipMetric& metric2) { 69 bool operator==(const VoipMetric& metric1, const VoipMetric& metric2) {
71 return metric1.ssrc() == metric2.ssrc() && 70 return metric1.ssrc() == metric2.ssrc() &&
72 metric1.voip_metric() == metric2.voip_metric(); 71 metric1.voip_metric() == metric2.voip_metric();
73 } 72 }
74 } // namespace rtcp 73 } // namespace rtcp
75 74
76 namespace { 75 namespace {
77 const uint32_t kSenderSsrc = 0x12345678; 76 constexpr uint32_t kSenderSsrc = 0x12345678;
78 const uint8_t kEmptyPacket[8] = {0x80, 207, 0x00, 0x01, 77 constexpr uint8_t kEmptyPacket[] = {0x80, 207, 0x00, 0x01,
79 0x12, 0x34, 0x56, 0x78}; 78 0x12, 0x34, 0x56, 0x78};
80
81 bool Parse(const uint8_t* buffer,
82 size_t length,
83 ExtendedReports* packet) {
84 RtcpCommonHeader header;
85 EXPECT_TRUE(RtcpParseCommonHeader(buffer, length, &header));
86 EXPECT_EQ(length, header.BlockSize());
87 return packet->Parse(header, buffer + RtcpCommonHeader::kHeaderSizeBytes);
88 }
89
90 bool Parse(const rtc::Buffer& buffer, ExtendedReports* packet) {
91 return Parse(buffer.data(), buffer.size(), packet);
92 }
93 } // namespace 79 } // namespace
94 80
95 class RtcpPacketExtendedReportsTest : public ::testing::Test { 81 class RtcpPacketExtendedReportsTest : public ::testing::Test {
96 public: 82 public:
97 RtcpPacketExtendedReportsTest() : random_(0x123456789) {} 83 RtcpPacketExtendedReportsTest() : random_(0x123456789) {}
98 84
99 protected: 85 protected:
100 template <typename T> 86 template <typename T>
101 T Rand() { 87 T Rand() {
102 return random_.Rand<T>(); 88 return random_.Rand<T>();
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 xr.From(kSenderSsrc); 153 xr.From(kSenderSsrc);
168 154
169 rtc::Buffer packet = xr.Build(); 155 rtc::Buffer packet = xr.Build();
170 156
171 EXPECT_THAT(make_tuple(packet.data(), packet.size()), 157 EXPECT_THAT(make_tuple(packet.data(), packet.size()),
172 ElementsAreArray(kEmptyPacket)); 158 ElementsAreArray(kEmptyPacket));
173 } 159 }
174 160
175 TEST_F(RtcpPacketExtendedReportsTest, ParseWithoutReportBlocks) { 161 TEST_F(RtcpPacketExtendedReportsTest, ParseWithoutReportBlocks) {
176 ExtendedReports parsed; 162 ExtendedReports parsed;
177 EXPECT_TRUE(Parse(kEmptyPacket, sizeof(kEmptyPacket), &parsed)); 163 EXPECT_TRUE(test::ParseSinglePacket(kEmptyPacket, &parsed));
178 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc()); 164 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc());
179 EXPECT_THAT(parsed.rrtrs(), IsEmpty()); 165 EXPECT_THAT(parsed.rrtrs(), IsEmpty());
180 EXPECT_THAT(parsed.dlrrs(), IsEmpty()); 166 EXPECT_THAT(parsed.dlrrs(), IsEmpty());
181 EXPECT_THAT(parsed.voip_metrics(), IsEmpty()); 167 EXPECT_THAT(parsed.voip_metrics(), IsEmpty());
182 } 168 }
183 169
184 TEST_F(RtcpPacketExtendedReportsTest, CreateAndParseWithOneRrtrBlock) { 170 TEST_F(RtcpPacketExtendedReportsTest, CreateAndParseWithOneRrtrBlock) {
185 Rrtr rrtr = Rand<Rrtr>(); 171 Rrtr rrtr = Rand<Rrtr>();
186 ExtendedReports xr; 172 ExtendedReports xr;
187 xr.From(kSenderSsrc); 173 xr.From(kSenderSsrc);
188 EXPECT_TRUE(xr.WithRrtr(rrtr)); 174 EXPECT_TRUE(xr.WithRrtr(rrtr));
189 rtc::Buffer packet = xr.Build(); 175 rtc::Buffer packet = xr.Build();
190 176
191 ExtendedReports mparsed; 177 ExtendedReports mparsed;
192 EXPECT_TRUE(Parse(packet, &mparsed)); 178 EXPECT_TRUE(test::ParseSinglePacket(packet, &mparsed));
193 const ExtendedReports& parsed = mparsed; 179 const ExtendedReports& parsed = mparsed;
194 180
195 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc()); 181 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc());
196 EXPECT_THAT(parsed.rrtrs(), ElementsAre(rrtr)); 182 EXPECT_THAT(parsed.rrtrs(), ElementsAre(rrtr));
197 } 183 }
198 184
199 TEST_F(RtcpPacketExtendedReportsTest, CreateAndParseWithTwoRrtrBlocks) { 185 TEST_F(RtcpPacketExtendedReportsTest, CreateAndParseWithTwoRrtrBlocks) {
200 Rrtr rrtr1 = Rand<Rrtr>(); 186 Rrtr rrtr1 = Rand<Rrtr>();
201 Rrtr rrtr2 = Rand<Rrtr>(); 187 Rrtr rrtr2 = Rand<Rrtr>();
202 ExtendedReports xr; 188 ExtendedReports xr;
203 xr.From(kSenderSsrc); 189 xr.From(kSenderSsrc);
204 EXPECT_TRUE(xr.WithRrtr(rrtr1)); 190 EXPECT_TRUE(xr.WithRrtr(rrtr1));
205 EXPECT_TRUE(xr.WithRrtr(rrtr2)); 191 EXPECT_TRUE(xr.WithRrtr(rrtr2));
206 192
207 rtc::Buffer packet = xr.Build(); 193 rtc::Buffer packet = xr.Build();
208 194
209 ExtendedReports mparsed; 195 ExtendedReports mparsed;
210 EXPECT_TRUE(Parse(packet, &mparsed)); 196 EXPECT_TRUE(test::ParseSinglePacket(packet, &mparsed));
211 const ExtendedReports& parsed = mparsed; 197 const ExtendedReports& parsed = mparsed;
212 198
213 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc()); 199 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc());
214 EXPECT_THAT(parsed.rrtrs(), ElementsAre(rrtr1, rrtr2)); 200 EXPECT_THAT(parsed.rrtrs(), ElementsAre(rrtr1, rrtr2));
215 } 201 }
216 202
217 TEST_F(RtcpPacketExtendedReportsTest, CreateAndParseWithDlrrWithOneSubBlock) { 203 TEST_F(RtcpPacketExtendedReportsTest, CreateAndParseWithDlrrWithOneSubBlock) {
218 Dlrr dlrr; 204 Dlrr dlrr;
219 EXPECT_TRUE(dlrr.WithDlrrItem(Rand<ReceiveTimeInfo>())); 205 EXPECT_TRUE(dlrr.WithDlrrItem(Rand<ReceiveTimeInfo>()));
220 ExtendedReports xr; 206 ExtendedReports xr;
221 xr.From(kSenderSsrc); 207 xr.From(kSenderSsrc);
222 EXPECT_TRUE(xr.WithDlrr(dlrr)); 208 EXPECT_TRUE(xr.WithDlrr(dlrr));
223 209
224 rtc::Buffer packet = xr.Build(); 210 rtc::Buffer packet = xr.Build();
225 211
226 ExtendedReports mparsed; 212 ExtendedReports mparsed;
227 EXPECT_TRUE(Parse(packet, &mparsed)); 213 EXPECT_TRUE(test::ParseSinglePacket(packet, &mparsed));
228 const ExtendedReports& parsed = mparsed; 214 const ExtendedReports& parsed = mparsed;
229 215
230 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc()); 216 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc());
231 EXPECT_THAT(parsed.dlrrs(), ElementsAre(dlrr)); 217 EXPECT_THAT(parsed.dlrrs(), ElementsAre(dlrr));
232 } 218 }
233 219
234 TEST_F(RtcpPacketExtendedReportsTest, CreateAndParseWithDlrrWithTwoSubBlocks) { 220 TEST_F(RtcpPacketExtendedReportsTest, CreateAndParseWithDlrrWithTwoSubBlocks) {
235 Dlrr dlrr; 221 Dlrr dlrr;
236 EXPECT_TRUE(dlrr.WithDlrrItem(Rand<ReceiveTimeInfo>())); 222 EXPECT_TRUE(dlrr.WithDlrrItem(Rand<ReceiveTimeInfo>()));
237 EXPECT_TRUE(dlrr.WithDlrrItem(Rand<ReceiveTimeInfo>())); 223 EXPECT_TRUE(dlrr.WithDlrrItem(Rand<ReceiveTimeInfo>()));
238 ExtendedReports xr; 224 ExtendedReports xr;
239 xr.From(kSenderSsrc); 225 xr.From(kSenderSsrc);
240 EXPECT_TRUE(xr.WithDlrr(dlrr)); 226 EXPECT_TRUE(xr.WithDlrr(dlrr));
241 227
242 rtc::Buffer packet = xr.Build(); 228 rtc::Buffer packet = xr.Build();
243 229
244 ExtendedReports mparsed; 230 ExtendedReports mparsed;
245 EXPECT_TRUE(Parse(packet, &mparsed)); 231 EXPECT_TRUE(test::ParseSinglePacket(packet, &mparsed));
246 const ExtendedReports& parsed = mparsed; 232 const ExtendedReports& parsed = mparsed;
247 233
248 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc()); 234 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc());
249 EXPECT_THAT(parsed.dlrrs(), ElementsAre(dlrr)); 235 EXPECT_THAT(parsed.dlrrs(), ElementsAre(dlrr));
250 } 236 }
251 237
252 TEST_F(RtcpPacketExtendedReportsTest, CreateAndParseWithTwoDlrrBlocks) { 238 TEST_F(RtcpPacketExtendedReportsTest, CreateAndParseWithTwoDlrrBlocks) {
253 Dlrr dlrr1; 239 Dlrr dlrr1;
254 EXPECT_TRUE(dlrr1.WithDlrrItem(Rand<ReceiveTimeInfo>())); 240 EXPECT_TRUE(dlrr1.WithDlrrItem(Rand<ReceiveTimeInfo>()));
255 Dlrr dlrr2; 241 Dlrr dlrr2;
256 EXPECT_TRUE(dlrr2.WithDlrrItem(Rand<ReceiveTimeInfo>())); 242 EXPECT_TRUE(dlrr2.WithDlrrItem(Rand<ReceiveTimeInfo>()));
257 ExtendedReports xr; 243 ExtendedReports xr;
258 xr.From(kSenderSsrc); 244 xr.From(kSenderSsrc);
259 EXPECT_TRUE(xr.WithDlrr(dlrr1)); 245 EXPECT_TRUE(xr.WithDlrr(dlrr1));
260 EXPECT_TRUE(xr.WithDlrr(dlrr2)); 246 EXPECT_TRUE(xr.WithDlrr(dlrr2));
261 247
262 rtc::Buffer packet = xr.Build(); 248 rtc::Buffer packet = xr.Build();
263 249
264 ExtendedReports mparsed; 250 ExtendedReports mparsed;
265 EXPECT_TRUE(Parse(packet, &mparsed)); 251 EXPECT_TRUE(test::ParseSinglePacket(packet, &mparsed));
266 const ExtendedReports& parsed = mparsed; 252 const ExtendedReports& parsed = mparsed;
267 253
268 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc()); 254 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc());
269 EXPECT_THAT(parsed.dlrrs(), ElementsAre(dlrr1, dlrr2)); 255 EXPECT_THAT(parsed.dlrrs(), ElementsAre(dlrr1, dlrr2));
270 } 256 }
271 257
272 TEST_F(RtcpPacketExtendedReportsTest, CreateAndParseWithVoipMetric) { 258 TEST_F(RtcpPacketExtendedReportsTest, CreateAndParseWithVoipMetric) {
273 VoipMetric voip_metric = Rand<VoipMetric>(); 259 VoipMetric voip_metric = Rand<VoipMetric>();
274 260
275 ExtendedReports xr; 261 ExtendedReports xr;
276 xr.From(kSenderSsrc); 262 xr.From(kSenderSsrc);
277 EXPECT_TRUE(xr.WithVoipMetric(voip_metric)); 263 EXPECT_TRUE(xr.WithVoipMetric(voip_metric));
278 264
279 rtc::Buffer packet = xr.Build(); 265 rtc::Buffer packet = xr.Build();
280 266
281 ExtendedReports mparsed; 267 ExtendedReports mparsed;
282 EXPECT_TRUE(Parse(packet, &mparsed)); 268 EXPECT_TRUE(test::ParseSinglePacket(packet, &mparsed));
283 const ExtendedReports& parsed = mparsed; 269 const ExtendedReports& parsed = mparsed;
284 270
285 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc()); 271 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc());
286 EXPECT_THAT(parsed.voip_metrics(), ElementsAre(voip_metric)); 272 EXPECT_THAT(parsed.voip_metrics(), ElementsAre(voip_metric));
287 } 273 }
288 274
289 TEST_F(RtcpPacketExtendedReportsTest, CreateAndParseWithMultipleReportBlocks) { 275 TEST_F(RtcpPacketExtendedReportsTest, CreateAndParseWithMultipleReportBlocks) {
290 Rrtr rrtr = Rand<Rrtr>(); 276 Rrtr rrtr = Rand<Rrtr>();
291 Dlrr dlrr; 277 Dlrr dlrr;
292 EXPECT_TRUE(dlrr.WithDlrrItem(Rand<ReceiveTimeInfo>())); 278 EXPECT_TRUE(dlrr.WithDlrrItem(Rand<ReceiveTimeInfo>()));
293 VoipMetric metric = Rand<VoipMetric>(); 279 VoipMetric metric = Rand<VoipMetric>();
294 ExtendedReports xr; 280 ExtendedReports xr;
295 xr.From(kSenderSsrc); 281 xr.From(kSenderSsrc);
296 EXPECT_TRUE(xr.WithRrtr(rrtr)); 282 EXPECT_TRUE(xr.WithRrtr(rrtr));
297 EXPECT_TRUE(xr.WithDlrr(dlrr)); 283 EXPECT_TRUE(xr.WithDlrr(dlrr));
298 EXPECT_TRUE(xr.WithVoipMetric(metric)); 284 EXPECT_TRUE(xr.WithVoipMetric(metric));
299 285
300 rtc::Buffer packet = xr.Build(); 286 rtc::Buffer packet = xr.Build();
301 287
302 ExtendedReports mparsed; 288 ExtendedReports mparsed;
303 EXPECT_TRUE(Parse(packet, &mparsed)); 289 EXPECT_TRUE(test::ParseSinglePacket(packet, &mparsed));
304 const ExtendedReports& parsed = mparsed; 290 const ExtendedReports& parsed = mparsed;
305 291
306 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc()); 292 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc());
307 EXPECT_THAT(parsed.rrtrs(), ElementsAre(rrtr)); 293 EXPECT_THAT(parsed.rrtrs(), ElementsAre(rrtr));
308 EXPECT_THAT(parsed.dlrrs(), ElementsAre(dlrr)); 294 EXPECT_THAT(parsed.dlrrs(), ElementsAre(dlrr));
309 EXPECT_THAT(parsed.voip_metrics(), ElementsAre(metric)); 295 EXPECT_THAT(parsed.voip_metrics(), ElementsAre(metric));
310 } 296 }
311 297
312 TEST_F(RtcpPacketExtendedReportsTest, DlrrWithoutItemNotIncludedInPacket) { 298 TEST_F(RtcpPacketExtendedReportsTest, DlrrWithoutItemNotIncludedInPacket) {
313 Rrtr rrtr = Rand<Rrtr>(); 299 Rrtr rrtr = Rand<Rrtr>();
314 Dlrr dlrr; 300 Dlrr dlrr;
315 VoipMetric metric = Rand<VoipMetric>(); 301 VoipMetric metric = Rand<VoipMetric>();
316 ExtendedReports xr; 302 ExtendedReports xr;
317 xr.From(kSenderSsrc); 303 xr.From(kSenderSsrc);
318 EXPECT_TRUE(xr.WithRrtr(rrtr)); 304 EXPECT_TRUE(xr.WithRrtr(rrtr));
319 EXPECT_TRUE(xr.WithDlrr(dlrr)); 305 EXPECT_TRUE(xr.WithDlrr(dlrr));
320 EXPECT_TRUE(xr.WithVoipMetric(metric)); 306 EXPECT_TRUE(xr.WithVoipMetric(metric));
321 307
322 rtc::Buffer packet = xr.Build(); 308 rtc::Buffer packet = xr.Build();
323 309
324 ExtendedReports mparsed; 310 ExtendedReports mparsed;
325 EXPECT_TRUE(Parse(packet, &mparsed)); 311 EXPECT_TRUE(test::ParseSinglePacket(packet, &mparsed));
326 const ExtendedReports& parsed = mparsed; 312 const ExtendedReports& parsed = mparsed;
327 313
328 EXPECT_THAT(parsed.rrtrs(), ElementsAre(rrtr)); 314 EXPECT_THAT(parsed.rrtrs(), ElementsAre(rrtr));
329 EXPECT_THAT(parsed.dlrrs(), IsEmpty()); 315 EXPECT_THAT(parsed.dlrrs(), IsEmpty());
330 EXPECT_THAT(parsed.voip_metrics(), ElementsAre(metric)); 316 EXPECT_THAT(parsed.voip_metrics(), ElementsAre(metric));
331 } 317 }
332 318
333 TEST_F(RtcpPacketExtendedReportsTest, WithTooManyBlocks) { 319 TEST_F(RtcpPacketExtendedReportsTest, WithTooManyBlocks) {
334 const size_t kMaxBlocks = 50; 320 const size_t kMaxBlocks = 50;
335 ExtendedReports xr; 321 ExtendedReports xr;
336 322
337 Rrtr rrtr = Rand<Rrtr>(); 323 Rrtr rrtr = Rand<Rrtr>();
338 for (size_t i = 0; i < kMaxBlocks; ++i) 324 for (size_t i = 0; i < kMaxBlocks; ++i)
339 EXPECT_TRUE(xr.WithRrtr(rrtr)); 325 EXPECT_TRUE(xr.WithRrtr(rrtr));
340 EXPECT_FALSE(xr.WithRrtr(rrtr)); 326 EXPECT_FALSE(xr.WithRrtr(rrtr));
341 327
342 Dlrr dlrr; 328 Dlrr dlrr;
343 for (size_t i = 0; i < kMaxBlocks; ++i) 329 for (size_t i = 0; i < kMaxBlocks; ++i)
344 EXPECT_TRUE(xr.WithDlrr(dlrr)); 330 EXPECT_TRUE(xr.WithDlrr(dlrr));
345 EXPECT_FALSE(xr.WithDlrr(dlrr)); 331 EXPECT_FALSE(xr.WithDlrr(dlrr));
346 332
347 VoipMetric voip_metric = Rand<VoipMetric>(); 333 VoipMetric voip_metric = Rand<VoipMetric>();
348 for (size_t i = 0; i < kMaxBlocks; ++i) 334 for (size_t i = 0; i < kMaxBlocks; ++i)
349 EXPECT_TRUE(xr.WithVoipMetric(voip_metric)); 335 EXPECT_TRUE(xr.WithVoipMetric(voip_metric));
350 EXPECT_FALSE(xr.WithVoipMetric(voip_metric)); 336 EXPECT_FALSE(xr.WithVoipMetric(voip_metric));
351 } 337 }
352 } // namespace webrtc 338 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698