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

Side by Side Diff: metrics_daemon_test.cc

Issue 3233004: remove TimeToDrop support (Closed) Base URL: ssh://git@chromiumos-git//metrics.git
Patch Set: Created 10 years, 3 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 <utime.h> 5 #include <utime.h>
6 6
7 #include <base/file_util.h> 7 #include <base/file_util.h>
8 #include <gtest/gtest.h> 8 #include <gtest/gtest.h>
9 9
10 #include "counter_mock.h" 10 #include "counter_mock.h"
(...skipping 20 matching lines...) Expand all
31 // This class allows a TimeTicks object to be initialized with seconds 31 // This class allows a TimeTicks object to be initialized with seconds
32 // (rather than microseconds) through the protected TimeTicks(int64) 32 // (rather than microseconds) through the protected TimeTicks(int64)
33 // constructor. 33 // constructor.
34 class TestTicks : public TimeTicks { 34 class TestTicks : public TimeTicks {
35 public: 35 public:
36 TestTicks(int64 seconds) 36 TestTicks(int64 seconds)
37 : TimeTicks(seconds * Time::kMicrosecondsPerSecond) {} 37 : TimeTicks(seconds * Time::kMicrosecondsPerSecond) {}
38 }; 38 };
39 39
40 // Overloaded for test failure printing purposes. 40 // Overloaded for test failure printing purposes.
41 static std::ostream& operator<<(std::ostream& o, const TimeTicks& ticks) {
42 o << ticks.ToInternalValue() << "us";
43 return o;
44 };
45
46 // Overloaded for test failure printing purposes.
47 static std::ostream& operator<<(std::ostream& o, const Time& time) { 41 static std::ostream& operator<<(std::ostream& o, const Time& time) {
48 o << time.ToInternalValue() << "us"; 42 o << time.ToInternalValue() << "us";
49 return o; 43 return o;
50 }; 44 };
51 45
52 class MetricsDaemonTest : public testing::Test { 46 class MetricsDaemonTest : public testing::Test {
53 protected: 47 protected:
54 virtual void SetUp() { 48 virtual void SetUp() {
55 EXPECT_EQ(NULL, daemon_.daily_use_.get()); 49 EXPECT_EQ(NULL, daemon_.daily_use_.get());
56 EXPECT_EQ(NULL, daemon_.kernel_crash_interval_.get()); 50 EXPECT_EQ(NULL, daemon_.kernel_crash_interval_.get());
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 // Reset all frequency counter reporters to mocks for further testing. 101 // Reset all frequency counter reporters to mocks for further testing.
108 MetricsDaemon::FrequencyCounters::iterator i; 102 MetricsDaemon::FrequencyCounters::iterator i;
109 for (i = daemon_.frequency_counters_.begin(); 103 for (i = daemon_.frequency_counters_.begin();
110 i != daemon_.frequency_counters_.end(); ++i) { 104 i != daemon_.frequency_counters_.end(); ++i) {
111 delete i->second; 105 delete i->second;
112 i->second = new StrictMock<FrequencyCounterMock>(); 106 i->second = new StrictMock<FrequencyCounterMock>();
113 } 107 }
114 108
115 EXPECT_FALSE(daemon_.user_active_); 109 EXPECT_FALSE(daemon_.user_active_);
116 EXPECT_TRUE(daemon_.user_active_last_.is_null()); 110 EXPECT_TRUE(daemon_.user_active_last_.is_null());
117 EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_);
118 EXPECT_TRUE(daemon_.network_state_last_.is_null());
119 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_); 111 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_);
120 EXPECT_EQ(MetricsDaemon::kUnknownSessionState, daemon_.session_state_); 112 EXPECT_EQ(MetricsDaemon::kUnknownSessionState, daemon_.session_state_);
121 113
122 file_util::Delete(FilePath(kTestDir), true); 114 file_util::Delete(FilePath(kTestDir), true);
123 file_util::CreateDirectory(FilePath(kTestDir)); 115 file_util::CreateDirectory(FilePath(kTestDir));
124 } 116 }
125 117
126 virtual void TearDown() {} 118 virtual void TearDown() {}
127 119
128 const TaggedCounterReporter* 120 const TaggedCounterReporter*
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 175
184 // Adds a metrics library mock expectation that the specified daily 176 // Adds a metrics library mock expectation that the specified daily
185 // use time metric will be generated. 177 // use time metric will be generated.
186 void ExpectDailyUseTimeMetric(int sample) { 178 void ExpectDailyUseTimeMetric(int sample) {
187 ExpectMetric(MetricsDaemon::kMetricDailyUseTimeName, sample, 179 ExpectMetric(MetricsDaemon::kMetricDailyUseTimeName, sample,
188 MetricsDaemon::kMetricDailyUseTimeMin, 180 MetricsDaemon::kMetricDailyUseTimeMin,
189 MetricsDaemon::kMetricDailyUseTimeMax, 181 MetricsDaemon::kMetricDailyUseTimeMax,
190 MetricsDaemon::kMetricDailyUseTimeBuckets); 182 MetricsDaemon::kMetricDailyUseTimeBuckets);
191 } 183 }
192 184
193 // Adds a metrics library mock expectation that the specified time
194 // to network dropping metric will be generated.
195 void ExpectTimeToNetworkDropMetric(int sample) {
196 ExpectMetric(MetricsDaemon::kMetricTimeToNetworkDropName, sample,
197 MetricsDaemon::kMetricTimeToNetworkDropMin,
198 MetricsDaemon::kMetricTimeToNetworkDropMax,
199 MetricsDaemon::kMetricTimeToNetworkDropBuckets);
200 }
201
202 // Converts from seconds to a Time object. 185 // Converts from seconds to a Time object.
203 Time TestTime(int64 seconds) { 186 Time TestTime(int64 seconds) {
204 return Time::FromInternalValue(seconds * Time::kMicrosecondsPerSecond); 187 return Time::FromInternalValue(seconds * Time::kMicrosecondsPerSecond);
205 } 188 }
206 189
207 // Creates a new DBus signal message with a single string 190 // Creates a new DBus signal message with a single string
208 // argument. The message can be deallocated through 191 // argument. The message can be deallocated through
209 // DeleteDBusMessage. 192 // DeleteDBusMessage.
210 // 193 //
211 // |path| is the object emitting the signal. 194 // |path| is the object emitting the signal.
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 MetricsDaemon::ReportDailyUse(&daemon_, /* tag */ 20, /* count */ 90); 256 MetricsDaemon::ReportDailyUse(&daemon_, /* tag */ 20, /* count */ 90);
274 257
275 ExpectDailyUseTimeMetric(/* sample */ 1); 258 ExpectDailyUseTimeMetric(/* sample */ 1);
276 MetricsDaemon::ReportDailyUse(&daemon_, /* tag */ 23, /* count */ 89); 259 MetricsDaemon::ReportDailyUse(&daemon_, /* tag */ 23, /* count */ 89);
277 260
278 // There should be no metrics generated for the calls below. 261 // There should be no metrics generated for the calls below.
279 MetricsDaemon::ReportDailyUse(&daemon_, /* tag */ 50, /* count */ 0); 262 MetricsDaemon::ReportDailyUse(&daemon_, /* tag */ 50, /* count */ 0);
280 MetricsDaemon::ReportDailyUse(&daemon_, /* tag */ 60, /* count */ -5); 263 MetricsDaemon::ReportDailyUse(&daemon_, /* tag */ 60, /* count */ -5);
281 } 264 }
282 265
283 TEST_F(MetricsDaemonTest, LookupNetworkState) {
284 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline,
285 daemon_.LookupNetworkState("online"));
286 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline,
287 daemon_.LookupNetworkState("offline"));
288 EXPECT_EQ(MetricsDaemon::kUnknownNetworkState,
289 daemon_.LookupNetworkState("somestate"));
290 }
291
292 TEST_F(MetricsDaemonTest, LookupPowerState) { 266 TEST_F(MetricsDaemonTest, LookupPowerState) {
293 EXPECT_EQ(MetricsDaemon::kPowerStateOn, 267 EXPECT_EQ(MetricsDaemon::kPowerStateOn,
294 daemon_.LookupPowerState("on")); 268 daemon_.LookupPowerState("on"));
295 EXPECT_EQ(MetricsDaemon::kPowerStateMem, 269 EXPECT_EQ(MetricsDaemon::kPowerStateMem,
296 daemon_.LookupPowerState("mem")); 270 daemon_.LookupPowerState("mem"));
297 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, 271 EXPECT_EQ(MetricsDaemon::kUnknownPowerState,
298 daemon_.LookupPowerState("somestate")); 272 daemon_.LookupPowerState("somestate"));
299 } 273 }
300 274
301 TEST_F(MetricsDaemonTest, LookupSessionState) { 275 TEST_F(MetricsDaemonTest, LookupSessionState) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 .RetiresOnSaturation(); 310 .RetiresOnSaturation();
337 msg = NewDBusSignalString("/", 311 msg = NewDBusSignalString("/",
338 "org.chromium.CrashReporter", 312 "org.chromium.CrashReporter",
339 "UserCrash", 313 "UserCrash",
340 ""); 314 "");
341 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_); 315 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_);
342 EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res); 316 EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res);
343 DeleteDBusMessage(msg); 317 DeleteDBusMessage(msg);
344 318
345 msg = NewDBusSignalString("/", 319 msg = NewDBusSignalString("/",
346 "org.chromium.flimflam.Manager",
347 "StateChanged",
348 "online");
349 EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_);
350 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_);
351 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_);
352 EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res);
353 DeleteDBusMessage(msg);
354
355 msg = NewDBusSignalString("/",
356 "org.chromium.PowerManager", 320 "org.chromium.PowerManager",
357 "PowerStateChanged", 321 "PowerStateChanged",
358 "on"); 322 "on");
359 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_); 323 EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_);
360 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_); 324 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_);
361 EXPECT_EQ(MetricsDaemon::kPowerStateOn, daemon_.power_state_); 325 EXPECT_EQ(MetricsDaemon::kPowerStateOn, daemon_.power_state_);
362 EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res); 326 EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res);
363 DeleteDBusMessage(msg); 327 DeleteDBusMessage(msg);
364 328
365 IgnoreActiveUseUpdate(); 329 IgnoreActiveUseUpdate();
(...skipping 20 matching lines...) Expand all
386 350
387 msg = NewDBusSignalString("/", 351 msg = NewDBusSignalString("/",
388 "org.chromium.UnknownService.Manager", 352 "org.chromium.UnknownService.Manager",
389 "StateChanged", 353 "StateChanged",
390 "randomstate"); 354 "randomstate");
391 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_); 355 res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_);
392 EXPECT_EQ(DBUS_HANDLER_RESULT_NOT_YET_HANDLED, res); 356 EXPECT_EQ(DBUS_HANDLER_RESULT_NOT_YET_HANDLED, res);
393 DeleteDBusMessage(msg); 357 DeleteDBusMessage(msg);
394 } 358 }
395 359
396 TEST_F(MetricsDaemonTest, NetStateChangedSimpleDrop) {
397 daemon_.NetStateChanged("online", TestTicks(10));
398 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_);
399 EXPECT_EQ(TestTicks(10), daemon_.network_state_last_);
400
401 ExpectTimeToNetworkDropMetric(20);
402 daemon_.NetStateChanged("offline", TestTicks(30));
403 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_);
404 EXPECT_EQ(TestTicks(30), daemon_.network_state_last_);
405 }
406
407 TEST_F(MetricsDaemonTest, NetStateChangedSuspend) {
408 daemon_.NetStateChanged("offline", TestTicks(30));
409 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_);
410 EXPECT_EQ(TestTicks(30), daemon_.network_state_last_);
411
412 daemon_.NetStateChanged("online", TestTicks(60));
413 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_);
414 EXPECT_EQ(TestTicks(60), daemon_.network_state_last_);
415
416 daemon_.power_state_ = MetricsDaemon::kPowerStateMem;
417 daemon_.NetStateChanged("offline", TestTicks(85));
418 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_);
419 EXPECT_EQ(TestTicks(85), daemon_.network_state_last_);
420
421 daemon_.NetStateChanged("somestate", TestTicks(90));
422 EXPECT_EQ(MetricsDaemon::kUnknownNetworkState, daemon_.network_state_);
423 EXPECT_EQ(TestTicks(90), daemon_.network_state_last_);
424
425 daemon_.NetStateChanged("offline", TestTicks(95));
426 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_);
427 EXPECT_EQ(TestTicks(95), daemon_.network_state_last_);
428
429 daemon_.power_state_ = MetricsDaemon::kPowerStateOn;
430 daemon_.NetStateChanged("online", TestTicks(105));
431 EXPECT_EQ(MetricsDaemon::kNetworkStateOnline, daemon_.network_state_);
432 EXPECT_EQ(TestTicks(105), daemon_.network_state_last_);
433
434 ExpectTimeToNetworkDropMetric(3);
435 daemon_.NetStateChanged("offline", TestTicks(108));
436 EXPECT_EQ(MetricsDaemon::kNetworkStateOffline, daemon_.network_state_);
437 EXPECT_EQ(TestTicks(108), daemon_.network_state_last_);
438 }
439
440 TEST_F(MetricsDaemonTest, PowerStateChanged) { 360 TEST_F(MetricsDaemonTest, PowerStateChanged) {
441 ExpectActiveUseUpdate(7, 0); 361 ExpectActiveUseUpdate(7, 0);
442 daemon_.SetUserActiveState(/* active */ true, 362 daemon_.SetUserActiveState(/* active */ true,
443 TestTime(7 * kSecondsPerDay + 15)); 363 TestTime(7 * kSecondsPerDay + 15));
444 EXPECT_TRUE(daemon_.user_active_); 364 EXPECT_TRUE(daemon_.user_active_);
445 EXPECT_EQ(TestTime(7 * kSecondsPerDay + 15), daemon_.user_active_last_); 365 EXPECT_EQ(TestTime(7 * kSecondsPerDay + 15), daemon_.user_active_last_);
446 366
447 ExpectActiveUseUpdate(7, 30); 367 ExpectActiveUseUpdate(7, 30);
448 daemon_.PowerStateChanged("mem", TestTime(7 * kSecondsPerDay + 45)); 368 daemon_.PowerStateChanged("mem", TestTime(7 * kSecondsPerDay + 45));
449 EXPECT_EQ(MetricsDaemon::kPowerStateMem, daemon_.power_state_); 369 EXPECT_EQ(MetricsDaemon::kPowerStateMem, daemon_.power_state_);
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 TEST_F(MetricsDaemonTest, GetHistogramPath) { 513 TEST_F(MetricsDaemonTest, GetHistogramPath) {
594 EXPECT_EQ("/var/log/metrics/Logging.AnyCrashesDaily", 514 EXPECT_EQ("/var/log/metrics/Logging.AnyCrashesDaily",
595 daemon_.GetHistogramPath( 515 daemon_.GetHistogramPath(
596 MetricsDaemon::kMetricAnyCrashesDailyName).value()); 516 MetricsDaemon::kMetricAnyCrashesDailyName).value());
597 } 517 }
598 518
599 int main(int argc, char** argv) { 519 int main(int argc, char** argv) {
600 testing::InitGoogleTest(&argc, argv); 520 testing::InitGoogleTest(&argc, argv);
601 return RUN_ALL_TESTS(); 521 return RUN_ALL_TESTS();
602 } 522 }
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