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 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 MediaControllerInterface::Create(cricket::MediaConfig(), | 52 MediaControllerInterface::Create(cricket::MediaConfig(), |
53 worker_thread_, | 53 worker_thread_, |
54 channel_manager_.get())), | 54 channel_manager_.get())), |
55 session_(media_controller_.get()), | 55 session_(media_controller_.get()), |
56 pc_() { | 56 pc_() { |
57 EXPECT_CALL(pc_, session()).WillRepeatedly(Return(&session_)); | 57 EXPECT_CALL(pc_, session()).WillRepeatedly(Return(&session_)); |
58 EXPECT_CALL(pc_, sctp_data_channels()).WillRepeatedly( | 58 EXPECT_CALL(pc_, sctp_data_channels()).WillRepeatedly( |
59 ReturnRef(data_channels_)); | 59 ReturnRef(data_channels_)); |
60 } | 60 } |
61 | 61 |
| 62 rtc::ScopedFakeClock& fake_clock() { return fake_clock_; } |
62 MockWebRtcSession& session() { return session_; } | 63 MockWebRtcSession& session() { return session_; } |
63 MockPeerConnection& pc() { return pc_; } | 64 MockPeerConnection& pc() { return pc_; } |
64 std::vector<rtc::scoped_refptr<DataChannel>>& data_channels() { | 65 std::vector<rtc::scoped_refptr<DataChannel>>& data_channels() { |
65 return data_channels_; | 66 return data_channels_; |
66 } | 67 } |
67 | 68 |
68 // SetSessionDescriptionObserver overrides. | 69 // SetSessionDescriptionObserver overrides. |
69 void OnSuccess() override {} | 70 void OnSuccess() override {} |
70 void OnFailure(const std::string& error) override { | 71 void OnFailure(const std::string& error) override { |
71 RTC_NOTREACHED() << error; | 72 RTC_NOTREACHED() << error; |
72 } | 73 } |
73 | 74 |
74 private: | 75 private: |
| 76 rtc::ScopedFakeClock fake_clock_; |
75 rtc::Thread* const worker_thread_; | 77 rtc::Thread* const worker_thread_; |
76 rtc::Thread* const network_thread_; | 78 rtc::Thread* const network_thread_; |
77 std::unique_ptr<cricket::ChannelManager> channel_manager_; | 79 std::unique_ptr<cricket::ChannelManager> channel_manager_; |
78 std::unique_ptr<webrtc::MediaControllerInterface> media_controller_; | 80 std::unique_ptr<webrtc::MediaControllerInterface> media_controller_; |
79 MockWebRtcSession session_; | 81 MockWebRtcSession session_; |
80 MockPeerConnection pc_; | 82 MockPeerConnection pc_; |
81 | 83 |
82 std::vector<rtc::scoped_refptr<DataChannel>> data_channels_; | 84 std::vector<rtc::scoped_refptr<DataChannel>> data_channels_; |
83 }; | 85 }; |
84 | 86 |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
271 collector_->GetStatsReport(StatsCallback::Create(&b)); | 273 collector_->GetStatsReport(StatsCallback::Create(&b)); |
272 collector_->GetStatsReport(StatsCallback::Create(&c)); | 274 collector_->GetStatsReport(StatsCallback::Create(&c)); |
273 EXPECT_TRUE_WAIT(a, kGetStatsReportTimeoutMs); | 275 EXPECT_TRUE_WAIT(a, kGetStatsReportTimeoutMs); |
274 EXPECT_TRUE_WAIT(b, kGetStatsReportTimeoutMs); | 276 EXPECT_TRUE_WAIT(b, kGetStatsReportTimeoutMs); |
275 EXPECT_TRUE_WAIT(c, kGetStatsReportTimeoutMs); | 277 EXPECT_TRUE_WAIT(c, kGetStatsReportTimeoutMs); |
276 EXPECT_EQ(a.get(), b.get()); | 278 EXPECT_EQ(a.get(), b.get()); |
277 EXPECT_EQ(b.get(), c.get()); | 279 EXPECT_EQ(b.get(), c.get()); |
278 } | 280 } |
279 | 281 |
280 TEST_F(RTCStatsCollectorTest, CachedStatsReports) { | 282 TEST_F(RTCStatsCollectorTest, CachedStatsReports) { |
281 rtc::ScopedFakeClock fake_clock; | |
282 // Caching should ensure |a| and |b| are the same report. | 283 // Caching should ensure |a| and |b| are the same report. |
283 rtc::scoped_refptr<const RTCStatsReport> a = GetStatsReport(); | 284 rtc::scoped_refptr<const RTCStatsReport> a = GetStatsReport(); |
284 rtc::scoped_refptr<const RTCStatsReport> b = GetStatsReport(); | 285 rtc::scoped_refptr<const RTCStatsReport> b = GetStatsReport(); |
285 EXPECT_EQ(a.get(), b.get()); | 286 EXPECT_EQ(a.get(), b.get()); |
286 // Invalidate cache by clearing it. | 287 // Invalidate cache by clearing it. |
287 collector_->ClearCachedStatsReport(); | 288 collector_->ClearCachedStatsReport(); |
288 rtc::scoped_refptr<const RTCStatsReport> c = GetStatsReport(); | 289 rtc::scoped_refptr<const RTCStatsReport> c = GetStatsReport(); |
289 EXPECT_NE(b.get(), c.get()); | 290 EXPECT_NE(b.get(), c.get()); |
290 // Invalidate cache by advancing time. | 291 // Invalidate cache by advancing time. |
291 fake_clock.AdvanceTime(rtc::TimeDelta::FromMilliseconds(51)); | 292 test_->fake_clock().AdvanceTime(rtc::TimeDelta::FromMilliseconds(51)); |
292 rtc::scoped_refptr<const RTCStatsReport> d = GetStatsReport(); | 293 rtc::scoped_refptr<const RTCStatsReport> d = GetStatsReport(); |
293 EXPECT_TRUE(d); | 294 EXPECT_TRUE(d); |
294 EXPECT_NE(c.get(), d.get()); | 295 EXPECT_NE(c.get(), d.get()); |
295 } | 296 } |
296 | 297 |
297 TEST_F(RTCStatsCollectorTest, MultipleCallbacksWithInvalidatedCacheInBetween) { | 298 TEST_F(RTCStatsCollectorTest, MultipleCallbacksWithInvalidatedCacheInBetween) { |
298 rtc::ScopedFakeClock fake_clock; | |
299 rtc::scoped_refptr<const RTCStatsReport> a; | 299 rtc::scoped_refptr<const RTCStatsReport> a; |
300 rtc::scoped_refptr<const RTCStatsReport> b; | 300 rtc::scoped_refptr<const RTCStatsReport> b; |
301 rtc::scoped_refptr<const RTCStatsReport> c; | 301 rtc::scoped_refptr<const RTCStatsReport> c; |
302 collector_->GetStatsReport(StatsCallback::Create(&a)); | 302 collector_->GetStatsReport(StatsCallback::Create(&a)); |
303 collector_->GetStatsReport(StatsCallback::Create(&b)); | 303 collector_->GetStatsReport(StatsCallback::Create(&b)); |
304 // Cache is invalidated after 50 ms. | 304 // Cache is invalidated after 50 ms. |
305 fake_clock.AdvanceTime(rtc::TimeDelta::FromMilliseconds(51)); | 305 test_->fake_clock().AdvanceTime(rtc::TimeDelta::FromMilliseconds(51)); |
306 collector_->GetStatsReport(StatsCallback::Create(&c)); | 306 collector_->GetStatsReport(StatsCallback::Create(&c)); |
307 EXPECT_TRUE_WAIT(a, kGetStatsReportTimeoutMs); | 307 EXPECT_TRUE_WAIT(a, kGetStatsReportTimeoutMs); |
308 EXPECT_TRUE_WAIT(b, kGetStatsReportTimeoutMs); | 308 EXPECT_TRUE_WAIT(b, kGetStatsReportTimeoutMs); |
309 EXPECT_TRUE_WAIT(c, kGetStatsReportTimeoutMs); | 309 EXPECT_TRUE_WAIT(c, kGetStatsReportTimeoutMs); |
310 EXPECT_EQ(a.get(), b.get()); | 310 EXPECT_EQ(a.get(), b.get()); |
311 // The act of doing |AdvanceTime| processes all messages. If this was not the | 311 // The act of doing |AdvanceTime| processes all messages. If this was not the |
312 // case we might not require |c| to be fresher than |b|. | 312 // case we might not require |c| to be fresher than |b|. |
313 EXPECT_NE(c.get(), b.get()); | 313 EXPECT_NE(c.get(), b.get()); |
314 } | 314 } |
315 | 315 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
374 rtc::scoped_refptr<FakeRTCStatsCollector> collector_; | 374 rtc::scoped_refptr<FakeRTCStatsCollector> collector_; |
375 }; | 375 }; |
376 | 376 |
377 TEST_F(RTCStatsCollectorTestWithFakeCollector, ThreadUsageAndResultsMerging) { | 377 TEST_F(RTCStatsCollectorTestWithFakeCollector, ThreadUsageAndResultsMerging) { |
378 collector_->VerifyThreadUsageAndResultsMerging(); | 378 collector_->VerifyThreadUsageAndResultsMerging(); |
379 } | 379 } |
380 | 380 |
381 } // namespace | 381 } // namespace |
382 | 382 |
383 } // namespace webrtc | 383 } // namespace webrtc |
OLD | NEW |