| OLD | NEW |
| 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 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 return stats_types; | 252 return stats_types; |
| 253 } | 253 } |
| 254 | 254 |
| 255 explicit RTCStatsReportVerifier(const RTCStatsReport* report) | 255 explicit RTCStatsReportVerifier(const RTCStatsReport* report) |
| 256 : report_(report) { | 256 : report_(report) { |
| 257 } | 257 } |
| 258 | 258 |
| 259 void VerifyReport() { | 259 void VerifyReport() { |
| 260 std::set<const char*> missing_stats = StatsTypes(); | 260 std::set<const char*> missing_stats = StatsTypes(); |
| 261 bool verify_successful = true; | 261 bool verify_successful = true; |
| 262 std::vector<const RTCTransportStats*> transport_stats = |
| 263 report_->GetStatsOfType<RTCTransportStats>(); |
| 264 EXPECT_EQ(transport_stats.size(), 1); |
| 265 std::string selected_candidate_pair_id = |
| 266 *transport_stats[0]->selected_candidate_pair_id; |
| 262 for (const RTCStats& stats : *report_) { | 267 for (const RTCStats& stats : *report_) { |
| 263 missing_stats.erase(stats.type()); | 268 missing_stats.erase(stats.type()); |
| 264 if (stats.type() == RTCCertificateStats::kType) { | 269 if (stats.type() == RTCCertificateStats::kType) { |
| 265 verify_successful &= VerifyRTCCertificateStats( | 270 verify_successful &= VerifyRTCCertificateStats( |
| 266 stats.cast_to<RTCCertificateStats>()); | 271 stats.cast_to<RTCCertificateStats>()); |
| 267 } else if (stats.type() == RTCCodecStats::kType) { | 272 } else if (stats.type() == RTCCodecStats::kType) { |
| 268 verify_successful &= VerifyRTCCodecStats( | 273 verify_successful &= VerifyRTCCodecStats( |
| 269 stats.cast_to<RTCCodecStats>()); | 274 stats.cast_to<RTCCodecStats>()); |
| 270 } else if (stats.type() == RTCDataChannelStats::kType) { | 275 } else if (stats.type() == RTCDataChannelStats::kType) { |
| 271 verify_successful &= VerifyRTCDataChannelStats( | 276 verify_successful &= VerifyRTCDataChannelStats( |
| 272 stats.cast_to<RTCDataChannelStats>()); | 277 stats.cast_to<RTCDataChannelStats>()); |
| 273 } else if (stats.type() == RTCIceCandidatePairStats::kType) { | 278 } else if (stats.type() == RTCIceCandidatePairStats::kType) { |
| 274 verify_successful &= VerifyRTCIceCandidatePairStats( | 279 verify_successful &= VerifyRTCIceCandidatePairStats( |
| 275 stats.cast_to<RTCIceCandidatePairStats>()); | 280 stats.cast_to<RTCIceCandidatePairStats>(), |
| 281 stats.id() == selected_candidate_pair_id); |
| 276 } else if (stats.type() == RTCLocalIceCandidateStats::kType) { | 282 } else if (stats.type() == RTCLocalIceCandidateStats::kType) { |
| 277 verify_successful &= VerifyRTCLocalIceCandidateStats( | 283 verify_successful &= VerifyRTCLocalIceCandidateStats( |
| 278 stats.cast_to<RTCLocalIceCandidateStats>()); | 284 stats.cast_to<RTCLocalIceCandidateStats>()); |
| 279 } else if (stats.type() == RTCRemoteIceCandidateStats::kType) { | 285 } else if (stats.type() == RTCRemoteIceCandidateStats::kType) { |
| 280 verify_successful &= VerifyRTCRemoteIceCandidateStats( | 286 verify_successful &= VerifyRTCRemoteIceCandidateStats( |
| 281 stats.cast_to<RTCRemoteIceCandidateStats>()); | 287 stats.cast_to<RTCRemoteIceCandidateStats>()); |
| 282 } else if (stats.type() == RTCMediaStreamStats::kType) { | 288 } else if (stats.type() == RTCMediaStreamStats::kType) { |
| 283 verify_successful &= VerifyRTCMediaStreamStats( | 289 verify_successful &= VerifyRTCMediaStreamStats( |
| 284 stats.cast_to<RTCMediaStreamStats>()); | 290 stats.cast_to<RTCMediaStreamStats>()); |
| 285 } else if (stats.type() == RTCMediaStreamTrackStats::kType) { | 291 } else if (stats.type() == RTCMediaStreamTrackStats::kType) { |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 verifier.TestMemberIsDefined(data_channel.datachannelid); | 350 verifier.TestMemberIsDefined(data_channel.datachannelid); |
| 345 verifier.TestMemberIsDefined(data_channel.state); | 351 verifier.TestMemberIsDefined(data_channel.state); |
| 346 verifier.TestMemberIsNonNegative<uint32_t>(data_channel.messages_sent); | 352 verifier.TestMemberIsNonNegative<uint32_t>(data_channel.messages_sent); |
| 347 verifier.TestMemberIsNonNegative<uint64_t>(data_channel.bytes_sent); | 353 verifier.TestMemberIsNonNegative<uint64_t>(data_channel.bytes_sent); |
| 348 verifier.TestMemberIsNonNegative<uint32_t>(data_channel.messages_received); | 354 verifier.TestMemberIsNonNegative<uint32_t>(data_channel.messages_received); |
| 349 verifier.TestMemberIsNonNegative<uint64_t>(data_channel.bytes_received); | 355 verifier.TestMemberIsNonNegative<uint64_t>(data_channel.bytes_received); |
| 350 return verifier.ExpectAllMembersSuccessfullyTested(); | 356 return verifier.ExpectAllMembersSuccessfullyTested(); |
| 351 } | 357 } |
| 352 | 358 |
| 353 bool VerifyRTCIceCandidatePairStats( | 359 bool VerifyRTCIceCandidatePairStats( |
| 354 const RTCIceCandidatePairStats& candidate_pair) { | 360 const RTCIceCandidatePairStats& candidate_pair, bool is_selected_pair) { |
| 355 RTCStatsVerifier verifier(report_, &candidate_pair); | 361 RTCStatsVerifier verifier(report_, &candidate_pair); |
| 356 verifier.TestMemberIsIDReference( | 362 verifier.TestMemberIsIDReference( |
| 357 candidate_pair.transport_id, RTCTransportStats::kType); | 363 candidate_pair.transport_id, RTCTransportStats::kType); |
| 358 verifier.TestMemberIsIDReference( | 364 verifier.TestMemberIsIDReference( |
| 359 candidate_pair.local_candidate_id, RTCLocalIceCandidateStats::kType); | 365 candidate_pair.local_candidate_id, RTCLocalIceCandidateStats::kType); |
| 360 verifier.TestMemberIsIDReference( | 366 verifier.TestMemberIsIDReference( |
| 361 candidate_pair.remote_candidate_id, RTCRemoteIceCandidateStats::kType); | 367 candidate_pair.remote_candidate_id, RTCRemoteIceCandidateStats::kType); |
| 362 verifier.TestMemberIsDefined(candidate_pair.state); | 368 verifier.TestMemberIsDefined(candidate_pair.state); |
| 363 verifier.TestMemberIsNonNegative<uint64_t>(candidate_pair.priority); | 369 verifier.TestMemberIsNonNegative<uint64_t>(candidate_pair.priority); |
| 364 verifier.TestMemberIsUndefined(candidate_pair.nominated); | 370 verifier.TestMemberIsUndefined(candidate_pair.nominated); |
| 365 verifier.TestMemberIsDefined(candidate_pair.writable); | 371 verifier.TestMemberIsDefined(candidate_pair.writable); |
| 366 verifier.TestMemberIsUndefined(candidate_pair.readable); | 372 verifier.TestMemberIsUndefined(candidate_pair.readable); |
| 367 verifier.TestMemberIsNonNegative<uint64_t>(candidate_pair.bytes_sent); | 373 verifier.TestMemberIsNonNegative<uint64_t>(candidate_pair.bytes_sent); |
| 368 verifier.TestMemberIsNonNegative<uint64_t>(candidate_pair.bytes_received); | 374 verifier.TestMemberIsNonNegative<uint64_t>(candidate_pair.bytes_received); |
| 369 verifier.TestMemberIsUndefined(candidate_pair.total_round_trip_time); | 375 verifier.TestMemberIsUndefined(candidate_pair.total_round_trip_time); |
| 370 verifier.TestMemberIsNonNegative<double>( | 376 verifier.TestMemberIsNonNegative<double>( |
| 371 candidate_pair.current_round_trip_time); | 377 candidate_pair.current_round_trip_time); |
| 372 verifier.TestMemberIsUndefined(candidate_pair.available_outgoing_bitrate); | 378 if (is_selected_pair) { |
| 379 verifier.TestMemberIsNonNegative<double>( |
| 380 candidate_pair.available_outgoing_bitrate); |
| 381 } else { |
| 382 verifier.TestMemberIsUndefined(candidate_pair.available_outgoing_bitrate); |
| 383 } |
| 373 verifier.TestMemberIsUndefined(candidate_pair.available_incoming_bitrate); | 384 verifier.TestMemberIsUndefined(candidate_pair.available_incoming_bitrate); |
| 374 verifier.TestMemberIsNonNegative<uint64_t>( | 385 verifier.TestMemberIsNonNegative<uint64_t>( |
| 375 candidate_pair.requests_received); | 386 candidate_pair.requests_received); |
| 376 verifier.TestMemberIsNonNegative<uint64_t>(candidate_pair.requests_sent); | 387 verifier.TestMemberIsNonNegative<uint64_t>(candidate_pair.requests_sent); |
| 377 verifier.TestMemberIsNonNegative<uint64_t>( | 388 verifier.TestMemberIsNonNegative<uint64_t>( |
| 378 candidate_pair.responses_received); | 389 candidate_pair.responses_received); |
| 379 verifier.TestMemberIsNonNegative<uint64_t>(candidate_pair.responses_sent); | 390 verifier.TestMemberIsNonNegative<uint64_t>(candidate_pair.responses_sent); |
| 380 verifier.TestMemberIsUndefined(candidate_pair.retransmissions_received); | 391 verifier.TestMemberIsUndefined(candidate_pair.retransmissions_received); |
| 381 verifier.TestMemberIsUndefined(candidate_pair.retransmissions_sent); | 392 verifier.TestMemberIsUndefined(candidate_pair.retransmissions_sent); |
| 382 verifier.TestMemberIsUndefined(candidate_pair.consent_requests_received); | 393 verifier.TestMemberIsUndefined(candidate_pair.consent_requests_received); |
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 625 caller_ = nullptr; | 636 caller_ = nullptr; |
| 626 // Any pending stats requests should have completed in the act of destroying | 637 // Any pending stats requests should have completed in the act of destroying |
| 627 // the peer connection. | 638 // the peer connection. |
| 628 EXPECT_TRUE(stats_obtainer->report()); | 639 EXPECT_TRUE(stats_obtainer->report()); |
| 629 } | 640 } |
| 630 #endif // HAVE_SCTP | 641 #endif // HAVE_SCTP |
| 631 | 642 |
| 632 } // namespace | 643 } // namespace |
| 633 | 644 |
| 634 } // namespace webrtc | 645 } // namespace webrtc |
| OLD | NEW |