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

Side by Side Diff: webrtc/api/rtcstats_integrationtest.cc

Issue 2593623002: Improve rtcstats_integrationtest.cc by sanity checking values. (Closed)
Patch Set: Rebase with master Created 3 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
« no previous file with comments | « no previous file | 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 2016 The WebRTC project authors. All Rights Reserved. 2 * Copyright 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
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 } 114 }
115 115
116 void MarkMemberTested( 116 void MarkMemberTested(
117 const RTCStatsMemberInterface& member, bool test_successful) { 117 const RTCStatsMemberInterface& member, bool test_successful) {
118 untested_members_.erase(&member); 118 untested_members_.erase(&member);
119 all_tests_successful_ &= test_successful; 119 all_tests_successful_ &= test_successful;
120 } 120 }
121 121
122 void TestMemberIsDefined(const RTCStatsMemberInterface& member) { 122 void TestMemberIsDefined(const RTCStatsMemberInterface& member) {
123 EXPECT_TRUE(member.is_defined()) << 123 EXPECT_TRUE(member.is_defined()) <<
124 stats_->type() << "." << member.name() << "[" << stats_->id() << 124 stats_->type() << "." << member.name() << "[" << stats_->id() <<
125 "] was undefined."; 125 "] was undefined.";
126 MarkMemberTested(member, member.is_defined()); 126 MarkMemberTested(member, member.is_defined());
127 } 127 }
128 128
129 void TestMemberIsUndefined(const RTCStatsMemberInterface& member) { 129 void TestMemberIsUndefined(const RTCStatsMemberInterface& member) {
130 EXPECT_FALSE(member.is_defined()) << 130 EXPECT_FALSE(member.is_defined()) <<
131 stats_->type() << "." << member.name() << "[" << stats_->id() << 131 stats_->type() << "." << member.name() << "[" << stats_->id() <<
132 "] was defined (" << member.ValueToString() << ")."; 132 "] was defined (" << member.ValueToString() << ").";
133 MarkMemberTested(member, !member.is_defined()); 133 MarkMemberTested(member, !member.is_defined());
134 } 134 }
135 135
136 template<typename T>
137 void TestMemberIsPositive(const RTCStatsMemberInterface& member) {
138 EXPECT_TRUE(member.is_defined()) <<
139 stats_->type() << "." << member.name() << "[" << stats_->id() <<
140 "] was undefined.";
141 if (!member.is_defined()) {
142 MarkMemberTested(member, false);
143 return;
144 }
145 bool is_positive = *member.cast_to<RTCStatsMember<T>>() > T(0);
146 EXPECT_TRUE(is_positive) <<
147 stats_->type() << "." << member.name() << "[" << stats_->id() <<
148 "] was not positive (" << member.ValueToString() << ").";
149 MarkMemberTested(member, is_positive);
150 }
151
152 template<typename T>
153 void TestMemberIsNonNegative(const RTCStatsMemberInterface& member) {
154 EXPECT_TRUE(member.is_defined()) <<
155 stats_->type() << "." << member.name() << "[" << stats_->id() <<
156 "] was undefined.";
157 if (!member.is_defined()) {
158 MarkMemberTested(member, false);
159 return;
160 }
161 bool is_non_negative = *member.cast_to<RTCStatsMember<T>>() >= T(0);
162 EXPECT_TRUE(is_non_negative) <<
163 stats_->type() << "." << member.name() << "[" << stats_->id() <<
164 "] was not non-negative (" << member.ValueToString() << ").";
165 MarkMemberTested(member, is_non_negative);
166 }
167
136 void TestMemberIsIDReference( 168 void TestMemberIsIDReference(
137 const RTCStatsMemberInterface& member, 169 const RTCStatsMemberInterface& member,
138 const char* expected_type) { 170 const char* expected_type) {
139 TestMemberIsIDReference(member, expected_type, false); 171 TestMemberIsIDReference(member, expected_type, false);
140 } 172 }
141 173
142 void TestMemberIsOptionalIDReference( 174 void TestMemberIsOptionalIDReference(
143 const RTCStatsMemberInterface& member, 175 const RTCStatsMemberInterface& member,
144 const char* expected_type) { 176 const char* expected_type) {
145 TestMemberIsIDReference(member, expected_type, true); 177 TestMemberIsIDReference(member, expected_type, true);
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 verifier.TestMemberIsOptionalIDReference( 322 verifier.TestMemberIsOptionalIDReference(
291 certificate.issuer_certificate_id, RTCCertificateStats::kType); 323 certificate.issuer_certificate_id, RTCCertificateStats::kType);
292 return verifier.ExpectAllMembersSuccessfullyTested(); 324 return verifier.ExpectAllMembersSuccessfullyTested();
293 } 325 }
294 326
295 bool VerifyRTCCodecStats( 327 bool VerifyRTCCodecStats(
296 const RTCCodecStats& codec) { 328 const RTCCodecStats& codec) {
297 RTCStatsVerifier verifier(report_, &codec); 329 RTCStatsVerifier verifier(report_, &codec);
298 verifier.TestMemberIsDefined(codec.payload_type); 330 verifier.TestMemberIsDefined(codec.payload_type);
299 verifier.TestMemberIsDefined(codec.codec); 331 verifier.TestMemberIsDefined(codec.codec);
300 verifier.TestMemberIsDefined(codec.clock_rate); 332 verifier.TestMemberIsPositive<uint32_t>(codec.clock_rate);
301 verifier.TestMemberIsUndefined(codec.channels); 333 verifier.TestMemberIsUndefined(codec.channels);
302 verifier.TestMemberIsUndefined(codec.parameters); 334 verifier.TestMemberIsUndefined(codec.parameters);
303 verifier.TestMemberIsUndefined(codec.implementation); 335 verifier.TestMemberIsUndefined(codec.implementation);
304 return verifier.ExpectAllMembersSuccessfullyTested(); 336 return verifier.ExpectAllMembersSuccessfullyTested();
305 } 337 }
306 338
307 bool VerifyRTCDataChannelStats( 339 bool VerifyRTCDataChannelStats(
308 const RTCDataChannelStats& data_channel) { 340 const RTCDataChannelStats& data_channel) {
309 RTCStatsVerifier verifier(report_, &data_channel); 341 RTCStatsVerifier verifier(report_, &data_channel);
310 verifier.TestMemberIsDefined(data_channel.label); 342 verifier.TestMemberIsDefined(data_channel.label);
311 verifier.TestMemberIsDefined(data_channel.protocol); 343 verifier.TestMemberIsDefined(data_channel.protocol);
312 verifier.TestMemberIsDefined(data_channel.datachannelid); 344 verifier.TestMemberIsDefined(data_channel.datachannelid);
313 verifier.TestMemberIsDefined(data_channel.state); 345 verifier.TestMemberIsDefined(data_channel.state);
314 verifier.TestMemberIsDefined(data_channel.messages_sent); 346 verifier.TestMemberIsNonNegative<uint32_t>(data_channel.messages_sent);
315 verifier.TestMemberIsDefined(data_channel.bytes_sent); 347 verifier.TestMemberIsNonNegative<uint64_t>(data_channel.bytes_sent);
316 verifier.TestMemberIsDefined(data_channel.messages_received); 348 verifier.TestMemberIsNonNegative<uint32_t>(data_channel.messages_received);
317 verifier.TestMemberIsDefined(data_channel.bytes_received); 349 verifier.TestMemberIsNonNegative<uint64_t>(data_channel.bytes_received);
318 return verifier.ExpectAllMembersSuccessfullyTested(); 350 return verifier.ExpectAllMembersSuccessfullyTested();
319 } 351 }
320 352
321 bool VerifyRTCIceCandidatePairStats( 353 bool VerifyRTCIceCandidatePairStats(
322 const RTCIceCandidatePairStats& candidate_pair) { 354 const RTCIceCandidatePairStats& candidate_pair) {
323 RTCStatsVerifier verifier(report_, &candidate_pair); 355 RTCStatsVerifier verifier(report_, &candidate_pair);
324 verifier.TestMemberIsIDReference( 356 verifier.TestMemberIsIDReference(
325 candidate_pair.transport_id, RTCTransportStats::kType); 357 candidate_pair.transport_id, RTCTransportStats::kType);
326 verifier.TestMemberIsIDReference( 358 verifier.TestMemberIsIDReference(
327 candidate_pair.local_candidate_id, RTCLocalIceCandidateStats::kType); 359 candidate_pair.local_candidate_id, RTCLocalIceCandidateStats::kType);
328 verifier.TestMemberIsIDReference( 360 verifier.TestMemberIsIDReference(
329 candidate_pair.remote_candidate_id, RTCRemoteIceCandidateStats::kType); 361 candidate_pair.remote_candidate_id, RTCRemoteIceCandidateStats::kType);
330 verifier.TestMemberIsUndefined(candidate_pair.state); 362 verifier.TestMemberIsUndefined(candidate_pair.state);
331 verifier.TestMemberIsUndefined(candidate_pair.priority); 363 verifier.TestMemberIsUndefined(candidate_pair.priority);
332 verifier.TestMemberIsUndefined(candidate_pair.nominated); 364 verifier.TestMemberIsUndefined(candidate_pair.nominated);
333 verifier.TestMemberIsDefined(candidate_pair.writable); 365 verifier.TestMemberIsDefined(candidate_pair.writable);
334 verifier.TestMemberIsUndefined(candidate_pair.readable); 366 verifier.TestMemberIsUndefined(candidate_pair.readable);
335 verifier.TestMemberIsDefined(candidate_pair.bytes_sent); 367 verifier.TestMemberIsNonNegative<uint64_t>(candidate_pair.bytes_sent);
336 verifier.TestMemberIsDefined(candidate_pair.bytes_received); 368 verifier.TestMemberIsNonNegative<uint64_t>(candidate_pair.bytes_received);
337 verifier.TestMemberIsUndefined(candidate_pair.total_round_trip_time); 369 verifier.TestMemberIsUndefined(candidate_pair.total_round_trip_time);
338 verifier.TestMemberIsDefined(candidate_pair.current_round_trip_time); 370 verifier.TestMemberIsNonNegative<double>(
371 candidate_pair.current_round_trip_time);
339 verifier.TestMemberIsUndefined(candidate_pair.available_outgoing_bitrate); 372 verifier.TestMemberIsUndefined(candidate_pair.available_outgoing_bitrate);
340 verifier.TestMemberIsUndefined(candidate_pair.available_incoming_bitrate); 373 verifier.TestMemberIsUndefined(candidate_pair.available_incoming_bitrate);
341 verifier.TestMemberIsDefined(candidate_pair.requests_received); 374 verifier.TestMemberIsNonNegative<uint64_t>(
342 verifier.TestMemberIsDefined(candidate_pair.requests_sent); 375 candidate_pair.requests_received);
343 verifier.TestMemberIsDefined(candidate_pair.responses_received); 376 verifier.TestMemberIsNonNegative<uint64_t>(candidate_pair.requests_sent);
344 verifier.TestMemberIsDefined(candidate_pair.responses_sent); 377 verifier.TestMemberIsNonNegative<uint64_t>(
378 candidate_pair.responses_received);
379 verifier.TestMemberIsNonNegative<uint64_t>(candidate_pair.responses_sent);
345 verifier.TestMemberIsUndefined(candidate_pair.retransmissions_received); 380 verifier.TestMemberIsUndefined(candidate_pair.retransmissions_received);
346 verifier.TestMemberIsUndefined(candidate_pair.retransmissions_sent); 381 verifier.TestMemberIsUndefined(candidate_pair.retransmissions_sent);
347 verifier.TestMemberIsUndefined(candidate_pair.consent_requests_received); 382 verifier.TestMemberIsUndefined(candidate_pair.consent_requests_received);
348 verifier.TestMemberIsDefined(candidate_pair.consent_requests_sent); 383 verifier.TestMemberIsNonNegative<uint64_t>(
384 candidate_pair.consent_requests_sent);
349 verifier.TestMemberIsUndefined(candidate_pair.consent_responses_received); 385 verifier.TestMemberIsUndefined(candidate_pair.consent_responses_received);
350 verifier.TestMemberIsUndefined(candidate_pair.consent_responses_sent); 386 verifier.TestMemberIsUndefined(candidate_pair.consent_responses_sent);
351 return verifier.ExpectAllMembersSuccessfullyTested(); 387 return verifier.ExpectAllMembersSuccessfullyTested();
352 } 388 }
353 389
354 bool VerifyRTCIceCandidateStats( 390 bool VerifyRTCIceCandidateStats(
355 const RTCIceCandidateStats& candidate) { 391 const RTCIceCandidateStats& candidate) {
356 RTCStatsVerifier verifier(report_, &candidate); 392 RTCStatsVerifier verifier(report_, &candidate);
357 verifier.TestMemberIsDefined(candidate.is_remote); 393 verifier.TestMemberIsDefined(candidate.is_remote);
358 verifier.TestMemberIsDefined(candidate.ip); 394 verifier.TestMemberIsDefined(candidate.ip);
359 verifier.TestMemberIsDefined(candidate.port); 395 verifier.TestMemberIsNonNegative<int32_t>(candidate.port);
360 verifier.TestMemberIsDefined(candidate.protocol); 396 verifier.TestMemberIsDefined(candidate.protocol);
361 verifier.TestMemberIsDefined(candidate.candidate_type); 397 verifier.TestMemberIsDefined(candidate.candidate_type);
362 verifier.TestMemberIsDefined(candidate.priority); 398 verifier.TestMemberIsNonNegative<int32_t>(candidate.priority);
363 verifier.TestMemberIsUndefined(candidate.url); 399 verifier.TestMemberIsUndefined(candidate.url);
364 return verifier.ExpectAllMembersSuccessfullyTested(); 400 return verifier.ExpectAllMembersSuccessfullyTested();
365 } 401 }
366 402
367 bool VerifyRTCLocalIceCandidateStats( 403 bool VerifyRTCLocalIceCandidateStats(
368 const RTCLocalIceCandidateStats& local_candidate) { 404 const RTCLocalIceCandidateStats& local_candidate) {
369 return VerifyRTCIceCandidateStats(local_candidate); 405 return VerifyRTCIceCandidateStats(local_candidate);
370 } 406 }
371 407
372 bool VerifyRTCRemoteIceCandidateStats( 408 bool VerifyRTCRemoteIceCandidateStats(
(...skipping 14 matching lines...) Expand all
387 const RTCMediaStreamTrackStats& media_stream_track) { 423 const RTCMediaStreamTrackStats& media_stream_track) {
388 RTCStatsVerifier verifier(report_, &media_stream_track); 424 RTCStatsVerifier verifier(report_, &media_stream_track);
389 verifier.TestMemberIsDefined(media_stream_track.track_identifier); 425 verifier.TestMemberIsDefined(media_stream_track.track_identifier);
390 verifier.TestMemberIsDefined(media_stream_track.remote_source); 426 verifier.TestMemberIsDefined(media_stream_track.remote_source);
391 verifier.TestMemberIsDefined(media_stream_track.ended); 427 verifier.TestMemberIsDefined(media_stream_track.ended);
392 verifier.TestMemberIsDefined(media_stream_track.detached); 428 verifier.TestMemberIsDefined(media_stream_track.detached);
393 verifier.TestMemberIsUndefined(media_stream_track.ssrc_ids); 429 verifier.TestMemberIsUndefined(media_stream_track.ssrc_ids);
394 // Video or audio media stream track? 430 // Video or audio media stream track?
395 if (media_stream_track.frame_width.is_defined()) { 431 if (media_stream_track.frame_width.is_defined()) {
396 // Video-only members 432 // Video-only members
397 verifier.TestMemberIsDefined(media_stream_track.frame_width); 433 verifier.TestMemberIsNonNegative<uint32_t>(
398 verifier.TestMemberIsDefined(media_stream_track.frame_height); 434 media_stream_track.frame_width);
435 verifier.TestMemberIsNonNegative<uint32_t>(
436 media_stream_track.frame_height);
399 verifier.TestMemberIsUndefined(media_stream_track.frames_per_second); 437 verifier.TestMemberIsUndefined(media_stream_track.frames_per_second);
400 verifier.TestMemberIsUndefined(media_stream_track.frames_sent); 438 verifier.TestMemberIsUndefined(media_stream_track.frames_sent);
401 verifier.TestMemberIsUndefined(media_stream_track.frames_received); 439 verifier.TestMemberIsUndefined(media_stream_track.frames_received);
402 verifier.TestMemberIsUndefined(media_stream_track.frames_decoded); 440 verifier.TestMemberIsUndefined(media_stream_track.frames_decoded);
403 verifier.TestMemberIsUndefined(media_stream_track.frames_dropped); 441 verifier.TestMemberIsUndefined(media_stream_track.frames_dropped);
404 verifier.TestMemberIsUndefined(media_stream_track.frames_corrupted); 442 verifier.TestMemberIsUndefined(media_stream_track.frames_corrupted);
405 verifier.TestMemberIsUndefined(media_stream_track.partial_frames_lost); 443 verifier.TestMemberIsUndefined(media_stream_track.partial_frames_lost);
406 verifier.TestMemberIsUndefined(media_stream_track.full_frames_lost); 444 verifier.TestMemberIsUndefined(media_stream_track.full_frames_lost);
407 // Audio-only members should be undefined 445 // Audio-only members should be undefined
408 verifier.TestMemberIsUndefined(media_stream_track.audio_level); 446 verifier.TestMemberIsUndefined(media_stream_track.audio_level);
(...skipping 21 matching lines...) Expand all
430 verifier.MarkMemberTested(media_stream_track.echo_return_loss, true); 468 verifier.MarkMemberTested(media_stream_track.echo_return_loss, true);
431 verifier.MarkMemberTested( 469 verifier.MarkMemberTested(
432 media_stream_track.echo_return_loss_enhancement, true); 470 media_stream_track.echo_return_loss_enhancement, true);
433 } 471 }
434 return verifier.ExpectAllMembersSuccessfullyTested(); 472 return verifier.ExpectAllMembersSuccessfullyTested();
435 } 473 }
436 474
437 bool VerifyRTCPeerConnectionStats( 475 bool VerifyRTCPeerConnectionStats(
438 const RTCPeerConnectionStats& peer_connection) { 476 const RTCPeerConnectionStats& peer_connection) {
439 RTCStatsVerifier verifier(report_, &peer_connection); 477 RTCStatsVerifier verifier(report_, &peer_connection);
440 verifier.TestMemberIsDefined(peer_connection.data_channels_opened); 478 verifier.TestMemberIsNonNegative<uint32_t>(
441 verifier.TestMemberIsDefined(peer_connection.data_channels_closed); 479 peer_connection.data_channels_opened);
480 verifier.TestMemberIsNonNegative<uint32_t>(
481 peer_connection.data_channels_closed);
442 return verifier.ExpectAllMembersSuccessfullyTested(); 482 return verifier.ExpectAllMembersSuccessfullyTested();
443 } 483 }
444 484
445 void VerifyRTCRTPStreamStats( 485 void VerifyRTCRTPStreamStats(
446 const RTCRTPStreamStats& stream, RTCStatsVerifier* verifier) { 486 const RTCRTPStreamStats& stream, RTCStatsVerifier* verifier) {
447 verifier->TestMemberIsDefined(stream.ssrc); 487 verifier->TestMemberIsDefined(stream.ssrc);
448 verifier->TestMemberIsUndefined(stream.associate_stats_id); 488 verifier->TestMemberIsUndefined(stream.associate_stats_id);
449 verifier->TestMemberIsDefined(stream.is_remote); 489 verifier->TestMemberIsDefined(stream.is_remote);
450 verifier->TestMemberIsDefined(stream.media_type); 490 verifier->TestMemberIsDefined(stream.media_type);
451 verifier->TestMemberIsUndefined(stream.media_track_id); 491 verifier->TestMemberIsUndefined(stream.media_track_id);
452 verifier->TestMemberIsIDReference( 492 verifier->TestMemberIsIDReference(
453 stream.transport_id, RTCTransportStats::kType); 493 stream.transport_id, RTCTransportStats::kType);
454 verifier->TestMemberIsIDReference(stream.codec_id, RTCCodecStats::kType); 494 verifier->TestMemberIsIDReference(stream.codec_id, RTCCodecStats::kType);
455 if (stream.media_type.is_defined() && *stream.media_type == "video") { 495 if (stream.media_type.is_defined() && *stream.media_type == "video") {
456 verifier->TestMemberIsDefined(stream.fir_count); 496 verifier->TestMemberIsNonNegative<uint32_t>(stream.fir_count);
457 verifier->TestMemberIsDefined(stream.pli_count); 497 verifier->TestMemberIsNonNegative<uint32_t>(stream.pli_count);
458 verifier->TestMemberIsDefined(stream.nack_count); 498 verifier->TestMemberIsNonNegative<uint32_t>(stream.nack_count);
459 } else { 499 } else {
460 verifier->TestMemberIsUndefined(stream.fir_count); 500 verifier->TestMemberIsUndefined(stream.fir_count);
461 verifier->TestMemberIsUndefined(stream.pli_count); 501 verifier->TestMemberIsUndefined(stream.pli_count);
462 verifier->TestMemberIsUndefined(stream.nack_count); 502 verifier->TestMemberIsUndefined(stream.nack_count);
463 } 503 }
464 verifier->TestMemberIsUndefined(stream.sli_count); 504 verifier->TestMemberIsUndefined(stream.sli_count);
465 } 505 }
466 506
467 bool VerifyRTCInboundRTPStreamStats( 507 bool VerifyRTCInboundRTPStreamStats(
468 const RTCInboundRTPStreamStats& inbound_stream) { 508 const RTCInboundRTPStreamStats& inbound_stream) {
469 RTCStatsVerifier verifier(report_, &inbound_stream); 509 RTCStatsVerifier verifier(report_, &inbound_stream);
470 VerifyRTCRTPStreamStats(inbound_stream, &verifier); 510 VerifyRTCRTPStreamStats(inbound_stream, &verifier);
471 verifier.TestMemberIsDefined(inbound_stream.packets_received); 511 verifier.TestMemberIsNonNegative<uint32_t>(inbound_stream.packets_received);
472 verifier.TestMemberIsDefined(inbound_stream.bytes_received); 512 verifier.TestMemberIsNonNegative<uint64_t>(inbound_stream.bytes_received);
473 verifier.TestMemberIsDefined(inbound_stream.packets_lost); 513 verifier.TestMemberIsNonNegative<uint32_t>(inbound_stream.packets_lost);
474 if (inbound_stream.media_type.is_defined() && 514 if (inbound_stream.media_type.is_defined() &&
475 *inbound_stream.media_type == "video") { 515 *inbound_stream.media_type == "video") {
476 verifier.TestMemberIsUndefined(inbound_stream.jitter); 516 verifier.TestMemberIsUndefined(inbound_stream.jitter);
477 } else { 517 } else {
478 verifier.TestMemberIsDefined(inbound_stream.jitter); 518 verifier.TestMemberIsNonNegative<double>(inbound_stream.jitter);
479 } 519 }
480 verifier.TestMemberIsDefined(inbound_stream.fraction_lost); 520 verifier.TestMemberIsNonNegative<double>(inbound_stream.fraction_lost);
481 verifier.TestMemberIsUndefined(inbound_stream.packets_discarded); 521 verifier.TestMemberIsUndefined(inbound_stream.packets_discarded);
482 verifier.TestMemberIsUndefined(inbound_stream.packets_repaired); 522 verifier.TestMemberIsUndefined(inbound_stream.packets_repaired);
483 verifier.TestMemberIsUndefined(inbound_stream.burst_packets_lost); 523 verifier.TestMemberIsUndefined(inbound_stream.burst_packets_lost);
484 verifier.TestMemberIsUndefined(inbound_stream.burst_packets_discarded); 524 verifier.TestMemberIsUndefined(inbound_stream.burst_packets_discarded);
485 verifier.TestMemberIsUndefined(inbound_stream.burst_loss_count); 525 verifier.TestMemberIsUndefined(inbound_stream.burst_loss_count);
486 verifier.TestMemberIsUndefined(inbound_stream.burst_discard_count); 526 verifier.TestMemberIsUndefined(inbound_stream.burst_discard_count);
487 verifier.TestMemberIsUndefined(inbound_stream.burst_loss_rate); 527 verifier.TestMemberIsUndefined(inbound_stream.burst_loss_rate);
488 verifier.TestMemberIsUndefined(inbound_stream.burst_discard_rate); 528 verifier.TestMemberIsUndefined(inbound_stream.burst_discard_rate);
489 verifier.TestMemberIsUndefined(inbound_stream.gap_loss_rate); 529 verifier.TestMemberIsUndefined(inbound_stream.gap_loss_rate);
490 verifier.TestMemberIsUndefined(inbound_stream.gap_discard_rate); 530 verifier.TestMemberIsUndefined(inbound_stream.gap_discard_rate);
491 return verifier.ExpectAllMembersSuccessfullyTested(); 531 return verifier.ExpectAllMembersSuccessfullyTested();
492 } 532 }
493 533
494 bool VerifyRTCOutboundRTPStreamStats( 534 bool VerifyRTCOutboundRTPStreamStats(
495 const RTCOutboundRTPStreamStats& outbound_stream) { 535 const RTCOutboundRTPStreamStats& outbound_stream) {
496 RTCStatsVerifier verifier(report_, &outbound_stream); 536 RTCStatsVerifier verifier(report_, &outbound_stream);
497 VerifyRTCRTPStreamStats(outbound_stream, &verifier); 537 VerifyRTCRTPStreamStats(outbound_stream, &verifier);
498 verifier.TestMemberIsDefined(outbound_stream.packets_sent); 538 verifier.TestMemberIsNonNegative<uint32_t>(outbound_stream.packets_sent);
499 verifier.TestMemberIsDefined(outbound_stream.bytes_sent); 539 verifier.TestMemberIsNonNegative<uint64_t>(outbound_stream.bytes_sent);
500 verifier.TestMemberIsUndefined(outbound_stream.target_bitrate); 540 verifier.TestMemberIsUndefined(outbound_stream.target_bitrate);
501 // TODO(hbos): Defined in video but not audio case. Why? crbug.com/669877 541 // TODO(hbos): Defined in video but not audio case. Why? crbug.com/669877
502 verifier.MarkMemberTested(outbound_stream.round_trip_time, true); 542 verifier.MarkMemberTested(outbound_stream.round_trip_time, true);
503 return verifier.ExpectAllMembersSuccessfullyTested(); 543 return verifier.ExpectAllMembersSuccessfullyTested();
504 } 544 }
505 545
506 bool VerifyRTCTransportStats( 546 bool VerifyRTCTransportStats(
507 const RTCTransportStats& transport) { 547 const RTCTransportStats& transport) {
508 RTCStatsVerifier verifier(report_, &transport); 548 RTCStatsVerifier verifier(report_, &transport);
509 verifier.TestMemberIsDefined(transport.bytes_sent); 549 verifier.TestMemberIsNonNegative<uint64_t>(transport.bytes_sent);
510 verifier.TestMemberIsDefined(transport.bytes_received); 550 verifier.TestMemberIsNonNegative<uint64_t>(transport.bytes_received);
511 verifier.TestMemberIsOptionalIDReference( 551 verifier.TestMemberIsOptionalIDReference(
512 transport.rtcp_transport_stats_id, RTCTransportStats::kType); 552 transport.rtcp_transport_stats_id, RTCTransportStats::kType);
513 verifier.TestMemberIsDefined(transport.active_connection); 553 verifier.TestMemberIsDefined(transport.active_connection);
514 verifier.TestMemberIsIDReference( 554 verifier.TestMemberIsIDReference(
515 transport.selected_candidate_pair_id, RTCIceCandidatePairStats::kType); 555 transport.selected_candidate_pair_id, RTCIceCandidatePairStats::kType);
516 verifier.TestMemberIsIDReference( 556 verifier.TestMemberIsIDReference(
517 transport.local_certificate_id, RTCCertificateStats::kType); 557 transport.local_certificate_id, RTCCertificateStats::kType);
518 verifier.TestMemberIsIDReference( 558 verifier.TestMemberIsIDReference(
519 transport.remote_certificate_id, RTCCertificateStats::kType); 559 transport.remote_certificate_id, RTCCertificateStats::kType);
520 return verifier.ExpectAllMembersSuccessfullyTested(); 560 return verifier.ExpectAllMembersSuccessfullyTested();
(...skipping 28 matching lines...) Expand all
549 caller_ = nullptr; 589 caller_ = nullptr;
550 // Any pending stats requests should have completed in the act of destroying 590 // Any pending stats requests should have completed in the act of destroying
551 // the peer connection. 591 // the peer connection.
552 EXPECT_TRUE(stats_obtainer->report()); 592 EXPECT_TRUE(stats_obtainer->report());
553 } 593 }
554 #endif // HAVE_SCTP 594 #endif // HAVE_SCTP
555 595
556 } // namespace 596 } // namespace
557 597
558 } // namespace webrtc 598 } // namespace webrtc
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698