Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Side by Side Diff: chrome/browser/metrics/variations/network_time_tracker_unittest.cc

Issue 12096096: Give access to a network time kept in the variation service. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Refactoring based on more CR comments. Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include <math.h>
6
7 #include "chrome/browser/metrics/variations/network_time_tracker.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace {
11
12 // These are all in milliseconds.
13 const int64 kLatency1 = 50;
14 const int64 kLatency2 = 500;
15
16 // Can not be smaller than 15, it's the NowFromSystemTime() resolution.
17 const int64 kResolution1 = 17;
18 const int64 kResolution2 = 177;
19
20 const int64 kPseudoSleepTime1 = 500000001;
21 const int64 kPseudoSleepTime2 = 1888;
22
23 class NetworkTimeTrackerTest : public NetworkTimeTracker {
Alexei Svitkine (slow) 2013/02/05 02:29:07 Nit: NetworkTimeTrackerTest -> TestNetworkTimeTrac
MAD 2013/02/05 15:56:00 Done.
24 public:
25 NetworkTimeTrackerTest() : now_(base::Time::NowFromSystemTime()) {
26 }
27
28 void AddToTicksNow(int64 ms) {
29 ticks_now_ += base::TimeDelta::FromMilliseconds(ms);
30 }
31
32 base::Time now() const {
33 return now_ + (ticks_now_ - base::TimeTicks());
34 }
35
36 void ValidateExpectedTime() {
37 base::Time network_time;
38 base::TimeDelta uncertainty;
39 EXPECT_TRUE(GetNetworkTime(&network_time, &uncertainty));
40 EXPECT_LE(fabs(static_cast<double>(now().ToInternalValue() -
41 network_time.ToInternalValue())),
42 static_cast<double>(uncertainty.ToInternalValue()));
43 }
44
45 protected:
46 virtual base::TimeTicks GetTicksNow() const { return ticks_now_; }
Alexei Svitkine (slow) 2013/02/05 02:29:07 Nits: - OVERRIDE - put method body on a new line
MAD 2013/02/05 15:56:00 Done.
47 base::TimeTicks ticks_now_;
48 base::Time now_;
49 };
50
51 } // namespace.
52
53 TEST(NetworkTimeTrackerTest, ProperTimeTracking) {
54 NetworkTimeTrackerTest network_time_tracker;
55
56 // Should not return a value before UpdateNetworkTime gets called.
57 base::Time network_time;
58 base::TimeDelta uncertainty;
59 EXPECT_FALSE(network_time_tracker.GetNetworkTime(&network_time,
60 &uncertainty));
61
62 network_time_tracker.UpdateNetworkTime(
63 network_time_tracker.now(),
64 base::TimeDelta::FromMilliseconds(kResolution1),
65 base::TimeDelta::FromMilliseconds(kLatency1));
66 network_time_tracker.ValidateExpectedTime();
67
68 // Fake a wait for kPseudoSleepTime1 to make sure we keep tracking.
69 network_time_tracker.AddToTicksNow(kPseudoSleepTime1);
70 network_time_tracker.ValidateExpectedTime();
71
72 // Update the time with a new now value and kLatency2.
73 network_time_tracker.UpdateNetworkTime(
74 network_time_tracker.now(),
75 base::TimeDelta::FromMilliseconds(kResolution2),
76 base::TimeDelta::FromMilliseconds(kLatency2));
77
78 // Fake a wait for kPseudoSleepTime2 to make sure we keep tracking still.
79 network_time_tracker.AddToTicksNow(kPseudoSleepTime2);
80 network_time_tracker.ValidateExpectedTime();
81 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698