Index: metrics_daemon_test.cc |
diff --git a/metrics_daemon_test.cc b/metrics_daemon_test.cc |
index 2edbeda9e807cd76af83ebc9b7b7c88fe59a6c34..79be3dd5819ea31bb6a3a40d7781ad58bf81d0aa 100644 |
--- a/metrics_daemon_test.cc |
+++ b/metrics_daemon_test.cc |
@@ -13,6 +13,8 @@ |
#include <base/string_util.h> |
#include <gtest/gtest.h> |
+using base::Time; |
+using base::TimeTicks; |
using ::testing::Mock; |
using ::testing::Return; |
using ::testing::StrictMock; |
@@ -22,13 +24,45 @@ static const char kDoesNotExistFile[] = "/does/not/exist"; |
static const int kSecondsPerDay = 24 * 60 * 60; |
+// This class allows a TimeTicks object to be initialized with seconds |
+// (rather than microseconds) through the protected TimeTicks(int64) |
+// constructor. |
+class TestTicks : public TimeTicks { |
+ public: |
+ TestTicks(int64 seconds) |
+ : TimeTicks(seconds * Time::kMicrosecondsPerSecond) {} |
+}; |
+ |
+// Overloaded for test failure printing purposes. |
+static std::ostream& operator<<(std::ostream& o, const TimeTicks& ticks) { |
+ o << ticks.ToInternalValue() << "us"; |
+ return o; |
+}; |
+ |
+// Overloaded for test failure printing purposes. |
+static std::ostream& operator<<(std::ostream& o, const Time& time) { |
+ o << time.ToInternalValue() << "us"; |
+ return o; |
+}; |
+ |
class MetricsDaemonTest : public testing::Test { |
protected: |
virtual void SetUp() { |
EXPECT_EQ(NULL, daemon_.daily_use_record_file_); |
daemon_.Init(true, &metrics_lib_); |
+ |
+ // Tests constructor initialization. Switches to a test daily use |
+ // record file. |
EXPECT_TRUE(NULL != daemon_.daily_use_record_file_); |
daemon_.daily_use_record_file_ = kTestDailyUseRecordFile; |
+ EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
+ EXPECT_EQ(0, daemon_.daily_use_day_last_); |
+ EXPECT_FALSE(daemon_.user_active_); |
+ EXPECT_TRUE(daemon_.user_active_last_.is_null()); |
+ EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_); |
+ EXPECT_TRUE(daemon_.network_state_last_.is_null()); |
+ EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_); |
+ EXPECT_EQ(MetricsDaemon::kUnknownSessionState, daemon_.session_state_); |
// The test fixture object will be used by the log message handler. |
daemon_test_ = this; |
@@ -84,6 +118,10 @@ class MetricsDaemonTest : public testing::Test { |
MetricsDaemon::kMetricTimeToNetworkDropBuckets); |
} |
+ Time TestTime(int64 seconds) { |
+ return Time::FromInternalValue(seconds * Time::kMicrosecondsPerSecond); |
+ } |
+ |
// Asserts that the daily use record file contains the specified |
// contents. |
testing::AssertionResult AssertDailyUseRecord(const char* expr_day, |
@@ -186,9 +224,6 @@ TEST_F(MetricsDaemonTest, LogDailyUseRecordBadFileLocation) { |
} |
TEST_F(MetricsDaemonTest, LogDailyUseRecordOnLogin) { |
- EXPECT_EQ(0, daemon_.daily_use_day_last_); |
- EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
- |
daemon_.LogDailyUseRecord(/* day */ 5, /* seconds */ 120); |
EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 5, /* seconds */ 120); |
EXPECT_EQ(5, daemon_.daily_use_day_last_); |
@@ -208,9 +243,6 @@ TEST_F(MetricsDaemonTest, LogDailyUseRecordOnLogin) { |
} |
TEST_F(MetricsDaemonTest, LogDailyUseRecordRoundDown) { |
- EXPECT_EQ(0, daemon_.daily_use_day_last_); |
- EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
- |
daemon_.LogDailyUseRecord(/* day */ 7, /* seconds */ 89); |
EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 7, /* seconds */ 89); |
EXPECT_EQ(7, daemon_.daily_use_day_last_); |
@@ -222,9 +254,6 @@ TEST_F(MetricsDaemonTest, LogDailyUseRecordRoundDown) { |
} |
TEST_F(MetricsDaemonTest, LogDailyUseRecordRoundUp) { |
- EXPECT_EQ(0, daemon_.daily_use_day_last_); |
- EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
- |
daemon_.LogDailyUseRecord(/* day */ 6, /* seconds */ 0); |
EXPECT_EQ(6, daemon_.daily_use_day_last_); |
@@ -334,125 +363,103 @@ TEST_F(MetricsDaemonTest, MessageFilter) { |
} |
TEST_F(MetricsDaemonTest, NetStateChangedSimpleDrop) { |
- EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_); |
- EXPECT_EQ(0, daemon_.network_state_last_); |
- EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_); |
- |
- daemon_.NetStateChanged("online", /* now */ 10); |
+ daemon_.NetStateChanged("online", TestTicks(10)); |
EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_); |
- EXPECT_EQ(10, daemon_.network_state_last_); |
+ EXPECT_EQ(TestTicks(10), daemon_.network_state_last_); |
ExpectTimeToNetworkDropMetric(20); |
- daemon_.NetStateChanged("offline", /* now */ 30); |
+ daemon_.NetStateChanged("offline", TestTicks(30)); |
EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_); |
- EXPECT_EQ(30, daemon_.network_state_last_); |
+ EXPECT_EQ(TestTicks(30), daemon_.network_state_last_); |
} |
TEST_F(MetricsDaemonTest, NetStateChangedSuspend) { |
- EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_); |
- EXPECT_EQ(0, daemon_.network_state_last_); |
- EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_); |
- |
- daemon_.NetStateChanged("offline", /* now */ 30); |
+ daemon_.NetStateChanged("offline", TestTicks(30)); |
EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_); |
- EXPECT_EQ(30, daemon_.network_state_last_); |
+ EXPECT_EQ(TestTicks(30), daemon_.network_state_last_); |
- daemon_.NetStateChanged("online", /* now */ 60); |
+ daemon_.NetStateChanged("online", TestTicks(60)); |
EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_); |
- EXPECT_EQ(60, daemon_.network_state_last_); |
+ EXPECT_EQ(TestTicks(60), daemon_.network_state_last_); |
- daemon_.PowerStateChanged("mem", /* now */ 80); |
- EXPECT_EQ(MetricsDaemon::kPowerStateMem, daemon_.power_state_); |
- EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_); |
- EXPECT_EQ(60, daemon_.network_state_last_); |
- |
- daemon_.NetStateChanged("offline", /* now */ 85); |
+ daemon_.power_state_ = MetricsDaemon::kPowerStateMem; |
+ daemon_.NetStateChanged("offline", TestTicks(85)); |
EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_); |
- EXPECT_EQ(85, daemon_.network_state_last_); |
+ EXPECT_EQ(TestTicks(85), daemon_.network_state_last_); |
- daemon_.NetStateChanged("somestate", /* now */ 90); |
+ daemon_.NetStateChanged("somestate", TestTicks(90)); |
EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_); |
- EXPECT_EQ(90, daemon_.network_state_last_); |
+ EXPECT_EQ(TestTicks(90), daemon_.network_state_last_); |
- daemon_.NetStateChanged("offline", /* now */ 95); |
+ daemon_.NetStateChanged("offline", TestTicks(95)); |
EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_); |
- EXPECT_EQ(95, daemon_.network_state_last_); |
+ EXPECT_EQ(TestTicks(95), daemon_.network_state_last_); |
- daemon_.PowerStateChanged("on", /* now */ 100); |
- EXPECT_EQ(MetricsDaemon::kPowerStateOn, daemon_.power_state_); |
- EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_); |
- EXPECT_EQ(95, daemon_.network_state_last_); |
- |
- daemon_.NetStateChanged("online", /* now */ 105); |
+ daemon_.power_state_ = MetricsDaemon::kPowerStateOn; |
+ daemon_.NetStateChanged("online", TestTicks(105)); |
EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_); |
- EXPECT_EQ(105, daemon_.network_state_last_); |
+ EXPECT_EQ(TestTicks(105), daemon_.network_state_last_); |
ExpectTimeToNetworkDropMetric(3); |
- daemon_.NetStateChanged("offline", /* now */ 108); |
+ daemon_.NetStateChanged("offline", TestTicks(108)); |
EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_); |
- EXPECT_EQ(108, daemon_.network_state_last_); |
+ EXPECT_EQ(TestTicks(108), daemon_.network_state_last_); |
} |
TEST_F(MetricsDaemonTest, PowerStateChanged) { |
- EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_); |
- EXPECT_FALSE(daemon_.user_active_); |
- EXPECT_EQ(0, daemon_.user_active_last_); |
- EXPECT_EQ(0, daemon_.daily_use_day_last_); |
- EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
- |
- daemon_.SetUserActiveState(/* active */ true, 7 * kSecondsPerDay + 15); |
+ daemon_.SetUserActiveState(/* active */ true, |
+ TestTime(7 * kSecondsPerDay + 15)); |
EXPECT_TRUE(daemon_.user_active_); |
- EXPECT_EQ(7 * kSecondsPerDay + 15, daemon_.user_active_last_); |
+ EXPECT_EQ(TestTime(7 * kSecondsPerDay + 15), daemon_.user_active_last_); |
EXPECT_EQ(7, daemon_.daily_use_day_last_); |
EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
- daemon_.PowerStateChanged("mem", 7 * kSecondsPerDay + 45); |
+ daemon_.PowerStateChanged("mem", TestTime(7 * kSecondsPerDay + 45)); |
EXPECT_EQ(MetricsDaemon::kPowerStateMem, daemon_.power_state_); |
EXPECT_FALSE(daemon_.user_active_); |
- EXPECT_EQ(7 * kSecondsPerDay + 45, daemon_.user_active_last_); |
+ EXPECT_EQ(TestTime(7 * kSecondsPerDay + 45), daemon_.user_active_last_); |
EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 7, /* seconds */ 30); |
- daemon_.PowerStateChanged("on", 7 * kSecondsPerDay + 85); |
+ daemon_.PowerStateChanged("on", TestTime(7 * kSecondsPerDay + 85)); |
EXPECT_EQ(MetricsDaemon::kPowerStateOn, daemon_.power_state_); |
EXPECT_FALSE(daemon_.user_active_); |
- EXPECT_EQ(7 * kSecondsPerDay + 45, daemon_.user_active_last_); |
+ EXPECT_EQ(TestTime(7 * kSecondsPerDay + 45), daemon_.user_active_last_); |
EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 7, /* seconds */ 30); |
- daemon_.PowerStateChanged("otherstate", 7 * kSecondsPerDay + 185); |
+ daemon_.PowerStateChanged("otherstate", TestTime(7 * kSecondsPerDay + 185)); |
EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_); |
EXPECT_FALSE(daemon_.user_active_); |
- EXPECT_EQ(7 * kSecondsPerDay + 185, daemon_.user_active_last_); |
+ EXPECT_EQ(TestTime(7 * kSecondsPerDay + 185), daemon_.user_active_last_); |
EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 7, /* seconds */ 30); |
} |
TEST_F(MetricsDaemonTest, ScreenSaverStateChanged) { |
EXPECT_EQ(MetricsDaemon::kUnknownScreenSaverState, |
daemon_.screensaver_state_); |
- EXPECT_FALSE(daemon_.user_active_); |
- EXPECT_EQ(0, daemon_.user_active_last_); |
- EXPECT_EQ(0, daemon_.daily_use_day_last_); |
- EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
- daemon_.ScreenSaverStateChanged("locked", 5 * kSecondsPerDay + 10); |
+ daemon_.ScreenSaverStateChanged("locked", |
+ TestTime(5 * kSecondsPerDay + 10)); |
EXPECT_EQ(MetricsDaemon::kScreenSaverStateLocked, |
daemon_.screensaver_state_); |
EXPECT_FALSE(daemon_.user_active_); |
- EXPECT_EQ(5 * kSecondsPerDay + 10, daemon_.user_active_last_); |
+ EXPECT_EQ(TestTime(5 * kSecondsPerDay + 10), daemon_.user_active_last_); |
EXPECT_EQ(5, daemon_.daily_use_day_last_); |
EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
- daemon_.ScreenSaverStateChanged("unlocked", 5 * kSecondsPerDay + 100); |
+ daemon_.ScreenSaverStateChanged("unlocked", |
+ TestTime(5 * kSecondsPerDay + 100)); |
EXPECT_EQ(MetricsDaemon::kScreenSaverStateUnlocked, |
daemon_.screensaver_state_); |
EXPECT_TRUE(daemon_.user_active_); |
- EXPECT_EQ(5 * kSecondsPerDay + 100, daemon_.user_active_last_); |
+ EXPECT_EQ(TestTime(5 * kSecondsPerDay + 100), daemon_.user_active_last_); |
EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
- daemon_.ScreenSaverStateChanged("otherstate", 5 * kSecondsPerDay + 300); |
+ daemon_.ScreenSaverStateChanged("otherstate", |
+ TestTime(5 * kSecondsPerDay + 300)); |
EXPECT_EQ(MetricsDaemon::kUnknownScreenSaverState, |
daemon_.screensaver_state_); |
EXPECT_FALSE(daemon_.user_active_); |
- EXPECT_EQ(5 * kSecondsPerDay + 300, daemon_.user_active_last_); |
+ EXPECT_EQ(TestTime(5 * kSecondsPerDay + 300), daemon_.user_active_last_); |
EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 5, /* seconds */ 200); |
} |
@@ -463,100 +470,117 @@ TEST_F(MetricsDaemonTest, SendMetric) { |
} |
TEST_F(MetricsDaemonTest, SessionStateChanged) { |
- EXPECT_EQ(MetricsDaemon::kUnknownSessionState, daemon_.session_state_); |
- EXPECT_FALSE(daemon_.user_active_); |
- EXPECT_EQ(0, daemon_.user_active_last_); |
- EXPECT_EQ(0, daemon_.daily_use_day_last_); |
- EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
- |
- daemon_.SessionStateChanged("started", 15 * kSecondsPerDay + 20); |
+ daemon_.SessionStateChanged("started", TestTime(15 * kSecondsPerDay + 20)); |
EXPECT_EQ(MetricsDaemon::kSessionStateStarted, daemon_.session_state_); |
EXPECT_TRUE(daemon_.user_active_); |
- EXPECT_EQ(15 * kSecondsPerDay + 20, daemon_.user_active_last_); |
+ EXPECT_EQ(TestTime(15 * kSecondsPerDay + 20), daemon_.user_active_last_); |
EXPECT_EQ(15, daemon_.daily_use_day_last_); |
EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
- daemon_.SessionStateChanged("stopped", 15 * kSecondsPerDay + 150); |
+ daemon_.SessionStateChanged("stopped", TestTime(15 * kSecondsPerDay + 150)); |
EXPECT_EQ(MetricsDaemon::kSessionStateStopped, daemon_.session_state_); |
EXPECT_FALSE(daemon_.user_active_); |
- EXPECT_EQ(15 * kSecondsPerDay + 150, daemon_.user_active_last_); |
+ EXPECT_EQ(TestTime(15 * kSecondsPerDay + 150), daemon_.user_active_last_); |
EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 15, /* seconds */ 130); |
- daemon_.SessionStateChanged("otherstate", 15 * kSecondsPerDay + 300); |
+ daemon_.SessionStateChanged("otherstate", |
+ TestTime(15 * kSecondsPerDay + 300)); |
EXPECT_EQ(MetricsDaemon::kUnknownSessionState, daemon_.session_state_); |
EXPECT_FALSE(daemon_.user_active_); |
- EXPECT_EQ(15 * kSecondsPerDay + 300, daemon_.user_active_last_); |
+ EXPECT_EQ(TestTime(15 * kSecondsPerDay + 300), daemon_.user_active_last_); |
EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 15, /* seconds */ 130); |
} |
TEST_F(MetricsDaemonTest, SetUserActiveStateSendOnLogin) { |
+ daemon_.SetUserActiveState(/* active */ false, |
+ TestTime(5 * kSecondsPerDay + 10)); |
EXPECT_FALSE(daemon_.user_active_); |
- EXPECT_EQ(0, daemon_.user_active_last_); |
- EXPECT_EQ(0, daemon_.daily_use_day_last_); |
- EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
- |
- daemon_.SetUserActiveState(/* active */ false, 5 * kSecondsPerDay + 10); |
- EXPECT_FALSE(daemon_.user_active_); |
- EXPECT_EQ(5 * kSecondsPerDay + 10, daemon_.user_active_last_); |
+ EXPECT_EQ(TestTime(5 * kSecondsPerDay + 10), daemon_.user_active_last_); |
EXPECT_EQ(5, daemon_.daily_use_day_last_); |
EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
- daemon_.SetUserActiveState(/* active */ true, 6 * kSecondsPerDay + 20); |
+ daemon_.SetUserActiveState(/* active */ true, |
+ TestTime(6 * kSecondsPerDay + 20)); |
EXPECT_TRUE(daemon_.user_active_); |
- EXPECT_EQ(6 * kSecondsPerDay + 20, daemon_.user_active_last_); |
+ EXPECT_EQ(TestTime(6 * kSecondsPerDay + 20), daemon_.user_active_last_); |
EXPECT_EQ(6, daemon_.daily_use_day_last_); |
EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
- daemon_.SetUserActiveState(/* active */ true, 6 * kSecondsPerDay + 120); |
+ daemon_.SetUserActiveState(/* active */ true, |
+ TestTime(6 * kSecondsPerDay + 120)); |
EXPECT_TRUE(daemon_.user_active_); |
- EXPECT_EQ(6 * kSecondsPerDay + 120, daemon_.user_active_last_); |
+ EXPECT_EQ(TestTime(6 * kSecondsPerDay + 120), daemon_.user_active_last_); |
EXPECT_EQ(6, daemon_.daily_use_day_last_); |
EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 6, /* seconds */ 100); |
- daemon_.SetUserActiveState(/* active */ false, 6 * kSecondsPerDay + 220); |
+ daemon_.SetUserActiveState(/* active */ false, |
+ TestTime(6 * kSecondsPerDay + 220)); |
EXPECT_FALSE(daemon_.user_active_); |
- EXPECT_EQ(6 * kSecondsPerDay + 220, daemon_.user_active_last_); |
+ EXPECT_EQ(TestTime(6 * kSecondsPerDay + 220), daemon_.user_active_last_); |
EXPECT_EQ(6, daemon_.daily_use_day_last_); |
EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 6, /* seconds */ 200); |
ExpectDailyUseTimeMetric(/* sample */ 3); |
- daemon_.SetUserActiveState(/* active */ true, 8 * kSecondsPerDay - 300); |
+ daemon_.SetUserActiveState(/* active */ true, |
+ TestTime(8 * kSecondsPerDay - 300)); |
EXPECT_TRUE(daemon_.user_active_); |
- EXPECT_EQ(8 * kSecondsPerDay - 300, daemon_.user_active_last_); |
+ EXPECT_EQ(TestTime(8 * kSecondsPerDay - 300), daemon_.user_active_last_); |
EXPECT_EQ(7, daemon_.daily_use_day_last_); |
EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
} |
TEST_F(MetricsDaemonTest, SetUserActiveStateSendOnMonitor) { |
- EXPECT_FALSE(daemon_.user_active_); |
- EXPECT_EQ(0, daemon_.user_active_last_); |
- EXPECT_EQ(0, daemon_.daily_use_day_last_); |
- EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
- |
- daemon_.SetUserActiveState(/* active */ true, 8 * kSecondsPerDay - 300); |
+ daemon_.SetUserActiveState(/* active */ true, |
+ TestTime(8 * kSecondsPerDay - 300)); |
EXPECT_TRUE(daemon_.user_active_); |
- EXPECT_EQ(8 * kSecondsPerDay - 300, daemon_.user_active_last_); |
+ EXPECT_EQ(TestTime(8 * kSecondsPerDay - 300), daemon_.user_active_last_); |
EXPECT_EQ(7, daemon_.daily_use_day_last_); |
EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
- daemon_.SetUserActiveState(/* active */ false, 8 * kSecondsPerDay + 300); |
+ daemon_.SetUserActiveState(/* active */ false, |
+ TestTime(8 * kSecondsPerDay + 300)); |
EXPECT_FALSE(daemon_.user_active_); |
- EXPECT_EQ(8 * kSecondsPerDay + 300, daemon_.user_active_last_); |
+ EXPECT_EQ(TestTime(8 * kSecondsPerDay + 300), daemon_.user_active_last_); |
EXPECT_EQ(8, daemon_.daily_use_day_last_); |
EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 8, /* seconds */ 600); |
- daemon_.SetUserActiveState(/* active */ true, 9 * kSecondsPerDay - 400); |
+ daemon_.SetUserActiveState(/* active */ true, |
+ TestTime(9 * kSecondsPerDay - 200)); |
EXPECT_TRUE(daemon_.user_active_); |
- EXPECT_EQ(9 * kSecondsPerDay - 400, daemon_.user_active_last_); |
+ EXPECT_EQ(TestTime(9 * kSecondsPerDay - 200), daemon_.user_active_last_); |
EXPECT_EQ(8, daemon_.daily_use_day_last_); |
EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 8, /* seconds */ 600); |
ExpectDailyUseTimeMetric(/* sample */ 10); |
- daemon_.SetUserActiveState(/* active */ true, 9 * kSecondsPerDay + 400); |
+ daemon_.SetUserActiveState(/* active */ true, |
+ TestTime(9 * kSecondsPerDay + 200)); |
EXPECT_TRUE(daemon_.user_active_); |
- EXPECT_EQ(9 * kSecondsPerDay + 400, daemon_.user_active_last_); |
+ EXPECT_EQ(TestTime(9 * kSecondsPerDay + 200), daemon_.user_active_last_); |
EXPECT_EQ(9, daemon_.daily_use_day_last_); |
- EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 9, /* seconds */ 800); |
+ EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 9, /* seconds */ 400); |
+} |
+ |
+TEST_F(MetricsDaemonTest, SetUserActiveStateTimeJump) { |
+ daemon_.SetUserActiveState(/* active */ true, |
+ TestTime(10 * kSecondsPerDay + 500)); |
+ EXPECT_TRUE(daemon_.user_active_); |
+ EXPECT_EQ(TestTime(10 * kSecondsPerDay + 500), daemon_.user_active_last_); |
+ EXPECT_EQ(10, daemon_.daily_use_day_last_); |
+ EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
+ |
+ daemon_.SetUserActiveState(/* active */ true, |
+ TestTime(10 * kSecondsPerDay + 300)); |
+ EXPECT_TRUE(daemon_.user_active_); |
+ EXPECT_EQ(TestTime(10 * kSecondsPerDay + 300), daemon_.user_active_last_); |
+ EXPECT_EQ(10, daemon_.daily_use_day_last_); |
+ EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
+ |
+ daemon_.SetUserActiveState(/* active */ true, |
+ TestTime(10 * kSecondsPerDay + 1000)); |
+ EXPECT_TRUE(daemon_.user_active_); |
+ EXPECT_EQ(TestTime(10 * kSecondsPerDay + 1000), daemon_.user_active_last_); |
+ EXPECT_EQ(10, daemon_.daily_use_day_last_); |
+ EXPECT_TRUE(AssertNoOrEmptyUseRecordFile()); |
} |
int main(int argc, char **argv) { |