| OLD | NEW |
| 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 <gtest/gtest.h> | 5 #include <gtest/gtest.h> |
| 6 | 6 |
| 7 #include "counter_mock.h" | 7 #include "counter_mock.h" |
| 8 #include "metrics_daemon.h" | 8 #include "metrics_daemon.h" |
| 9 #include "metrics_library_mock.h" | 9 #include "metrics_library_mock.h" |
| 10 | 10 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 // Overloaded for test failure printing purposes. | 35 // Overloaded for test failure printing purposes. |
| 36 static std::ostream& operator<<(std::ostream& o, const Time& time) { | 36 static std::ostream& operator<<(std::ostream& o, const Time& time) { |
| 37 o << time.ToInternalValue() << "us"; | 37 o << time.ToInternalValue() << "us"; |
| 38 return o; | 38 return o; |
| 39 }; | 39 }; |
| 40 | 40 |
| 41 class MetricsDaemonTest : public testing::Test { | 41 class MetricsDaemonTest : public testing::Test { |
| 42 protected: | 42 protected: |
| 43 virtual void SetUp() { | 43 virtual void SetUp() { |
| 44 EXPECT_EQ(NULL, daemon_.daily_use_.get()); | 44 EXPECT_EQ(NULL, daemon_.daily_use_.get()); |
| 45 EXPECT_EQ(NULL, daemon_.user_crash_interval_.get()); |
| 45 daemon_.Init(true, &metrics_lib_); | 46 daemon_.Init(true, &metrics_lib_); |
| 46 | 47 |
| 47 // Tests constructor initialization. Switches to mock counters. | 48 // Tests constructor initialization. Switches to mock counters. |
| 48 EXPECT_TRUE(NULL != daemon_.daily_use_.get()); | 49 EXPECT_TRUE(NULL != daemon_.daily_use_.get()); |
| 50 EXPECT_TRUE(NULL != daemon_.user_crash_interval_.get()); |
| 51 |
| 52 // Allocates mock counter and transfers ownership. |
| 49 daily_use_ = new StrictMock<TaggedCounterMock>(); | 53 daily_use_ = new StrictMock<TaggedCounterMock>(); |
| 50 daemon_.daily_use_.reset(daily_use_); // Transfers ownership. | 54 daemon_.daily_use_.reset(daily_use_); |
| 55 user_crash_interval_ = new StrictMock<TaggedCounterMock>(); |
| 56 daemon_.user_crash_interval_.reset(user_crash_interval_); |
| 57 |
| 51 EXPECT_FALSE(daemon_.user_active_); | 58 EXPECT_FALSE(daemon_.user_active_); |
| 52 EXPECT_TRUE(daemon_.user_active_last_.is_null()); | 59 EXPECT_TRUE(daemon_.user_active_last_.is_null()); |
| 53 EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_); | 60 EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_); |
| 54 EXPECT_TRUE(daemon_.network_state_last_.is_null()); | 61 EXPECT_TRUE(daemon_.network_state_last_.is_null()); |
| 55 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_); | 62 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_); |
| 56 EXPECT_EQ(MetricsDaemon::kUnknownSessionState, daemon_.session_state_); | 63 EXPECT_EQ(MetricsDaemon::kUnknownSessionState, daemon_.session_state_); |
| 57 } | 64 } |
| 58 | 65 |
| 59 virtual void TearDown() {} | 66 virtual void TearDown() {} |
| 60 | 67 |
| 61 // Adds a daily use aggregation counter expectation that the | 68 // Adds active use aggregation counters update expectations that the |
| 62 // specified tag/count update will be generated. | 69 // specified tag/count update will be generated. |
| 63 void ExpectDailyUseUpdate(int tag, int count) { | 70 void ExpectActiveUseUpdate(int daily_tag, int count) { |
| 64 EXPECT_CALL(*daily_use_, Update(tag, count)) | 71 EXPECT_CALL(*daily_use_, Update(daily_tag, count)) |
| 72 .Times(1) |
| 73 .RetiresOnSaturation(); |
| 74 EXPECT_CALL(*user_crash_interval_, Update(0, count)) |
| 65 .Times(1) | 75 .Times(1) |
| 66 .RetiresOnSaturation(); | 76 .RetiresOnSaturation(); |
| 67 } | 77 } |
| 78 |
| 79 // Adds active use aggregation counters update expectations that |
| 80 // ignore the update arguments. |
| 81 void IgnoreActiveUseUpdate() { |
| 82 EXPECT_CALL(*daily_use_, Update(_, _)) |
| 83 .Times(1) |
| 84 .RetiresOnSaturation(); |
| 85 EXPECT_CALL(*user_crash_interval_, Update(_, _)) |
| 86 .Times(1) |
| 87 .RetiresOnSaturation(); |
| 88 } |
| 68 | 89 |
| 69 // Adds a metrics library mock expectation that the specified metric | 90 // Adds a metrics library mock expectation that the specified metric |
| 70 // will be generated. | 91 // will be generated. |
| 71 void ExpectMetric(const std::string& name, int sample, | 92 void ExpectMetric(const std::string& name, int sample, |
| 72 int min, int max, int buckets) { | 93 int min, int max, int buckets) { |
| 73 EXPECT_CALL(metrics_lib_, SendToUMA(name, sample, min, max, buckets)) | 94 EXPECT_CALL(metrics_lib_, SendToUMA(name, sample, min, max, buckets)) |
| 74 .Times(1) | 95 .Times(1) |
| 75 .WillOnce(Return(true)) | 96 .WillOnce(Return(true)) |
| 76 .RetiresOnSaturation(); | 97 .RetiresOnSaturation(); |
| 77 } | 98 } |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 dbus_message_unref(msg); | 148 dbus_message_unref(msg); |
| 128 } | 149 } |
| 129 | 150 |
| 130 // The MetricsDaemon under test. | 151 // The MetricsDaemon under test. |
| 131 MetricsDaemon daemon_; | 152 MetricsDaemon daemon_; |
| 132 | 153 |
| 133 // Metrics library mock. It's a strict mock so that all unexpected | 154 // Metrics library mock. It's a strict mock so that all unexpected |
| 134 // metric generation calls are marked as failures. | 155 // metric generation calls are marked as failures. |
| 135 StrictMock<MetricsLibraryMock> metrics_lib_; | 156 StrictMock<MetricsLibraryMock> metrics_lib_; |
| 136 | 157 |
| 137 // Daily use time aggregation counter mock. It's a strict mock so | 158 // Counter mocks. They are strict mocks so that all unexpected |
| 138 // that all unexpected update calls are marked as failures. It's a | 159 // update calls are marked as failures. They are pointers so that |
| 139 // pointer so that it can replace the scoped_ptr allocated by the | 160 // they can replace the scoped_ptr's allocated by the daemon. |
| 140 // daemon. | |
| 141 StrictMock<TaggedCounterMock>* daily_use_; | 161 StrictMock<TaggedCounterMock>* daily_use_; |
| 162 StrictMock<TaggedCounterMock>* user_crash_interval_; |
| 142 }; | 163 }; |
| 143 | 164 |
| 144 TEST_F(MetricsDaemonTest, DailyUseReporter) { | 165 TEST_F(MetricsDaemonTest, DailyUseReporter) { |
| 145 ExpectDailyUseTimeMetric(/* sample */ 2); | 166 ExpectDailyUseTimeMetric(/* sample */ 2); |
| 146 MetricsDaemon::DailyUseReporter(&daemon_, /* tag */ 20, /* count */ 90); | 167 MetricsDaemon::DailyUseReporter(&daemon_, /* tag */ 20, /* count */ 90); |
| 147 | 168 |
| 148 ExpectDailyUseTimeMetric(/* sample */ 1); | 169 ExpectDailyUseTimeMetric(/* sample */ 1); |
| 149 MetricsDaemon::DailyUseReporter(&daemon_, /* tag */ 23, /* count */ 89); | 170 MetricsDaemon::DailyUseReporter(&daemon_, /* tag */ 23, /* count */ 89); |
| 171 |
| 172 // There should be no metrics generated for the calls below. |
| 173 MetricsDaemon::DailyUseReporter(&daemon_, /* tag */ 50, /* count */ 0); |
| 174 MetricsDaemon::DailyUseReporter(&daemon_, /* tag */ 60, /* count */ -5); |
| 150 } | 175 } |
| 151 | 176 |
| 152 TEST_F(MetricsDaemonTest, LookupNetworkState) { | 177 TEST_F(MetricsDaemonTest, LookupNetworkState) { |
| 153 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, | 178 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, |
| 154 daemon_.LookupNetworkState("online")); | 179 daemon_.LookupNetworkState("online")); |
| 155 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, | 180 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, |
| 156 daemon_.LookupNetworkState("offline")); | 181 daemon_.LookupNetworkState("offline")); |
| 157 EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, | 182 EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, |
| 158 daemon_.LookupNetworkState("somestate")); | 183 daemon_.LookupNetworkState("somestate")); |
| 159 } | 184 } |
| (...skipping 16 matching lines...) Expand all Loading... |
| 176 daemon_.LookupSessionState("somestate")); | 201 daemon_.LookupSessionState("somestate")); |
| 177 } | 202 } |
| 178 | 203 |
| 179 TEST_F(MetricsDaemonTest, MessageFilter) { | 204 TEST_F(MetricsDaemonTest, MessageFilter) { |
| 180 DBusMessage* msg = dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_CALL); | 205 DBusMessage* msg = dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_CALL); |
| 181 DBusHandlerResult res = | 206 DBusHandlerResult res = |
| 182 MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_); | 207 MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_); |
| 183 EXPECT_EQ(DBUS_HANDLER_RESULT_NOT_YET_HANDLED, res); | 208 EXPECT_EQ(DBUS_HANDLER_RESULT_NOT_YET_HANDLED, res); |
| 184 DeleteDBusMessage(msg); | 209 DeleteDBusMessage(msg); |
| 185 | 210 |
| 211 IgnoreActiveUseUpdate(); |
| 212 EXPECT_CALL(*user_crash_interval_, Flush()) |
| 213 .Times(1) |
| 214 .RetiresOnSaturation(); |
| 215 msg = NewDBusSignalString("/", |
| 216 "org.chromium.CrashReporter", |
| 217 "UserCrash", |
| 218 ""); |
| 219 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_); |
| 220 EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res); |
| 221 DeleteDBusMessage(msg); |
| 222 |
| 186 msg = NewDBusSignalString("/", | 223 msg = NewDBusSignalString("/", |
| 187 "org.chromium.flimflam.Manager", | 224 "org.chromium.flimflam.Manager", |
| 188 "StateChanged", | 225 "StateChanged", |
| 189 "online"); | 226 "online"); |
| 190 EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_); | 227 EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_); |
| 191 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_); | 228 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_); |
| 192 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_); | 229 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_); |
| 193 EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res); | 230 EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res); |
| 194 DeleteDBusMessage(msg); | 231 DeleteDBusMessage(msg); |
| 195 | 232 |
| 196 msg = NewDBusSignalString("/", | 233 msg = NewDBusSignalString("/", |
| 197 "org.chromium.PowerManager", | 234 "org.chromium.PowerManager", |
| 198 "PowerStateChanged", | 235 "PowerStateChanged", |
| 199 "on"); | 236 "on"); |
| 200 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_); | 237 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_); |
| 201 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_); | 238 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_); |
| 202 EXPECT_EQ(MetricsDaemon::kPowerStateOn, daemon_.power_state_); | 239 EXPECT_EQ(MetricsDaemon::kPowerStateOn, daemon_.power_state_); |
| 203 EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res); | 240 EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res); |
| 204 DeleteDBusMessage(msg); | 241 DeleteDBusMessage(msg); |
| 205 | 242 |
| 206 EXPECT_CALL(*daily_use_, Update(_, 0)) | 243 IgnoreActiveUseUpdate(); |
| 207 .Times(1) | |
| 208 .RetiresOnSaturation(); | |
| 209 msg = NewDBusSignalString("/", | 244 msg = NewDBusSignalString("/", |
| 210 "org.chromium.PowerManager", | 245 "org.chromium.PowerManager", |
| 211 "ScreenIsUnlocked", | 246 "ScreenIsUnlocked", |
| 212 ""); | 247 ""); |
| 213 EXPECT_FALSE(daemon_.user_active_); | 248 EXPECT_FALSE(daemon_.user_active_); |
| 214 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_); | 249 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_); |
| 215 EXPECT_TRUE(daemon_.user_active_); | 250 EXPECT_TRUE(daemon_.user_active_); |
| 216 EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res); | 251 EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res); |
| 217 DeleteDBusMessage(msg); | 252 DeleteDBusMessage(msg); |
| 218 | 253 |
| 219 EXPECT_CALL(*daily_use_, Update(_, 0)) | 254 IgnoreActiveUseUpdate(); |
| 220 .Times(1) | |
| 221 .RetiresOnSaturation(); | |
| 222 msg = NewDBusSignalString("/org/chromium/SessionManager", | 255 msg = NewDBusSignalString("/org/chromium/SessionManager", |
| 223 "org.chromium.SessionManagerInterface", | 256 "org.chromium.SessionManagerInterface", |
| 224 "SessionStateChanged", | 257 "SessionStateChanged", |
| 225 "started"); | 258 "started"); |
| 226 EXPECT_EQ(MetricsDaemon::kUnknownSessionState, daemon_.session_state_); | 259 EXPECT_EQ(MetricsDaemon::kUnknownSessionState, daemon_.session_state_); |
| 227 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_); | 260 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_); |
| 228 EXPECT_EQ(MetricsDaemon::kSessionStateStarted, daemon_.session_state_); | 261 EXPECT_EQ(MetricsDaemon::kSessionStateStarted, daemon_.session_state_); |
| 229 EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res); | 262 EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res); |
| 230 DeleteDBusMessage(msg); | 263 DeleteDBusMessage(msg); |
| 231 | 264 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_); | 309 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_); |
| 277 EXPECT_EQ(TestTicks(105), daemon_.network_state_last_); | 310 EXPECT_EQ(TestTicks(105), daemon_.network_state_last_); |
| 278 | 311 |
| 279 ExpectTimeToNetworkDropMetric(3); | 312 ExpectTimeToNetworkDropMetric(3); |
| 280 daemon_.NetStateChanged("offline", TestTicks(108)); | 313 daemon_.NetStateChanged("offline", TestTicks(108)); |
| 281 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_); | 314 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_); |
| 282 EXPECT_EQ(TestTicks(108), daemon_.network_state_last_); | 315 EXPECT_EQ(TestTicks(108), daemon_.network_state_last_); |
| 283 } | 316 } |
| 284 | 317 |
| 285 TEST_F(MetricsDaemonTest, PowerStateChanged) { | 318 TEST_F(MetricsDaemonTest, PowerStateChanged) { |
| 286 ExpectDailyUseUpdate(7, 0); | 319 ExpectActiveUseUpdate(7, 0); |
| 287 daemon_.SetUserActiveState(/* active */ true, | 320 daemon_.SetUserActiveState(/* active */ true, |
| 288 TestTime(7 * kSecondsPerDay + 15)); | 321 TestTime(7 * kSecondsPerDay + 15)); |
| 289 EXPECT_TRUE(daemon_.user_active_); | 322 EXPECT_TRUE(daemon_.user_active_); |
| 290 EXPECT_EQ(TestTime(7 * kSecondsPerDay + 15), daemon_.user_active_last_); | 323 EXPECT_EQ(TestTime(7 * kSecondsPerDay + 15), daemon_.user_active_last_); |
| 291 | 324 |
| 292 ExpectDailyUseUpdate(7, 30); | 325 ExpectActiveUseUpdate(7, 30); |
| 293 daemon_.PowerStateChanged("mem", TestTime(7 * kSecondsPerDay + 45)); | 326 daemon_.PowerStateChanged("mem", TestTime(7 * kSecondsPerDay + 45)); |
| 294 EXPECT_EQ(MetricsDaemon::kPowerStateMem, daemon_.power_state_); | 327 EXPECT_EQ(MetricsDaemon::kPowerStateMem, daemon_.power_state_); |
| 295 EXPECT_FALSE(daemon_.user_active_); | 328 EXPECT_FALSE(daemon_.user_active_); |
| 296 EXPECT_EQ(TestTime(7 * kSecondsPerDay + 45), daemon_.user_active_last_); | 329 EXPECT_EQ(TestTime(7 * kSecondsPerDay + 45), daemon_.user_active_last_); |
| 297 | 330 |
| 298 daemon_.PowerStateChanged("on", TestTime(7 * kSecondsPerDay + 85)); | 331 daemon_.PowerStateChanged("on", TestTime(7 * kSecondsPerDay + 85)); |
| 299 EXPECT_EQ(MetricsDaemon::kPowerStateOn, daemon_.power_state_); | 332 EXPECT_EQ(MetricsDaemon::kPowerStateOn, daemon_.power_state_); |
| 300 EXPECT_FALSE(daemon_.user_active_); | 333 EXPECT_FALSE(daemon_.user_active_); |
| 301 EXPECT_EQ(TestTime(7 * kSecondsPerDay + 45), daemon_.user_active_last_); | 334 EXPECT_EQ(TestTime(7 * kSecondsPerDay + 45), daemon_.user_active_last_); |
| 302 | 335 |
| 303 ExpectDailyUseUpdate(7, 0); | 336 ExpectActiveUseUpdate(7, 0); |
| 304 daemon_.PowerStateChanged("otherstate", TestTime(7 * kSecondsPerDay + 185)); | 337 daemon_.PowerStateChanged("otherstate", TestTime(7 * kSecondsPerDay + 185)); |
| 305 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_); | 338 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_); |
| 306 EXPECT_FALSE(daemon_.user_active_); | 339 EXPECT_FALSE(daemon_.user_active_); |
| 307 EXPECT_EQ(TestTime(7 * kSecondsPerDay + 185), daemon_.user_active_last_); | 340 EXPECT_EQ(TestTime(7 * kSecondsPerDay + 185), daemon_.user_active_last_); |
| 308 } | 341 } |
| 309 | 342 |
| 343 TEST_F(MetricsDaemonTest, ProcessUserCrash) { |
| 344 IgnoreActiveUseUpdate(); |
| 345 EXPECT_CALL(*user_crash_interval_, Flush()) |
| 346 .Times(1) |
| 347 .RetiresOnSaturation(); |
| 348 daemon_.ProcessUserCrash(); |
| 349 } |
| 350 |
| 310 TEST_F(MetricsDaemonTest, SendMetric) { | 351 TEST_F(MetricsDaemonTest, SendMetric) { |
| 311 ExpectMetric("Dummy.Metric", 3, 1, 100, 50); | 352 ExpectMetric("Dummy.Metric", 3, 1, 100, 50); |
| 312 daemon_.SendMetric("Dummy.Metric", /* sample */ 3, | 353 daemon_.SendMetric("Dummy.Metric", /* sample */ 3, |
| 313 /* min */ 1, /* max */ 100, /* buckets */ 50); | 354 /* min */ 1, /* max */ 100, /* buckets */ 50); |
| 314 } | 355 } |
| 315 | 356 |
| 316 TEST_F(MetricsDaemonTest, SessionStateChanged) { | 357 TEST_F(MetricsDaemonTest, SessionStateChanged) { |
| 317 ExpectDailyUseUpdate(15, 0); | 358 ExpectActiveUseUpdate(15, 0); |
| 318 daemon_.SessionStateChanged("started", TestTime(15 * kSecondsPerDay + 20)); | 359 daemon_.SessionStateChanged("started", TestTime(15 * kSecondsPerDay + 20)); |
| 319 EXPECT_EQ(MetricsDaemon::kSessionStateStarted, daemon_.session_state_); | 360 EXPECT_EQ(MetricsDaemon::kSessionStateStarted, daemon_.session_state_); |
| 320 EXPECT_TRUE(daemon_.user_active_); | 361 EXPECT_TRUE(daemon_.user_active_); |
| 321 EXPECT_EQ(TestTime(15 * kSecondsPerDay + 20), daemon_.user_active_last_); | 362 EXPECT_EQ(TestTime(15 * kSecondsPerDay + 20), daemon_.user_active_last_); |
| 322 | 363 |
| 323 ExpectDailyUseUpdate(15, 130); | 364 ExpectActiveUseUpdate(15, 130); |
| 324 daemon_.SessionStateChanged("stopped", TestTime(15 * kSecondsPerDay + 150)); | 365 daemon_.SessionStateChanged("stopped", TestTime(15 * kSecondsPerDay + 150)); |
| 325 EXPECT_EQ(MetricsDaemon::kSessionStateStopped, daemon_.session_state_); | 366 EXPECT_EQ(MetricsDaemon::kSessionStateStopped, daemon_.session_state_); |
| 326 EXPECT_FALSE(daemon_.user_active_); | 367 EXPECT_FALSE(daemon_.user_active_); |
| 327 EXPECT_EQ(TestTime(15 * kSecondsPerDay + 150), daemon_.user_active_last_); | 368 EXPECT_EQ(TestTime(15 * kSecondsPerDay + 150), daemon_.user_active_last_); |
| 328 | 369 |
| 329 ExpectDailyUseUpdate(15, 0); | 370 ExpectActiveUseUpdate(15, 0); |
| 330 daemon_.SessionStateChanged("otherstate", | 371 daemon_.SessionStateChanged("otherstate", |
| 331 TestTime(15 * kSecondsPerDay + 300)); | 372 TestTime(15 * kSecondsPerDay + 300)); |
| 332 EXPECT_EQ(MetricsDaemon::kUnknownSessionState, daemon_.session_state_); | 373 EXPECT_EQ(MetricsDaemon::kUnknownSessionState, daemon_.session_state_); |
| 333 EXPECT_FALSE(daemon_.user_active_); | 374 EXPECT_FALSE(daemon_.user_active_); |
| 334 EXPECT_EQ(TestTime(15 * kSecondsPerDay + 300), daemon_.user_active_last_); | 375 EXPECT_EQ(TestTime(15 * kSecondsPerDay + 300), daemon_.user_active_last_); |
| 335 } | 376 } |
| 336 | 377 |
| 337 TEST_F(MetricsDaemonTest, SetUserActiveState) { | 378 TEST_F(MetricsDaemonTest, SetUserActiveState) { |
| 338 ExpectDailyUseUpdate(5, 0); | 379 ExpectActiveUseUpdate(5, 0); |
| 339 daemon_.SetUserActiveState(/* active */ false, | 380 daemon_.SetUserActiveState(/* active */ false, |
| 340 TestTime(5 * kSecondsPerDay + 10)); | 381 TestTime(5 * kSecondsPerDay + 10)); |
| 341 EXPECT_FALSE(daemon_.user_active_); | 382 EXPECT_FALSE(daemon_.user_active_); |
| 342 EXPECT_EQ(TestTime(5 * kSecondsPerDay + 10), daemon_.user_active_last_); | 383 EXPECT_EQ(TestTime(5 * kSecondsPerDay + 10), daemon_.user_active_last_); |
| 343 | 384 |
| 344 ExpectDailyUseUpdate(6, 0); | 385 ExpectActiveUseUpdate(6, 0); |
| 345 daemon_.SetUserActiveState(/* active */ true, | 386 daemon_.SetUserActiveState(/* active */ true, |
| 346 TestTime(6 * kSecondsPerDay + 20)); | 387 TestTime(6 * kSecondsPerDay + 20)); |
| 347 EXPECT_TRUE(daemon_.user_active_); | 388 EXPECT_TRUE(daemon_.user_active_); |
| 348 EXPECT_EQ(TestTime(6 * kSecondsPerDay + 20), daemon_.user_active_last_); | 389 EXPECT_EQ(TestTime(6 * kSecondsPerDay + 20), daemon_.user_active_last_); |
| 349 | 390 |
| 350 ExpectDailyUseUpdate(6, 100); | 391 ExpectActiveUseUpdate(6, 100); |
| 351 daemon_.SetUserActiveState(/* active */ true, | 392 daemon_.SetUserActiveState(/* active */ true, |
| 352 TestTime(6 * kSecondsPerDay + 120)); | 393 TestTime(6 * kSecondsPerDay + 120)); |
| 353 EXPECT_TRUE(daemon_.user_active_); | 394 EXPECT_TRUE(daemon_.user_active_); |
| 354 EXPECT_EQ(TestTime(6 * kSecondsPerDay + 120), daemon_.user_active_last_); | 395 EXPECT_EQ(TestTime(6 * kSecondsPerDay + 120), daemon_.user_active_last_); |
| 355 | 396 |
| 356 ExpectDailyUseUpdate(6, 110); | 397 ExpectActiveUseUpdate(6, 110); |
| 357 daemon_.SetUserActiveState(/* active */ false, | 398 daemon_.SetUserActiveState(/* active */ false, |
| 358 TestTime(6 * kSecondsPerDay + 230)); | 399 TestTime(6 * kSecondsPerDay + 230)); |
| 359 EXPECT_FALSE(daemon_.user_active_); | 400 EXPECT_FALSE(daemon_.user_active_); |
| 360 EXPECT_EQ(TestTime(6 * kSecondsPerDay + 230), daemon_.user_active_last_); | 401 EXPECT_EQ(TestTime(6 * kSecondsPerDay + 230), daemon_.user_active_last_); |
| 361 | 402 |
| 362 ExpectDailyUseUpdate(6, 0); | 403 ExpectActiveUseUpdate(6, 0); |
| 363 daemon_.SetUserActiveState(/* active */ false, | 404 daemon_.SetUserActiveState(/* active */ false, |
| 364 TestTime(6 * kSecondsPerDay + 260)); | 405 TestTime(6 * kSecondsPerDay + 260)); |
| 365 EXPECT_FALSE(daemon_.user_active_); | 406 EXPECT_FALSE(daemon_.user_active_); |
| 366 EXPECT_EQ(TestTime(6 * kSecondsPerDay + 260), daemon_.user_active_last_); | 407 EXPECT_EQ(TestTime(6 * kSecondsPerDay + 260), daemon_.user_active_last_); |
| 367 } | 408 } |
| 368 | 409 |
| 369 TEST_F(MetricsDaemonTest, SetUserActiveStateTimeJump) { | 410 TEST_F(MetricsDaemonTest, SetUserActiveStateTimeJump) { |
| 370 ExpectDailyUseUpdate(10, 0); | 411 ExpectActiveUseUpdate(10, 0); |
| 371 daemon_.SetUserActiveState(/* active */ true, | 412 daemon_.SetUserActiveState(/* active */ true, |
| 372 TestTime(10 * kSecondsPerDay + 500)); | 413 TestTime(10 * kSecondsPerDay + 500)); |
| 373 EXPECT_TRUE(daemon_.user_active_); | 414 EXPECT_TRUE(daemon_.user_active_); |
| 374 EXPECT_EQ(TestTime(10 * kSecondsPerDay + 500), daemon_.user_active_last_); | 415 EXPECT_EQ(TestTime(10 * kSecondsPerDay + 500), daemon_.user_active_last_); |
| 375 | 416 |
| 376 ExpectDailyUseUpdate(10, 0); | 417 ExpectActiveUseUpdate(10, 0); |
| 377 daemon_.SetUserActiveState(/* active */ true, | 418 daemon_.SetUserActiveState(/* active */ true, |
| 378 TestTime(10 * kSecondsPerDay + 300)); | 419 TestTime(10 * kSecondsPerDay + 300)); |
| 379 EXPECT_TRUE(daemon_.user_active_); | 420 EXPECT_TRUE(daemon_.user_active_); |
| 380 EXPECT_EQ(TestTime(10 * kSecondsPerDay + 300), daemon_.user_active_last_); | 421 EXPECT_EQ(TestTime(10 * kSecondsPerDay + 300), daemon_.user_active_last_); |
| 381 | 422 |
| 382 ExpectDailyUseUpdate(10, 0); | 423 ExpectActiveUseUpdate(10, 0); |
| 383 daemon_.SetUserActiveState(/* active */ true, | 424 daemon_.SetUserActiveState(/* active */ true, |
| 384 TestTime(10 * kSecondsPerDay + 1000)); | 425 TestTime(10 * kSecondsPerDay + 1000)); |
| 385 EXPECT_TRUE(daemon_.user_active_); | 426 EXPECT_TRUE(daemon_.user_active_); |
| 386 EXPECT_EQ(TestTime(10 * kSecondsPerDay + 1000), daemon_.user_active_last_); | 427 EXPECT_EQ(TestTime(10 * kSecondsPerDay + 1000), daemon_.user_active_last_); |
| 387 } | 428 } |
| 388 | 429 |
| 430 TEST_F(MetricsDaemonTest, UserCrashIntervalReporter) { |
| 431 ExpectMetric(MetricsDaemon::kMetricUserCrashIntervalName, 50, |
| 432 MetricsDaemon::kMetricUserCrashIntervalMin, |
| 433 MetricsDaemon::kMetricUserCrashIntervalMax, |
| 434 MetricsDaemon::kMetricUserCrashIntervalBuckets); |
| 435 MetricsDaemon::UserCrashIntervalReporter(&daemon_, 0, 50); |
| 436 } |
| 437 |
| 389 int main(int argc, char** argv) { | 438 int main(int argc, char** argv) { |
| 390 testing::InitGoogleTest(&argc, argv); | 439 testing::InitGoogleTest(&argc, argv); |
| 391 return RUN_ALL_TESTS(); | 440 return RUN_ALL_TESTS(); |
| 392 } | 441 } |
| OLD | NEW |