| 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 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 389 GetStatsReport(rtc::scoped_refptr<RTCStatsCollectorCallback>(this)); | 389 GetStatsReport(rtc::scoped_refptr<RTCStatsCollectorCallback>(this)); |
| 390 EXPECT_TRUE_WAIT(HasVerifiedResults(), kGetStatsReportTimeoutMs); | 390 EXPECT_TRUE_WAIT(HasVerifiedResults(), kGetStatsReportTimeoutMs); |
| 391 } | 391 } |
| 392 | 392 |
| 393 bool HasVerifiedResults() { | 393 bool HasVerifiedResults() { |
| 394 EXPECT_TRUE(signaling_thread_->IsCurrent()); | 394 EXPECT_TRUE(signaling_thread_->IsCurrent()); |
| 395 rtc::CritScope cs(&lock_); | 395 rtc::CritScope cs(&lock_); |
| 396 if (!delivered_report_) | 396 if (!delivered_report_) |
| 397 return false; | 397 return false; |
| 398 EXPECT_EQ(produced_on_signaling_thread_, 1); | 398 EXPECT_EQ(produced_on_signaling_thread_, 1); |
| 399 EXPECT_EQ(produced_on_worker_thread_, 1); | |
| 400 EXPECT_EQ(produced_on_network_thread_, 1); | 399 EXPECT_EQ(produced_on_network_thread_, 1); |
| 401 | 400 |
| 402 EXPECT_TRUE(delivered_report_->Get("SignalingThreadStats")); | 401 EXPECT_TRUE(delivered_report_->Get("SignalingThreadStats")); |
| 403 EXPECT_TRUE(delivered_report_->Get("WorkerThreadStats")); | |
| 404 EXPECT_TRUE(delivered_report_->Get("NetworkThreadStats")); | 402 EXPECT_TRUE(delivered_report_->Get("NetworkThreadStats")); |
| 405 | 403 |
| 406 produced_on_signaling_thread_ = 0; | 404 produced_on_signaling_thread_ = 0; |
| 407 produced_on_worker_thread_ = 0; | |
| 408 produced_on_network_thread_ = 0; | 405 produced_on_network_thread_ = 0; |
| 409 delivered_report_ = nullptr; | 406 delivered_report_ = nullptr; |
| 410 return true; | 407 return true; |
| 411 } | 408 } |
| 412 | 409 |
| 413 protected: | 410 protected: |
| 414 FakeRTCStatsCollector( | 411 FakeRTCStatsCollector( |
| 415 PeerConnection* pc, | 412 PeerConnection* pc, |
| 416 int64_t cache_lifetime) | 413 int64_t cache_lifetime) |
| 417 : RTCStatsCollector(pc, cache_lifetime), | 414 : RTCStatsCollector(pc, cache_lifetime), |
| 418 signaling_thread_(pc->session()->signaling_thread()), | 415 signaling_thread_(pc->session()->signaling_thread()), |
| 419 worker_thread_(pc->session()->worker_thread()), | 416 worker_thread_(pc->session()->worker_thread()), |
| 420 network_thread_(pc->session()->network_thread()) { | 417 network_thread_(pc->session()->network_thread()) { |
| 421 } | 418 } |
| 422 | 419 |
| 423 void ProducePartialResultsOnSignalingThread(int64_t timestamp_us) override { | 420 void ProducePartialResultsOnSignalingThread(int64_t timestamp_us) override { |
| 424 EXPECT_TRUE(signaling_thread_->IsCurrent()); | 421 EXPECT_TRUE(signaling_thread_->IsCurrent()); |
| 425 { | 422 { |
| 426 rtc::CritScope cs(&lock_); | 423 rtc::CritScope cs(&lock_); |
| 427 EXPECT_FALSE(delivered_report_); | 424 EXPECT_FALSE(delivered_report_); |
| 428 ++produced_on_signaling_thread_; | 425 ++produced_on_signaling_thread_; |
| 429 } | 426 } |
| 430 | 427 |
| 431 rtc::scoped_refptr<RTCStatsReport> signaling_report = | 428 rtc::scoped_refptr<RTCStatsReport> signaling_report = |
| 432 RTCStatsReport::Create(0); | 429 RTCStatsReport::Create(0); |
| 433 signaling_report->AddStats(std::unique_ptr<const RTCStats>( | 430 signaling_report->AddStats(std::unique_ptr<const RTCStats>( |
| 434 new RTCTestStats("SignalingThreadStats", timestamp_us))); | 431 new RTCTestStats("SignalingThreadStats", timestamp_us))); |
| 435 AddPartialResults(signaling_report); | 432 AddPartialResults(signaling_report); |
| 436 } | 433 } |
| 437 void ProducePartialResultsOnWorkerThread(int64_t timestamp_us) override { | |
| 438 EXPECT_TRUE(worker_thread_->IsCurrent()); | |
| 439 { | |
| 440 rtc::CritScope cs(&lock_); | |
| 441 EXPECT_FALSE(delivered_report_); | |
| 442 ++produced_on_worker_thread_; | |
| 443 } | |
| 444 | |
| 445 rtc::scoped_refptr<RTCStatsReport> worker_report = | |
| 446 RTCStatsReport::Create(0); | |
| 447 worker_report->AddStats(std::unique_ptr<const RTCStats>( | |
| 448 new RTCTestStats("WorkerThreadStats", timestamp_us))); | |
| 449 AddPartialResults(worker_report); | |
| 450 } | |
| 451 void ProducePartialResultsOnNetworkThread(int64_t timestamp_us) override { | 434 void ProducePartialResultsOnNetworkThread(int64_t timestamp_us) override { |
| 452 EXPECT_TRUE(network_thread_->IsCurrent()); | 435 EXPECT_TRUE(network_thread_->IsCurrent()); |
| 453 { | 436 { |
| 454 rtc::CritScope cs(&lock_); | 437 rtc::CritScope cs(&lock_); |
| 455 EXPECT_FALSE(delivered_report_); | 438 EXPECT_FALSE(delivered_report_); |
| 456 ++produced_on_network_thread_; | 439 ++produced_on_network_thread_; |
| 457 } | 440 } |
| 458 | 441 |
| 459 rtc::scoped_refptr<RTCStatsReport> network_report = | 442 rtc::scoped_refptr<RTCStatsReport> network_report = |
| 460 RTCStatsReport::Create(0); | 443 RTCStatsReport::Create(0); |
| 461 network_report->AddStats(std::unique_ptr<const RTCStats>( | 444 network_report->AddStats(std::unique_ptr<const RTCStats>( |
| 462 new RTCTestStats("NetworkThreadStats", timestamp_us))); | 445 new RTCTestStats("NetworkThreadStats", timestamp_us))); |
| 463 AddPartialResults(network_report); | 446 AddPartialResults(network_report); |
| 464 } | 447 } |
| 465 | 448 |
| 466 private: | 449 private: |
| 467 rtc::Thread* const signaling_thread_; | 450 rtc::Thread* const signaling_thread_; |
| 468 rtc::Thread* const worker_thread_; | 451 rtc::Thread* const worker_thread_; |
| 469 rtc::Thread* const network_thread_; | 452 rtc::Thread* const network_thread_; |
| 470 | 453 |
| 471 rtc::CriticalSection lock_; | 454 rtc::CriticalSection lock_; |
| 472 rtc::scoped_refptr<const RTCStatsReport> delivered_report_; | 455 rtc::scoped_refptr<const RTCStatsReport> delivered_report_; |
| 473 int produced_on_signaling_thread_ = 0; | 456 int produced_on_signaling_thread_ = 0; |
| 474 int produced_on_worker_thread_ = 0; | |
| 475 int produced_on_network_thread_ = 0; | 457 int produced_on_network_thread_ = 0; |
| 476 }; | 458 }; |
| 477 | 459 |
| 478 class RTCStatsCollectorTest : public testing::Test { | 460 class RTCStatsCollectorTest : public testing::Test { |
| 479 public: | 461 public: |
| 480 RTCStatsCollectorTest() | 462 RTCStatsCollectorTest() |
| 481 : test_(new rtc::RefCountedObject<RTCStatsCollectorTestHelper>()), | 463 : test_(new rtc::RefCountedObject<RTCStatsCollectorTestHelper>()), |
| 482 collector_(RTCStatsCollector::Create( | 464 collector_(RTCStatsCollector::Create( |
| 483 &test_->pc(), 50 * rtc::kNumMicrosecsPerMillisec)) { | 465 &test_->pc(), 50 * rtc::kNumMicrosecsPerMillisec)) { |
| 484 } | 466 } |
| (...skipping 1422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1907 rtc::scoped_refptr<FakeRTCStatsCollector> collector_; | 1889 rtc::scoped_refptr<FakeRTCStatsCollector> collector_; |
| 1908 }; | 1890 }; |
| 1909 | 1891 |
| 1910 TEST_F(RTCStatsCollectorTestWithFakeCollector, ThreadUsageAndResultsMerging) { | 1892 TEST_F(RTCStatsCollectorTestWithFakeCollector, ThreadUsageAndResultsMerging) { |
| 1911 collector_->VerifyThreadUsageAndResultsMerging(); | 1893 collector_->VerifyThreadUsageAndResultsMerging(); |
| 1912 } | 1894 } |
| 1913 | 1895 |
| 1914 } // namespace | 1896 } // namespace |
| 1915 | 1897 |
| 1916 } // namespace webrtc | 1898 } // namespace webrtc |
| OLD | NEW |