aboutsummaryrefslogtreecommitdiff
path: root/webrtc/video_engine
diff options
context:
space:
mode:
authorPeter Boström <pbos@webrtc.org>2015-12-09 11:20:58 +0100
committerPeter Boström <pbos@webrtc.org>2015-12-09 10:21:09 +0000
commitd3c944755ec546f46d5bdd84bff359fe6c4639e9 (patch)
tree799790b6b5739faffe50f9be66f70428d7920a7c /webrtc/video_engine
parentbda7e0b932fc89598da95496efc8650bc0e2c86c (diff)
downloadwebrtc-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.cc17
-rw-r--r--webrtc/video_engine/call_stats.h4
-rw-r--r--webrtc/video_engine/call_stats_unittest.cc37
-rw-r--r--webrtc/video_engine/vie_remb.cc11
-rw-r--r--webrtc/video_engine/vie_remb.h3
-rw-r--r--webrtc/video_engine/vie_remb_unittest.cc21
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);