Index: chrome/browser/network_time/network_time_tracker_unittest.cc |
diff --git a/chrome/browser/network_time/network_time_tracker_unittest.cc b/chrome/browser/network_time/network_time_tracker_unittest.cc |
deleted file mode 100644 |
index 6cd99724e1910ac641fd059b08fbe4bc8fc7d969..0000000000000000000000000000000000000000 |
--- a/chrome/browser/network_time/network_time_tracker_unittest.cc |
+++ /dev/null |
@@ -1,159 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/network_time/network_time_tracker.h" |
- |
-#include <math.h> |
- |
-#include "base/compiler_specific.h" |
-#include "base/prefs/testing_pref_service.h" |
-#include "base/time/tick_clock.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace { |
- |
-// These are all in milliseconds. |
-const int64 kLatency1 = 50; |
-const int64 kLatency2 = 500; |
- |
-// Can not be smaller than 15, it's the NowFromSystemTime() resolution. |
-const int64 kResolution1 = 17; |
-const int64 kResolution2 = 177; |
- |
-const int64 kPseudoSleepTime1 = 500000001; |
-const int64 kPseudoSleepTime2 = 1888; |
- |
-// A custom tick clock that will return an arbitrary time. |
-class TestTickClock : public base::TickClock { |
- public: |
- explicit TestTickClock(base::TimeTicks* ticks_now) : ticks_now_(ticks_now) {} |
- virtual ~TestTickClock() {} |
- |
- virtual base::TimeTicks NowTicks() OVERRIDE { |
- return *ticks_now_; |
- } |
- |
- private: |
- base::TimeTicks* ticks_now_; |
-}; |
- |
-} // namespace |
- |
-class NetworkTimeTrackerTest : public testing::Test { |
- public: |
- virtual ~NetworkTimeTrackerTest() {} |
- |
- virtual void SetUp() OVERRIDE { |
- NetworkTimeTracker::RegisterPrefs(pref_service_.registry()); |
- |
- now_ = base::Time::NowFromSystemTime(); |
- network_time_tracker_.reset(new NetworkTimeTracker( |
- scoped_ptr<base::TickClock>(new TestTickClock(&ticks_now_)), |
- &pref_service_)); |
- } |
- |
- base::Time Now() const { |
- return now_ + (ticks_now_ - base::TimeTicks()); |
- } |
- |
- base::TimeTicks TicksNow() const { |
- return ticks_now_; |
- } |
- |
- void AddToTicksNow(int64 ms) { |
- ticks_now_ += base::TimeDelta::FromMilliseconds(ms); |
- } |
- |
- // Updates the notifier's time with the specified parameters. |
- void UpdateNetworkTime(const base::Time& network_time, |
- const base::TimeDelta& resolution, |
- const base::TimeDelta& latency, |
- const base::TimeTicks& post_time) { |
- network_time_tracker_->UpdateNetworkTime( |
- network_time, resolution, latency, post_time); |
- } |
- |
- // Ensures the network time tracker has a network time and that the |
- // disparity between the network time version of |ticks_now_| and the actual |
- // |ticks_now_| value is within the uncertainty (should always be true |
- // because the network time notifier uses |ticks_now_| for the tick clock). |
- testing::AssertionResult ValidateExpectedTime() const { |
- base::Time network_time; |
- base::TimeDelta uncertainty; |
- if (!network_time_tracker_->GetNetworkTime(TicksNow(), |
- &network_time, |
- &uncertainty)) |
- return testing::AssertionFailure() << "Failed to get network time."; |
- if (fabs(static_cast<double>(Now().ToInternalValue() - |
- network_time.ToInternalValue())) > |
- static_cast<double>(uncertainty.ToInternalValue())) { |
- return testing::AssertionFailure() |
- << "Expected network time not within uncertainty."; |
- } |
- return testing::AssertionSuccess(); |
- } |
- |
- NetworkTimeTracker* network_time_tracker() { |
- return network_time_tracker_.get(); |
- } |
- |
- private: |
- // Used in building the current time that TestTickClock reports. See Now() |
- // for details. |
- base::Time now_; |
- base::TimeTicks ticks_now_; |
- |
- TestingPrefServiceSimple pref_service_; |
- |
- // The network time tracker being tested. |
- scoped_ptr<NetworkTimeTracker> network_time_tracker_; |
-}; |
- |
-// Should not return a value before UpdateNetworkTime gets called. |
-TEST_F(NetworkTimeTrackerTest, Uninitialized) { |
- base::Time network_time; |
- base::TimeDelta uncertainty; |
- EXPECT_FALSE(network_time_tracker()->GetNetworkTime(base::TimeTicks(), |
- &network_time, |
- &uncertainty)); |
-} |
- |
-// Verify that the the tracker receives and properly handles updates to the |
-// network time. |
-TEST_F(NetworkTimeTrackerTest, NetworkTimeUpdates) { |
- UpdateNetworkTime( |
- Now(), |
- base::TimeDelta::FromMilliseconds(kResolution1), |
- base::TimeDelta::FromMilliseconds(kLatency1), |
- TicksNow()); |
- EXPECT_TRUE(ValidateExpectedTime()); |
- |
- // Fake a wait for kPseudoSleepTime1 to make sure we keep tracking. |
- AddToTicksNow(kPseudoSleepTime1); |
- EXPECT_TRUE(ValidateExpectedTime()); |
- |
- // Update the time with a new now value and kLatency2. |
- UpdateNetworkTime( |
- Now(), |
- base::TimeDelta::FromMilliseconds(kResolution2), |
- base::TimeDelta::FromMilliseconds(kLatency2), |
- TicksNow()); |
- |
- // Fake a wait for kPseudoSleepTime2 to make sure we keep tracking still. |
- AddToTicksNow(kPseudoSleepTime2); |
- EXPECT_TRUE(ValidateExpectedTime()); |
- |
- // Fake a long delay between update task post time and the network notifier |
- // updating its network time. The uncertainty should account for the |
- // disparity. |
- base::Time old_now = Now(); |
- base::TimeTicks old_ticks = TicksNow(); |
- AddToTicksNow(kPseudoSleepTime2); |
- UpdateNetworkTime( |
- old_now, |
- base::TimeDelta::FromMilliseconds(kResolution2), |
- base::TimeDelta::FromMilliseconds(kLatency2), |
- old_ticks); |
- EXPECT_TRUE(ValidateExpectedTime()); |
-} |