diff options
author | Peter Boström <pbos@webrtc.org> | 2015-12-09 11:20:58 +0100 |
---|---|---|
committer | Peter Boström <pbos@webrtc.org> | 2015-12-09 10:21:09 +0000 |
commit | d3c944755ec546f46d5bdd84bff359fe6c4639e9 (patch) | |
tree | 799790b6b5739faffe50f9be66f70428d7920a7c /webrtc/video_engine | |
parent | bda7e0b932fc89598da95496efc8650bc0e2c86c (diff) | |
download | webrtc-d3c944755ec546f46d5bdd84bff359fe6c4639e9.tar.gz |
Nuke TickTime::UseFakeClock.
Removes the global simulated time that affects (or breaks) following
tests in the same binary and replaces it with SimulatedClock.
BUG=webrtc:5318
R=mflodman@webrtc.org
Review URL: https://codereview.webrtc.org/1512853002 .
Cr-Commit-Position: refs/heads/master@{#10947}
Diffstat (limited to 'webrtc/video_engine')
-rw-r--r-- | webrtc/video_engine/call_stats.cc | 17 | ||||
-rw-r--r-- | webrtc/video_engine/call_stats.h | 4 | ||||
-rw-r--r-- | webrtc/video_engine/call_stats_unittest.cc | 37 | ||||
-rw-r--r-- | webrtc/video_engine/vie_remb.cc | 11 | ||||
-rw-r--r-- | webrtc/video_engine/vie_remb.h | 3 | ||||
-rw-r--r-- | webrtc/video_engine/vie_remb_unittest.cc | 21 |
6 files changed, 50 insertions, 43 deletions
diff --git a/webrtc/video_engine/call_stats.cc b/webrtc/video_engine/call_stats.cc index 4d5338c5fc..2b87d7eb6b 100644 --- a/webrtc/video_engine/call_stats.cc +++ b/webrtc/video_engine/call_stats.cc @@ -89,26 +89,25 @@ class RtcpObserver : public RtcpRttStats { RTC_DISALLOW_COPY_AND_ASSIGN(RtcpObserver); }; -CallStats::CallStats() - : crit_(CriticalSectionWrapper::CreateCriticalSection()), +CallStats::CallStats(Clock* clock) + : clock_(clock), + crit_(CriticalSectionWrapper::CreateCriticalSection()), rtcp_rtt_stats_(new RtcpObserver(this)), - last_process_time_(TickTime::MillisecondTimestamp()), + last_process_time_(clock_->TimeInMilliseconds()), max_rtt_ms_(0), - avg_rtt_ms_(0) { -} + avg_rtt_ms_(0) {} CallStats::~CallStats() { assert(observers_.empty()); } int64_t CallStats::TimeUntilNextProcess() { - return last_process_time_ + kUpdateIntervalMs - - TickTime::MillisecondTimestamp(); + return last_process_time_ + kUpdateIntervalMs - clock_->TimeInMilliseconds(); } int32_t CallStats::Process() { CriticalSectionScoped cs(crit_.get()); - int64_t now = TickTime::MillisecondTimestamp(); + int64_t now = clock_->TimeInMilliseconds(); if (now < last_process_time_ + kUpdateIntervalMs) return 0; @@ -161,7 +160,7 @@ void CallStats::DeregisterStatsObserver(CallStatsObserver* observer) { void CallStats::OnRttUpdate(int64_t rtt) { CriticalSectionScoped cs(crit_.get()); - reports_.push_back(RttTime(rtt, TickTime::MillisecondTimestamp())); + reports_.push_back(RttTime(rtt, clock_->TimeInMilliseconds())); } } // namespace webrtc diff --git a/webrtc/video_engine/call_stats.h b/webrtc/video_engine/call_stats.h index d0a0b5313a..0dd7bdbaae 100644 --- a/webrtc/video_engine/call_stats.h +++ b/webrtc/video_engine/call_stats.h @@ -16,6 +16,7 @@ #include "webrtc/base/constructormagic.h" #include "webrtc/base/scoped_ptr.h" #include "webrtc/modules/include/module.h" +#include "webrtc/system_wrappers/include/clock.h" namespace webrtc { @@ -28,7 +29,7 @@ class CallStats : public Module { public: friend class RtcpObserver; - CallStats(); + explicit CallStats(Clock* clock); ~CallStats(); // Implements Module, to use the process thread. @@ -57,6 +58,7 @@ class CallStats : public Module { int64_t avg_rtt_ms() const; private: + Clock* const clock_; // Protecting all members. rtc::scoped_ptr<CriticalSectionWrapper> crit_; // Observer receiving statistics updates. diff --git a/webrtc/video_engine/call_stats_unittest.cc b/webrtc/video_engine/call_stats_unittest.cc index bfba5cb72a..ec7e8565f0 100644 --- a/webrtc/video_engine/call_stats_unittest.cc +++ b/webrtc/video_engine/call_stats_unittest.cc @@ -31,11 +31,12 @@ class MockStatsObserver : public CallStatsObserver { }; class CallStatsTest : public ::testing::Test { + public: + CallStatsTest() : fake_clock_(12345) {} + protected: - virtual void SetUp() { - TickTime::UseFakeClock(12345); - call_stats_.reset(new CallStats()); - } + virtual void SetUp() { call_stats_.reset(new CallStats(&fake_clock_)); } + SimulatedClock fake_clock_; rtc::scoped_ptr<CallStats> call_stats_; }; @@ -43,7 +44,7 @@ TEST_F(CallStatsTest, AddAndTriggerCallback) { MockStatsObserver stats_observer; RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats(); call_stats_->RegisterStatsObserver(&stats_observer); - TickTime::AdvanceFakeClock(1000); + fake_clock_.AdvanceTimeMilliseconds(1000); EXPECT_EQ(0, rtcp_rtt_stats->LastProcessedRtt()); const int64_t kRtt = 25; @@ -53,7 +54,7 @@ TEST_F(CallStatsTest, AddAndTriggerCallback) { EXPECT_EQ(kRtt, rtcp_rtt_stats->LastProcessedRtt()); const int64_t kRttTimeOutMs = 1500 + 10; - TickTime::AdvanceFakeClock(kRttTimeOutMs); + fake_clock_.AdvanceTimeMilliseconds(kRttTimeOutMs); EXPECT_CALL(stats_observer, OnRttUpdate(_, _)).Times(0); call_stats_->Process(); EXPECT_EQ(0, rtcp_rtt_stats->LastProcessedRtt()); @@ -72,18 +73,18 @@ TEST_F(CallStatsTest, ProcessTime) { call_stats_->Process(); // Advance clock and verify we get an update. - TickTime::AdvanceFakeClock(1000); + fake_clock_.AdvanceTimeMilliseconds(1000); EXPECT_CALL(stats_observer, OnRttUpdate(_, _)).Times(1); call_stats_->Process(); // Advance clock just too little to get an update. - TickTime::AdvanceFakeClock(999); + fake_clock_.AdvanceTimeMilliseconds(999); rtcp_rtt_stats->OnRttUpdate(100); EXPECT_CALL(stats_observer, OnRttUpdate(_, _)).Times(0); call_stats_->Process(); // Advance enough to trigger a new update. - TickTime::AdvanceFakeClock(1); + fake_clock_.AdvanceTimeMilliseconds(1); EXPECT_CALL(stats_observer, OnRttUpdate(_, _)).Times(1); call_stats_->Process(); @@ -106,7 +107,7 @@ TEST_F(CallStatsTest, MultipleObservers) { rtcp_rtt_stats->OnRttUpdate(kRtt); // Verify both observers are updated. - TickTime::AdvanceFakeClock(1000); + fake_clock_.AdvanceTimeMilliseconds(1000); EXPECT_CALL(stats_observer_1, OnRttUpdate(kRtt, kRtt)).Times(1); EXPECT_CALL(stats_observer_2, OnRttUpdate(kRtt, kRtt)).Times(1); call_stats_->Process(); @@ -115,7 +116,7 @@ TEST_F(CallStatsTest, MultipleObservers) { // observer. call_stats_->DeregisterStatsObserver(&stats_observer_2); rtcp_rtt_stats->OnRttUpdate(kRtt); - TickTime::AdvanceFakeClock(1000); + fake_clock_.AdvanceTimeMilliseconds(1000); EXPECT_CALL(stats_observer_1, OnRttUpdate(kRtt, kRtt)).Times(1); EXPECT_CALL(stats_observer_2, OnRttUpdate(kRtt, kRtt)).Times(0); call_stats_->Process(); @@ -123,7 +124,7 @@ TEST_F(CallStatsTest, MultipleObservers) { // Deregister the first observer. call_stats_->DeregisterStatsObserver(&stats_observer_1); rtcp_rtt_stats->OnRttUpdate(kRtt); - TickTime::AdvanceFakeClock(1000); + fake_clock_.AdvanceTimeMilliseconds(1000); EXPECT_CALL(stats_observer_1, OnRttUpdate(kRtt, kRtt)).Times(0); EXPECT_CALL(stats_observer_2, OnRttUpdate(kRtt, kRtt)).Times(0); call_stats_->Process(); @@ -136,7 +137,7 @@ TEST_F(CallStatsTest, ChangeRtt) { RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats(); // Advance clock to be ready for an update. - TickTime::AdvanceFakeClock(1000); + fake_clock_.AdvanceTimeMilliseconds(1000); // Set a first value and verify the callback is triggered. const int64_t kFirstRtt = 100; @@ -145,7 +146,7 @@ TEST_F(CallStatsTest, ChangeRtt) { call_stats_->Process(); // Increase rtt and verify the new value is reported. - TickTime::AdvanceFakeClock(1000); + fake_clock_.AdvanceTimeMilliseconds(1000); const int64_t kHighRtt = kFirstRtt + 20; const int64_t kAvgRtt1 = 103; rtcp_rtt_stats->OnRttUpdate(kHighRtt); @@ -155,7 +156,7 @@ TEST_F(CallStatsTest, ChangeRtt) { // Increase time enough for a new update, but not too much to make the // rtt invalid. Report a lower rtt and verify the old/high value still is sent // in the callback. - TickTime::AdvanceFakeClock(1000); + fake_clock_.AdvanceTimeMilliseconds(1000); const int64_t kLowRtt = kFirstRtt - 20; const int64_t kAvgRtt2 = 102; rtcp_rtt_stats->OnRttUpdate(kLowRtt); @@ -164,7 +165,7 @@ TEST_F(CallStatsTest, ChangeRtt) { // Advance time to make the high report invalid, the lower rtt should now be // in the callback. - TickTime::AdvanceFakeClock(1000); + fake_clock_.AdvanceTimeMilliseconds(1000); const int64_t kAvgRtt3 = 95; EXPECT_CALL(stats_observer, OnRttUpdate(kAvgRtt3, kLowRtt)).Times(1); call_stats_->Process(); @@ -176,7 +177,7 @@ TEST_F(CallStatsTest, LastProcessedRtt) { MockStatsObserver stats_observer; call_stats_->RegisterStatsObserver(&stats_observer); RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats(); - TickTime::AdvanceFakeClock(1000); + fake_clock_.AdvanceTimeMilliseconds(1000); // Set a first values and verify that LastProcessedRtt initially returns the // average rtt. @@ -190,7 +191,7 @@ TEST_F(CallStatsTest, LastProcessedRtt) { EXPECT_EQ(kAvgRtt, rtcp_rtt_stats->LastProcessedRtt()); // Update values and verify LastProcessedRtt. - TickTime::AdvanceFakeClock(1000); + fake_clock_.AdvanceTimeMilliseconds(1000); rtcp_rtt_stats->OnRttUpdate(kRttLow); rtcp_rtt_stats->OnRttUpdate(kRttHigh); EXPECT_CALL(stats_observer, OnRttUpdate(kAvgRtt, kRttHigh)).Times(1); diff --git a/webrtc/video_engine/vie_remb.cc b/webrtc/video_engine/vie_remb.cc index 3901d6d6e9..de9b8c4e34 100644 --- a/webrtc/video_engine/vie_remb.cc +++ b/webrtc/video_engine/vie_remb.cc @@ -27,9 +27,10 @@ const int kRembSendIntervalMs = 200; // % threshold for if we should send a new REMB asap. const unsigned int kSendThresholdPercent = 97; -VieRemb::VieRemb() - : list_crit_(CriticalSectionWrapper::CreateCriticalSection()), - last_remb_time_(TickTime::MillisecondTimestamp()), +VieRemb::VieRemb(Clock* clock) + : clock_(clock), + list_crit_(CriticalSectionWrapper::CreateCriticalSection()), + last_remb_time_(clock_->TimeInMilliseconds()), last_send_bitrate_(0), bitrate_(0) {} @@ -105,13 +106,13 @@ void VieRemb::OnReceiveBitrateChanged(const std::vector<unsigned int>& ssrcs, if (new_remb_bitrate < kSendThresholdPercent * last_send_bitrate_ / 100) { // The new bitrate estimate is less than kSendThresholdPercent % of the // last report. Send a REMB asap. - last_remb_time_ = TickTime::MillisecondTimestamp() - kRembSendIntervalMs; + last_remb_time_ = clock_->TimeInMilliseconds() - kRembSendIntervalMs; } } bitrate_ = bitrate; // Calculate total receive bitrate estimate. - int64_t now = TickTime::MillisecondTimestamp(); + int64_t now = clock_->TimeInMilliseconds(); if (now - last_remb_time_ < kRembSendIntervalMs) { list_crit_->Leave(); diff --git a/webrtc/video_engine/vie_remb.h b/webrtc/video_engine/vie_remb.h index 6a79ffe652..32759518f2 100644 --- a/webrtc/video_engine/vie_remb.h +++ b/webrtc/video_engine/vie_remb.h @@ -28,7 +28,7 @@ class RtpRtcp; class VieRemb : public RemoteBitrateObserver { public: - VieRemb(); + explicit VieRemb(Clock* clock); ~VieRemb(); // Called to add a receive channel to include in the REMB packet. @@ -57,6 +57,7 @@ class VieRemb : public RemoteBitrateObserver { private: typedef std::list<RtpRtcp*> RtpModules; + Clock* const clock_; rtc::scoped_ptr<CriticalSectionWrapper> list_crit_; // The last time a REMB was sent. diff --git a/webrtc/video_engine/vie_remb_unittest.cc b/webrtc/video_engine/vie_remb_unittest.cc index f319d0d363..bde3274173 100644 --- a/webrtc/video_engine/vie_remb_unittest.cc +++ b/webrtc/video_engine/vie_remb_unittest.cc @@ -30,12 +30,15 @@ using ::testing::Return; namespace webrtc { class ViERembTest : public ::testing::Test { + public: + ViERembTest() : fake_clock_(12345) {} + protected: virtual void SetUp() { - TickTime::UseFakeClock(12345); process_thread_.reset(new NiceMock<MockProcessThread>); - vie_remb_.reset(new VieRemb()); + vie_remb_.reset(new VieRemb(&fake_clock_)); } + SimulatedClock fake_clock_; rtc::scoped_ptr<MockProcessThread> process_thread_; rtc::scoped_ptr<VieRemb> vie_remb_; }; @@ -51,7 +54,7 @@ TEST_F(ViERembTest, OneModuleTestForSendingRemb) { vie_remb_->OnReceiveBitrateChanged(ssrcs, bitrate_estimate); - TickTime::AdvanceFakeClock(1000); + fake_clock_.AdvanceTimeMilliseconds(1000); EXPECT_CALL(rtp, SetREMBData(bitrate_estimate, ssrcs)) .Times(1); vie_remb_->OnReceiveBitrateChanged(ssrcs, bitrate_estimate); @@ -76,7 +79,7 @@ TEST_F(ViERembTest, LowerEstimateToSendRemb) { vie_remb_->OnReceiveBitrateChanged(ssrcs, bitrate_estimate); // Call OnReceiveBitrateChanged twice to get a first estimate. - TickTime::AdvanceFakeClock(1000); + fake_clock_.AdvanceTimeMilliseconds(1000); EXPECT_CALL(rtp, SetREMBData(bitrate_estimate, ssrcs)) .Times(1); vie_remb_->OnReceiveBitrateChanged(ssrcs, bitrate_estimate); @@ -105,7 +108,7 @@ TEST_F(ViERembTest, VerifyIncreasingAndDecreasing) { // Call OnReceiveBitrateChanged twice to get a first estimate. EXPECT_CALL(rtp_0, SetREMBData(bitrate_estimate[0], ssrcs)) .Times(1); - TickTime::AdvanceFakeClock(1000); + fake_clock_.AdvanceTimeMilliseconds(1000); vie_remb_->OnReceiveBitrateChanged(ssrcs, bitrate_estimate[0]); vie_remb_->OnReceiveBitrateChanged(ssrcs, bitrate_estimate[1] + 100); @@ -133,7 +136,7 @@ TEST_F(ViERembTest, NoRembForIncreasedBitrate) { vie_remb_->OnReceiveBitrateChanged(ssrcs, bitrate_estimate); // Call OnReceiveBitrateChanged twice to get a first estimate. - TickTime::AdvanceFakeClock(1000); + fake_clock_.AdvanceTimeMilliseconds(1000); EXPECT_CALL(rtp_0, SetREMBData(bitrate_estimate, ssrcs)) .Times(1); vie_remb_->OnReceiveBitrateChanged(ssrcs, bitrate_estimate); @@ -167,7 +170,7 @@ TEST_F(ViERembTest, ChangeSendRtpModule) { vie_remb_->OnReceiveBitrateChanged(ssrcs, bitrate_estimate); // Call OnReceiveBitrateChanged twice to get a first estimate. - TickTime::AdvanceFakeClock(1000); + fake_clock_.AdvanceTimeMilliseconds(1000); EXPECT_CALL(rtp_0, SetREMBData(bitrate_estimate, ssrcs)) .Times(1); vie_remb_->OnReceiveBitrateChanged(ssrcs, bitrate_estimate); @@ -203,7 +206,7 @@ TEST_F(ViERembTest, OnlyOneRembForDoubleProcess) { vie_remb_->AddRembSender(&rtp); vie_remb_->OnReceiveBitrateChanged(ssrcs, bitrate_estimate); // Call OnReceiveBitrateChanged twice to get a first estimate. - TickTime::AdvanceFakeClock(1000); + fake_clock_.AdvanceTimeMilliseconds(1000); EXPECT_CALL(rtp, SetREMBData(_, _)) .Times(1); vie_remb_->OnReceiveBitrateChanged(ssrcs, bitrate_estimate); @@ -235,7 +238,7 @@ TEST_F(ViERembTest, NoSendingRtpModule) { vie_remb_->OnReceiveBitrateChanged(ssrcs, bitrate_estimate); // Call OnReceiveBitrateChanged twice to get a first estimate. - TickTime::AdvanceFakeClock(1000); + fake_clock_.AdvanceTimeMilliseconds(1000); EXPECT_CALL(rtp, SetREMBData(_, _)) .Times(1); vie_remb_->OnReceiveBitrateChanged(ssrcs, bitrate_estimate); |