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

Side by Side Diff: metrics_daemon_test.cc

Issue 2576005: Update metrics_daemon to use base/time.h instead of time_t directly. (Closed) Base URL: ssh://git@chromiumos-git/chromeos
Patch Set: Remove unused constant. Created 10 years, 6 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
« no previous file with comments | « metrics_daemon.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "metrics_daemon.h" 5 #include "metrics_daemon.h"
6 #include "metrics_library_mock.h" 6 #include "metrics_library_mock.h"
7 7
8 #include <sys/file.h> 8 #include <sys/file.h>
9 9
10 #include <base/eintr_wrapper.h> 10 #include <base/eintr_wrapper.h>
11 #include <base/file_util.h> 11 #include <base/file_util.h>
12 #include <base/logging.h> 12 #include <base/logging.h>
13 #include <base/string_util.h> 13 #include <base/string_util.h>
14 #include <gtest/gtest.h> 14 #include <gtest/gtest.h>
15 15
16 using base::Time;
17 using base::TimeTicks;
16 using ::testing::Mock; 18 using ::testing::Mock;
17 using ::testing::Return; 19 using ::testing::Return;
18 using ::testing::StrictMock; 20 using ::testing::StrictMock;
19 21
20 static const char kTestDailyUseRecordFile[] = "daily-usage-test"; 22 static const char kTestDailyUseRecordFile[] = "daily-usage-test";
21 static const char kDoesNotExistFile[] = "/does/not/exist"; 23 static const char kDoesNotExistFile[] = "/does/not/exist";
22 24
23 static const int kSecondsPerDay = 24 * 60 * 60; 25 static const int kSecondsPerDay = 24 * 60 * 60;
24 26
27 // This class allows a TimeTicks object to be initialized with seconds
28 // (rather than microseconds) through the protected TimeTicks(int64)
29 // constructor.
30 class TestTicks : public TimeTicks {
31 public:
32 TestTicks(int64 seconds)
33 : TimeTicks(seconds * Time::kMicrosecondsPerSecond) {}
34 };
35
36 // Overloaded for test failure printing purposes.
37 static std::ostream& operator<<(std::ostream& o, const TimeTicks& ticks) {
38 o << ticks.ToInternalValue() << "us";
39 return o;
40 };
41
42 // Overloaded for test failure printing purposes.
43 static std::ostream& operator<<(std::ostream& o, const Time& time) {
44 o << time.ToInternalValue() << "us";
45 return o;
46 };
47
25 class MetricsDaemonTest : public testing::Test { 48 class MetricsDaemonTest : public testing::Test {
26 protected: 49 protected:
27 virtual void SetUp() { 50 virtual void SetUp() {
28 EXPECT_EQ(NULL, daemon_.daily_use_record_file_); 51 EXPECT_EQ(NULL, daemon_.daily_use_record_file_);
29 daemon_.Init(true, &metrics_lib_); 52 daemon_.Init(true, &metrics_lib_);
53
54 // Tests constructor initialization. Switches to a test daily use
55 // record file.
30 EXPECT_TRUE(NULL != daemon_.daily_use_record_file_); 56 EXPECT_TRUE(NULL != daemon_.daily_use_record_file_);
31 daemon_.daily_use_record_file_ = kTestDailyUseRecordFile; 57 daemon_.daily_use_record_file_ = kTestDailyUseRecordFile;
58 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
59 EXPECT_EQ(0, daemon_.daily_use_day_last_);
60 EXPECT_FALSE(daemon_.user_active_);
61 EXPECT_TRUE(daemon_.user_active_last_.is_null());
62 EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_);
63 EXPECT_TRUE(daemon_.network_state_last_.is_null());
64 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_);
65 EXPECT_EQ(MetricsDaemon::kUnknownSessionState, daemon_.session_state_);
32 66
33 // The test fixture object will be used by the log message handler. 67 // The test fixture object will be used by the log message handler.
34 daemon_test_ = this; 68 daemon_test_ = this;
35 logging::SetLogMessageHandler(HandleLogMessages); 69 logging::SetLogMessageHandler(HandleLogMessages);
36 } 70 }
37 71
38 virtual void TearDown() { 72 virtual void TearDown() {
39 logging::SetLogMessageHandler(NULL); 73 logging::SetLogMessageHandler(NULL);
40 daemon_test_ = NULL; 74 daemon_test_ = NULL;
41 file_util::Delete(FilePath(kTestDailyUseRecordFile), false); 75 file_util::Delete(FilePath(kTestDailyUseRecordFile), false);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 111
78 // Adds a metrics library mock expectation that the specified time 112 // Adds a metrics library mock expectation that the specified time
79 // to network dropping metric will be generated. 113 // to network dropping metric will be generated.
80 void ExpectTimeToNetworkDropMetric(int sample) { 114 void ExpectTimeToNetworkDropMetric(int sample) {
81 ExpectMetric(MetricsDaemon::kMetricTimeToNetworkDropName, sample, 115 ExpectMetric(MetricsDaemon::kMetricTimeToNetworkDropName, sample,
82 MetricsDaemon::kMetricTimeToNetworkDropMin, 116 MetricsDaemon::kMetricTimeToNetworkDropMin,
83 MetricsDaemon::kMetricTimeToNetworkDropMax, 117 MetricsDaemon::kMetricTimeToNetworkDropMax,
84 MetricsDaemon::kMetricTimeToNetworkDropBuckets); 118 MetricsDaemon::kMetricTimeToNetworkDropBuckets);
85 } 119 }
86 120
121 Time TestTime(int64 seconds) {
122 return Time::FromInternalValue(seconds * Time::kMicrosecondsPerSecond);
123 }
124
87 // Asserts that the daily use record file contains the specified 125 // Asserts that the daily use record file contains the specified
88 // contents. 126 // contents.
89 testing::AssertionResult AssertDailyUseRecord(const char* expr_day, 127 testing::AssertionResult AssertDailyUseRecord(const char* expr_day,
90 const char* expr_seconds, 128 const char* expr_seconds,
91 int expected_day, 129 int expected_day,
92 int expected_seconds) { 130 int expected_seconds) {
93 int fd = HANDLE_EINTR(open(daemon_.daily_use_record_file_, O_RDONLY)); 131 int fd = HANDLE_EINTR(open(daemon_.daily_use_record_file_, O_RDONLY));
94 if (fd < 0) { 132 if (fd < 0) {
95 testing::Message msg; 133 testing::Message msg;
96 msg << "Unable to open " << daemon_.daily_use_record_file_; 134 msg << "Unable to open " << daemon_.daily_use_record_file_;
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 // created. 217 // created.
180 daemon_.daily_use_record_file_ = kDoesNotExistFile; 218 daemon_.daily_use_record_file_ = kDoesNotExistFile;
181 daemon_.LogDailyUseRecord(10, 20); 219 daemon_.LogDailyUseRecord(10, 20);
182 EXPECT_TRUE(LogContains("Unable to open the daily use file: " 220 EXPECT_TRUE(LogContains("Unable to open the daily use file: "
183 "No such file or directory")); 221 "No such file or directory"));
184 EXPECT_EQ(0, daemon_.daily_use_day_last_); 222 EXPECT_EQ(0, daemon_.daily_use_day_last_);
185 file_util::Delete(FilePath(kDoesNotExistFile), false); 223 file_util::Delete(FilePath(kDoesNotExistFile), false);
186 } 224 }
187 225
188 TEST_F(MetricsDaemonTest, LogDailyUseRecordOnLogin) { 226 TEST_F(MetricsDaemonTest, LogDailyUseRecordOnLogin) {
189 EXPECT_EQ(0, daemon_.daily_use_day_last_);
190 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
191
192 daemon_.LogDailyUseRecord(/* day */ 5, /* seconds */ 120); 227 daemon_.LogDailyUseRecord(/* day */ 5, /* seconds */ 120);
193 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 5, /* seconds */ 120); 228 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 5, /* seconds */ 120);
194 EXPECT_EQ(5, daemon_.daily_use_day_last_); 229 EXPECT_EQ(5, daemon_.daily_use_day_last_);
195 230
196 daemon_.LogDailyUseRecord(/* day */ 5, /* seconds */ 0); 231 daemon_.LogDailyUseRecord(/* day */ 5, /* seconds */ 0);
197 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 5, /* seconds */ 120); 232 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 5, /* seconds */ 120);
198 EXPECT_EQ(5, daemon_.daily_use_day_last_); 233 EXPECT_EQ(5, daemon_.daily_use_day_last_);
199 234
200 daemon_.LogDailyUseRecord(/* day */ 5, /* seconds */ 240); 235 daemon_.LogDailyUseRecord(/* day */ 5, /* seconds */ 240);
201 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 5, /* seconds */ 360); 236 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 5, /* seconds */ 360);
202 EXPECT_EQ(5, daemon_.daily_use_day_last_); 237 EXPECT_EQ(5, daemon_.daily_use_day_last_);
203 238
204 ExpectDailyUseTimeMetric(/* sample */ 6); 239 ExpectDailyUseTimeMetric(/* sample */ 6);
205 daemon_.LogDailyUseRecord(/* day */ 6, /* seconds */ 0); 240 daemon_.LogDailyUseRecord(/* day */ 6, /* seconds */ 0);
206 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); 241 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
207 EXPECT_EQ(6, daemon_.daily_use_day_last_); 242 EXPECT_EQ(6, daemon_.daily_use_day_last_);
208 } 243 }
209 244
210 TEST_F(MetricsDaemonTest, LogDailyUseRecordRoundDown) { 245 TEST_F(MetricsDaemonTest, LogDailyUseRecordRoundDown) {
211 EXPECT_EQ(0, daemon_.daily_use_day_last_);
212 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
213
214 daemon_.LogDailyUseRecord(/* day */ 7, /* seconds */ 89); 246 daemon_.LogDailyUseRecord(/* day */ 7, /* seconds */ 89);
215 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 7, /* seconds */ 89); 247 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 7, /* seconds */ 89);
216 EXPECT_EQ(7, daemon_.daily_use_day_last_); 248 EXPECT_EQ(7, daemon_.daily_use_day_last_);
217 249
218 ExpectDailyUseTimeMetric(/* sample */ 1); 250 ExpectDailyUseTimeMetric(/* sample */ 1);
219 daemon_.LogDailyUseRecord(/* day */ 6, /* seconds */ 15); 251 daemon_.LogDailyUseRecord(/* day */ 6, /* seconds */ 15);
220 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 6, /* seconds */ 15); 252 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 6, /* seconds */ 15);
221 EXPECT_EQ(6, daemon_.daily_use_day_last_); 253 EXPECT_EQ(6, daemon_.daily_use_day_last_);
222 } 254 }
223 255
224 TEST_F(MetricsDaemonTest, LogDailyUseRecordRoundUp) { 256 TEST_F(MetricsDaemonTest, LogDailyUseRecordRoundUp) {
225 EXPECT_EQ(0, daemon_.daily_use_day_last_);
226 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
227
228 daemon_.LogDailyUseRecord(/* day */ 6, /* seconds */ 0); 257 daemon_.LogDailyUseRecord(/* day */ 6, /* seconds */ 0);
229 EXPECT_EQ(6, daemon_.daily_use_day_last_); 258 EXPECT_EQ(6, daemon_.daily_use_day_last_);
230 259
231 // Tests rounding use time to the closest minute. 260 // Tests rounding use time to the closest minute.
232 daemon_.LogDailyUseRecord(/* day */ 6, /* seconds */ 90); 261 daemon_.LogDailyUseRecord(/* day */ 6, /* seconds */ 90);
233 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 6, /* seconds */ 90); 262 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 6, /* seconds */ 90);
234 EXPECT_EQ(6, daemon_.daily_use_day_last_); 263 EXPECT_EQ(6, daemon_.daily_use_day_last_);
235 264
236 ExpectDailyUseTimeMetric(/* sample */ 2); 265 ExpectDailyUseTimeMetric(/* sample */ 2);
237 daemon_.LogDailyUseRecord(/* day */ 7, /* seconds */ 89); 266 daemon_.LogDailyUseRecord(/* day */ 7, /* seconds */ 89);
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 msg = NewDBusSignalString("/", 356 msg = NewDBusSignalString("/",
328 "org.chromium.UnknownService.Manager", 357 "org.chromium.UnknownService.Manager",
329 "StateChanged", 358 "StateChanged",
330 "randomstate"); 359 "randomstate");
331 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_); 360 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_);
332 EXPECT_EQ(DBUS_HANDLER_RESULT_NOT_YET_HANDLED, res); 361 EXPECT_EQ(DBUS_HANDLER_RESULT_NOT_YET_HANDLED, res);
333 DeleteDBusMessage(msg); 362 DeleteDBusMessage(msg);
334 } 363 }
335 364
336 TEST_F(MetricsDaemonTest, NetStateChangedSimpleDrop) { 365 TEST_F(MetricsDaemonTest, NetStateChangedSimpleDrop) {
337 EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_); 366 daemon_.NetStateChanged("online", TestTicks(10));
338 EXPECT_EQ(0, daemon_.network_state_last_);
339 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_);
340
341 daemon_.NetStateChanged("online", /* now */ 10);
342 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_); 367 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_);
343 EXPECT_EQ(10, daemon_.network_state_last_); 368 EXPECT_EQ(TestTicks(10), daemon_.network_state_last_);
344 369
345 ExpectTimeToNetworkDropMetric(20); 370 ExpectTimeToNetworkDropMetric(20);
346 daemon_.NetStateChanged("offline", /* now */ 30); 371 daemon_.NetStateChanged("offline", TestTicks(30));
347 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_); 372 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_);
348 EXPECT_EQ(30, daemon_.network_state_last_); 373 EXPECT_EQ(TestTicks(30), daemon_.network_state_last_);
349 } 374 }
350 375
351 TEST_F(MetricsDaemonTest, NetStateChangedSuspend) { 376 TEST_F(MetricsDaemonTest, NetStateChangedSuspend) {
377 daemon_.NetStateChanged("offline", TestTicks(30));
378 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_);
379 EXPECT_EQ(TestTicks(30), daemon_.network_state_last_);
380
381 daemon_.NetStateChanged("online", TestTicks(60));
382 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_);
383 EXPECT_EQ(TestTicks(60), daemon_.network_state_last_);
384
385 daemon_.power_state_ = MetricsDaemon::kPowerStateMem;
386 daemon_.NetStateChanged("offline", TestTicks(85));
387 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_);
388 EXPECT_EQ(TestTicks(85), daemon_.network_state_last_);
389
390 daemon_.NetStateChanged("somestate", TestTicks(90));
352 EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_); 391 EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_);
353 EXPECT_EQ(0, daemon_.network_state_last_); 392 EXPECT_EQ(TestTicks(90), daemon_.network_state_last_);
354 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_);
355 393
356 daemon_.NetStateChanged("offline", /* now */ 30); 394 daemon_.NetStateChanged("offline", TestTicks(95));
357 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_); 395 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_);
358 EXPECT_EQ(30, daemon_.network_state_last_); 396 EXPECT_EQ(TestTicks(95), daemon_.network_state_last_);
359 397
360 daemon_.NetStateChanged("online", /* now */ 60); 398 daemon_.power_state_ = MetricsDaemon::kPowerStateOn;
399 daemon_.NetStateChanged("online", TestTicks(105));
361 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_); 400 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_);
362 EXPECT_EQ(60, daemon_.network_state_last_); 401 EXPECT_EQ(TestTicks(105), daemon_.network_state_last_);
363
364 daemon_.PowerStateChanged("mem", /* now */ 80);
365 EXPECT_EQ(MetricsDaemon::kPowerStateMem, daemon_.power_state_);
366 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_);
367 EXPECT_EQ(60, daemon_.network_state_last_);
368
369 daemon_.NetStateChanged("offline", /* now */ 85);
370 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_);
371 EXPECT_EQ(85, daemon_.network_state_last_);
372
373 daemon_.NetStateChanged("somestate", /* now */ 90);
374 EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_);
375 EXPECT_EQ(90, daemon_.network_state_last_);
376
377 daemon_.NetStateChanged("offline", /* now */ 95);
378 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_);
379 EXPECT_EQ(95, daemon_.network_state_last_);
380
381 daemon_.PowerStateChanged("on", /* now */ 100);
382 EXPECT_EQ(MetricsDaemon::kPowerStateOn, daemon_.power_state_);
383 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_);
384 EXPECT_EQ(95, daemon_.network_state_last_);
385
386 daemon_.NetStateChanged("online", /* now */ 105);
387 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_);
388 EXPECT_EQ(105, daemon_.network_state_last_);
389 402
390 ExpectTimeToNetworkDropMetric(3); 403 ExpectTimeToNetworkDropMetric(3);
391 daemon_.NetStateChanged("offline", /* now */ 108); 404 daemon_.NetStateChanged("offline", TestTicks(108));
392 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_); 405 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_);
393 EXPECT_EQ(108, daemon_.network_state_last_); 406 EXPECT_EQ(TestTicks(108), daemon_.network_state_last_);
394 } 407 }
395 408
396 TEST_F(MetricsDaemonTest, PowerStateChanged) { 409 TEST_F(MetricsDaemonTest, PowerStateChanged) {
397 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_); 410 daemon_.SetUserActiveState(/* active */ true,
398 EXPECT_FALSE(daemon_.user_active_); 411 TestTime(7 * kSecondsPerDay + 15));
399 EXPECT_EQ(0, daemon_.user_active_last_);
400 EXPECT_EQ(0, daemon_.daily_use_day_last_);
401 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
402
403 daemon_.SetUserActiveState(/* active */ true, 7 * kSecondsPerDay + 15);
404 EXPECT_TRUE(daemon_.user_active_); 412 EXPECT_TRUE(daemon_.user_active_);
405 EXPECT_EQ(7 * kSecondsPerDay + 15, daemon_.user_active_last_); 413 EXPECT_EQ(TestTime(7 * kSecondsPerDay + 15), daemon_.user_active_last_);
406 EXPECT_EQ(7, daemon_.daily_use_day_last_); 414 EXPECT_EQ(7, daemon_.daily_use_day_last_);
407 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); 415 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
408 416
409 daemon_.PowerStateChanged("mem", 7 * kSecondsPerDay + 45); 417 daemon_.PowerStateChanged("mem", TestTime(7 * kSecondsPerDay + 45));
410 EXPECT_EQ(MetricsDaemon::kPowerStateMem, daemon_.power_state_); 418 EXPECT_EQ(MetricsDaemon::kPowerStateMem, daemon_.power_state_);
411 EXPECT_FALSE(daemon_.user_active_); 419 EXPECT_FALSE(daemon_.user_active_);
412 EXPECT_EQ(7 * kSecondsPerDay + 45, daemon_.user_active_last_); 420 EXPECT_EQ(TestTime(7 * kSecondsPerDay + 45), daemon_.user_active_last_);
413 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 7, /* seconds */ 30); 421 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 7, /* seconds */ 30);
414 422
415 daemon_.PowerStateChanged("on", 7 * kSecondsPerDay + 85); 423 daemon_.PowerStateChanged("on", TestTime(7 * kSecondsPerDay + 85));
416 EXPECT_EQ(MetricsDaemon::kPowerStateOn, daemon_.power_state_); 424 EXPECT_EQ(MetricsDaemon::kPowerStateOn, daemon_.power_state_);
417 EXPECT_FALSE(daemon_.user_active_); 425 EXPECT_FALSE(daemon_.user_active_);
418 EXPECT_EQ(7 * kSecondsPerDay + 45, daemon_.user_active_last_); 426 EXPECT_EQ(TestTime(7 * kSecondsPerDay + 45), daemon_.user_active_last_);
419 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 7, /* seconds */ 30); 427 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 7, /* seconds */ 30);
420 428
421 daemon_.PowerStateChanged("otherstate", 7 * kSecondsPerDay + 185); 429 daemon_.PowerStateChanged("otherstate", TestTime(7 * kSecondsPerDay + 185));
422 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_); 430 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_);
423 EXPECT_FALSE(daemon_.user_active_); 431 EXPECT_FALSE(daemon_.user_active_);
424 EXPECT_EQ(7 * kSecondsPerDay + 185, daemon_.user_active_last_); 432 EXPECT_EQ(TestTime(7 * kSecondsPerDay + 185), daemon_.user_active_last_);
425 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 7, /* seconds */ 30); 433 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 7, /* seconds */ 30);
426 } 434 }
427 435
428 TEST_F(MetricsDaemonTest, ScreenSaverStateChanged) { 436 TEST_F(MetricsDaemonTest, ScreenSaverStateChanged) {
429 EXPECT_EQ(MetricsDaemon::kUnknownScreenSaverState, 437 EXPECT_EQ(MetricsDaemon::kUnknownScreenSaverState,
430 daemon_.screensaver_state_); 438 daemon_.screensaver_state_);
431 EXPECT_FALSE(daemon_.user_active_);
432 EXPECT_EQ(0, daemon_.user_active_last_);
433 EXPECT_EQ(0, daemon_.daily_use_day_last_);
434 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
435 439
436 daemon_.ScreenSaverStateChanged("locked", 5 * kSecondsPerDay + 10); 440 daemon_.ScreenSaverStateChanged("locked",
441 TestTime(5 * kSecondsPerDay + 10));
437 EXPECT_EQ(MetricsDaemon::kScreenSaverStateLocked, 442 EXPECT_EQ(MetricsDaemon::kScreenSaverStateLocked,
438 daemon_.screensaver_state_); 443 daemon_.screensaver_state_);
439 EXPECT_FALSE(daemon_.user_active_); 444 EXPECT_FALSE(daemon_.user_active_);
440 EXPECT_EQ(5 * kSecondsPerDay + 10, daemon_.user_active_last_); 445 EXPECT_EQ(TestTime(5 * kSecondsPerDay + 10), daemon_.user_active_last_);
441 EXPECT_EQ(5, daemon_.daily_use_day_last_); 446 EXPECT_EQ(5, daemon_.daily_use_day_last_);
442 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); 447 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
443 448
444 daemon_.ScreenSaverStateChanged("unlocked", 5 * kSecondsPerDay + 100); 449 daemon_.ScreenSaverStateChanged("unlocked",
450 TestTime(5 * kSecondsPerDay + 100));
445 EXPECT_EQ(MetricsDaemon::kScreenSaverStateUnlocked, 451 EXPECT_EQ(MetricsDaemon::kScreenSaverStateUnlocked,
446 daemon_.screensaver_state_); 452 daemon_.screensaver_state_);
447 EXPECT_TRUE(daemon_.user_active_); 453 EXPECT_TRUE(daemon_.user_active_);
448 EXPECT_EQ(5 * kSecondsPerDay + 100, daemon_.user_active_last_); 454 EXPECT_EQ(TestTime(5 * kSecondsPerDay + 100), daemon_.user_active_last_);
449 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); 455 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
450 456
451 daemon_.ScreenSaverStateChanged("otherstate", 5 * kSecondsPerDay + 300); 457 daemon_.ScreenSaverStateChanged("otherstate",
458 TestTime(5 * kSecondsPerDay + 300));
452 EXPECT_EQ(MetricsDaemon::kUnknownScreenSaverState, 459 EXPECT_EQ(MetricsDaemon::kUnknownScreenSaverState,
453 daemon_.screensaver_state_); 460 daemon_.screensaver_state_);
454 EXPECT_FALSE(daemon_.user_active_); 461 EXPECT_FALSE(daemon_.user_active_);
455 EXPECT_EQ(5 * kSecondsPerDay + 300, daemon_.user_active_last_); 462 EXPECT_EQ(TestTime(5 * kSecondsPerDay + 300), daemon_.user_active_last_);
456 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 5, /* seconds */ 200); 463 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 5, /* seconds */ 200);
457 } 464 }
458 465
459 TEST_F(MetricsDaemonTest, SendMetric) { 466 TEST_F(MetricsDaemonTest, SendMetric) {
460 ExpectMetric("Dummy.Metric", 3, 1, 100, 50); 467 ExpectMetric("Dummy.Metric", 3, 1, 100, 50);
461 daemon_.SendMetric("Dummy.Metric", /* sample */ 3, 468 daemon_.SendMetric("Dummy.Metric", /* sample */ 3,
462 /* min */ 1, /* max */ 100, /* buckets */ 50); 469 /* min */ 1, /* max */ 100, /* buckets */ 50);
463 } 470 }
464 471
465 TEST_F(MetricsDaemonTest, SessionStateChanged) { 472 TEST_F(MetricsDaemonTest, SessionStateChanged) {
466 EXPECT_EQ(MetricsDaemon::kUnknownSessionState, daemon_.session_state_); 473 daemon_.SessionStateChanged("started", TestTime(15 * kSecondsPerDay + 20));
467 EXPECT_FALSE(daemon_.user_active_);
468 EXPECT_EQ(0, daemon_.user_active_last_);
469 EXPECT_EQ(0, daemon_.daily_use_day_last_);
470 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
471
472 daemon_.SessionStateChanged("started", 15 * kSecondsPerDay + 20);
473 EXPECT_EQ(MetricsDaemon::kSessionStateStarted, daemon_.session_state_); 474 EXPECT_EQ(MetricsDaemon::kSessionStateStarted, daemon_.session_state_);
474 EXPECT_TRUE(daemon_.user_active_); 475 EXPECT_TRUE(daemon_.user_active_);
475 EXPECT_EQ(15 * kSecondsPerDay + 20, daemon_.user_active_last_); 476 EXPECT_EQ(TestTime(15 * kSecondsPerDay + 20), daemon_.user_active_last_);
476 EXPECT_EQ(15, daemon_.daily_use_day_last_); 477 EXPECT_EQ(15, daemon_.daily_use_day_last_);
477 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); 478 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
478 479
479 daemon_.SessionStateChanged("stopped", 15 * kSecondsPerDay + 150); 480 daemon_.SessionStateChanged("stopped", TestTime(15 * kSecondsPerDay + 150));
480 EXPECT_EQ(MetricsDaemon::kSessionStateStopped, daemon_.session_state_); 481 EXPECT_EQ(MetricsDaemon::kSessionStateStopped, daemon_.session_state_);
481 EXPECT_FALSE(daemon_.user_active_); 482 EXPECT_FALSE(daemon_.user_active_);
482 EXPECT_EQ(15 * kSecondsPerDay + 150, daemon_.user_active_last_); 483 EXPECT_EQ(TestTime(15 * kSecondsPerDay + 150), daemon_.user_active_last_);
483 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 15, /* seconds */ 130); 484 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 15, /* seconds */ 130);
484 485
485 daemon_.SessionStateChanged("otherstate", 15 * kSecondsPerDay + 300); 486 daemon_.SessionStateChanged("otherstate",
487 TestTime(15 * kSecondsPerDay + 300));
486 EXPECT_EQ(MetricsDaemon::kUnknownSessionState, daemon_.session_state_); 488 EXPECT_EQ(MetricsDaemon::kUnknownSessionState, daemon_.session_state_);
487 EXPECT_FALSE(daemon_.user_active_); 489 EXPECT_FALSE(daemon_.user_active_);
488 EXPECT_EQ(15 * kSecondsPerDay + 300, daemon_.user_active_last_); 490 EXPECT_EQ(TestTime(15 * kSecondsPerDay + 300), daemon_.user_active_last_);
489 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 15, /* seconds */ 130); 491 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 15, /* seconds */ 130);
490 } 492 }
491 493
492 TEST_F(MetricsDaemonTest, SetUserActiveStateSendOnLogin) { 494 TEST_F(MetricsDaemonTest, SetUserActiveStateSendOnLogin) {
495 daemon_.SetUserActiveState(/* active */ false,
496 TestTime(5 * kSecondsPerDay + 10));
493 EXPECT_FALSE(daemon_.user_active_); 497 EXPECT_FALSE(daemon_.user_active_);
494 EXPECT_EQ(0, daemon_.user_active_last_); 498 EXPECT_EQ(TestTime(5 * kSecondsPerDay + 10), daemon_.user_active_last_);
495 EXPECT_EQ(0, daemon_.daily_use_day_last_);
496 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
497
498 daemon_.SetUserActiveState(/* active */ false, 5 * kSecondsPerDay + 10);
499 EXPECT_FALSE(daemon_.user_active_);
500 EXPECT_EQ(5 * kSecondsPerDay + 10, daemon_.user_active_last_);
501 EXPECT_EQ(5, daemon_.daily_use_day_last_); 499 EXPECT_EQ(5, daemon_.daily_use_day_last_);
502 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); 500 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
503 501
504 daemon_.SetUserActiveState(/* active */ true, 6 * kSecondsPerDay + 20); 502 daemon_.SetUserActiveState(/* active */ true,
503 TestTime(6 * kSecondsPerDay + 20));
505 EXPECT_TRUE(daemon_.user_active_); 504 EXPECT_TRUE(daemon_.user_active_);
506 EXPECT_EQ(6 * kSecondsPerDay + 20, daemon_.user_active_last_); 505 EXPECT_EQ(TestTime(6 * kSecondsPerDay + 20), daemon_.user_active_last_);
507 EXPECT_EQ(6, daemon_.daily_use_day_last_); 506 EXPECT_EQ(6, daemon_.daily_use_day_last_);
508 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); 507 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
509 508
510 daemon_.SetUserActiveState(/* active */ true, 6 * kSecondsPerDay + 120); 509 daemon_.SetUserActiveState(/* active */ true,
510 TestTime(6 * kSecondsPerDay + 120));
511 EXPECT_TRUE(daemon_.user_active_); 511 EXPECT_TRUE(daemon_.user_active_);
512 EXPECT_EQ(6 * kSecondsPerDay + 120, daemon_.user_active_last_); 512 EXPECT_EQ(TestTime(6 * kSecondsPerDay + 120), daemon_.user_active_last_);
513 EXPECT_EQ(6, daemon_.daily_use_day_last_); 513 EXPECT_EQ(6, daemon_.daily_use_day_last_);
514 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 6, /* seconds */ 100); 514 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 6, /* seconds */ 100);
515 515
516 daemon_.SetUserActiveState(/* active */ false, 6 * kSecondsPerDay + 220); 516 daemon_.SetUserActiveState(/* active */ false,
517 TestTime(6 * kSecondsPerDay + 220));
517 EXPECT_FALSE(daemon_.user_active_); 518 EXPECT_FALSE(daemon_.user_active_);
518 EXPECT_EQ(6 * kSecondsPerDay + 220, daemon_.user_active_last_); 519 EXPECT_EQ(TestTime(6 * kSecondsPerDay + 220), daemon_.user_active_last_);
519 EXPECT_EQ(6, daemon_.daily_use_day_last_); 520 EXPECT_EQ(6, daemon_.daily_use_day_last_);
520 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 6, /* seconds */ 200); 521 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 6, /* seconds */ 200);
521 522
522 ExpectDailyUseTimeMetric(/* sample */ 3); 523 ExpectDailyUseTimeMetric(/* sample */ 3);
523 daemon_.SetUserActiveState(/* active */ true, 8 * kSecondsPerDay - 300); 524 daemon_.SetUserActiveState(/* active */ true,
525 TestTime(8 * kSecondsPerDay - 300));
524 EXPECT_TRUE(daemon_.user_active_); 526 EXPECT_TRUE(daemon_.user_active_);
525 EXPECT_EQ(8 * kSecondsPerDay - 300, daemon_.user_active_last_); 527 EXPECT_EQ(TestTime(8 * kSecondsPerDay - 300), daemon_.user_active_last_);
526 EXPECT_EQ(7, daemon_.daily_use_day_last_); 528 EXPECT_EQ(7, daemon_.daily_use_day_last_);
527 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); 529 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
528 } 530 }
529 531
530 TEST_F(MetricsDaemonTest, SetUserActiveStateSendOnMonitor) { 532 TEST_F(MetricsDaemonTest, SetUserActiveStateSendOnMonitor) {
531 EXPECT_FALSE(daemon_.user_active_); 533 daemon_.SetUserActiveState(/* active */ true,
532 EXPECT_EQ(0, daemon_.user_active_last_); 534 TestTime(8 * kSecondsPerDay - 300));
533 EXPECT_EQ(0, daemon_.daily_use_day_last_);
534 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
535
536 daemon_.SetUserActiveState(/* active */ true, 8 * kSecondsPerDay - 300);
537 EXPECT_TRUE(daemon_.user_active_); 535 EXPECT_TRUE(daemon_.user_active_);
538 EXPECT_EQ(8 * kSecondsPerDay - 300, daemon_.user_active_last_); 536 EXPECT_EQ(TestTime(8 * kSecondsPerDay - 300), daemon_.user_active_last_);
539 EXPECT_EQ(7, daemon_.daily_use_day_last_); 537 EXPECT_EQ(7, daemon_.daily_use_day_last_);
540 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); 538 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
541 539
542 daemon_.SetUserActiveState(/* active */ false, 8 * kSecondsPerDay + 300); 540 daemon_.SetUserActiveState(/* active */ false,
541 TestTime(8 * kSecondsPerDay + 300));
543 EXPECT_FALSE(daemon_.user_active_); 542 EXPECT_FALSE(daemon_.user_active_);
544 EXPECT_EQ(8 * kSecondsPerDay + 300, daemon_.user_active_last_); 543 EXPECT_EQ(TestTime(8 * kSecondsPerDay + 300), daemon_.user_active_last_);
545 EXPECT_EQ(8, daemon_.daily_use_day_last_); 544 EXPECT_EQ(8, daemon_.daily_use_day_last_);
546 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 8, /* seconds */ 600); 545 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 8, /* seconds */ 600);
547 546
548 daemon_.SetUserActiveState(/* active */ true, 9 * kSecondsPerDay - 400); 547 daemon_.SetUserActiveState(/* active */ true,
548 TestTime(9 * kSecondsPerDay - 200));
549 EXPECT_TRUE(daemon_.user_active_); 549 EXPECT_TRUE(daemon_.user_active_);
550 EXPECT_EQ(9 * kSecondsPerDay - 400, daemon_.user_active_last_); 550 EXPECT_EQ(TestTime(9 * kSecondsPerDay - 200), daemon_.user_active_last_);
551 EXPECT_EQ(8, daemon_.daily_use_day_last_); 551 EXPECT_EQ(8, daemon_.daily_use_day_last_);
552 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 8, /* seconds */ 600); 552 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 8, /* seconds */ 600);
553 553
554 ExpectDailyUseTimeMetric(/* sample */ 10); 554 ExpectDailyUseTimeMetric(/* sample */ 10);
555 daemon_.SetUserActiveState(/* active */ true, 9 * kSecondsPerDay + 400); 555 daemon_.SetUserActiveState(/* active */ true,
556 TestTime(9 * kSecondsPerDay + 200));
556 EXPECT_TRUE(daemon_.user_active_); 557 EXPECT_TRUE(daemon_.user_active_);
557 EXPECT_EQ(9 * kSecondsPerDay + 400, daemon_.user_active_last_); 558 EXPECT_EQ(TestTime(9 * kSecondsPerDay + 200), daemon_.user_active_last_);
558 EXPECT_EQ(9, daemon_.daily_use_day_last_); 559 EXPECT_EQ(9, daemon_.daily_use_day_last_);
559 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 9, /* seconds */ 800); 560 EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 9, /* seconds */ 400);
561 }
562
563 TEST_F(MetricsDaemonTest, SetUserActiveStateTimeJump) {
564 daemon_.SetUserActiveState(/* active */ true,
565 TestTime(10 * kSecondsPerDay + 500));
566 EXPECT_TRUE(daemon_.user_active_);
567 EXPECT_EQ(TestTime(10 * kSecondsPerDay + 500), daemon_.user_active_last_);
568 EXPECT_EQ(10, daemon_.daily_use_day_last_);
569 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
570
571 daemon_.SetUserActiveState(/* active */ true,
572 TestTime(10 * kSecondsPerDay + 300));
573 EXPECT_TRUE(daemon_.user_active_);
574 EXPECT_EQ(TestTime(10 * kSecondsPerDay + 300), daemon_.user_active_last_);
575 EXPECT_EQ(10, daemon_.daily_use_day_last_);
576 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
577
578 daemon_.SetUserActiveState(/* active */ true,
579 TestTime(10 * kSecondsPerDay + 1000));
580 EXPECT_TRUE(daemon_.user_active_);
581 EXPECT_EQ(TestTime(10 * kSecondsPerDay + 1000), daemon_.user_active_last_);
582 EXPECT_EQ(10, daemon_.daily_use_day_last_);
583 EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
560 } 584 }
561 585
562 int main(int argc, char **argv) { 586 int main(int argc, char **argv) {
563 testing::InitGoogleTest(&argc, argv); 587 testing::InitGoogleTest(&argc, argv);
564 return RUN_ALL_TESTS(); 588 return RUN_ALL_TESTS();
565 } 589 }
OLDNEW
« no previous file with comments | « metrics_daemon.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698