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

Side by Side Diff: chrome/browser/performance_monitor/database_unittest.cc

Issue 10907121: Add guards to metric values; erase bad events/metrics from db (Closed) Base URL: http://git.chromium.org/chromium/src.git@dc_use_units
Patch Set: Created 8 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium 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 <algorithm> 5 #include <algorithm>
6 #include <string> 6 #include <string>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/file_path.h" 9 #include "base/file_path.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
11 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
12 #include "base/scoped_temp_dir.h" 12 #include "base/scoped_temp_dir.h"
13 #include "base/time.h" 13 #include "base/time.h"
14 #include "chrome/browser/performance_monitor/database.h" 14 #include "chrome/browser/performance_monitor/database.h"
15 #include "chrome/browser/performance_monitor/key_builder.h"
15 #include "chrome/browser/performance_monitor/metric.h" 16 #include "chrome/browser/performance_monitor/metric.h"
16 #include "chrome/browser/performance_monitor/performance_monitor_util.h" 17 #include "chrome/browser/performance_monitor/performance_monitor_util.h"
17 #include "chrome/common/extensions/extension.h" 18 #include "chrome/common/extensions/extension.h"
18 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
20 #include "third_party/leveldatabase/src/include/leveldb/db.h"
21 #include "third_party/leveldatabase/src/include/leveldb/iterator.h"
19 22
20 using extensions::Extension; 23 using extensions::Extension;
21 24
22 namespace performance_monitor { 25 namespace performance_monitor {
23 26
27 // A class which is friended by Database, in order to hold the private methods
28 // and avoid friending all the different test classes.
29 class DatabaseTestHelper {
30 public:
31 explicit DatabaseTestHelper(Database* database) : database_(database) { };
32 ~DatabaseTestHelper() { };
33
34 bool Close() { return database_->Close(); }
35
36 // Override the check for a metric's validity and insert it in the database.
37 // Note: This does not do extraneous updates, like updating the recent_db or
38 // the max_value_map.
39 bool AddInvalidMetric(std::string activity, Metric metric) {
40 std::string metric_key =
41 database_->key_builder_->CreateMetricKey(database_->clock_->GetTime(),
42 metric.type,
43 activity);
44 leveldb::Status status =
45 database_->metric_db_->Put(database_->write_options_,
46 metric_key,
47 metric.ValueAsString());
48 return status.ok();
49 }
50
51 // Writes an invalid event to the database; since events are stored as JSON
52 // strings, this is equivalent to writing a garbage string.
53 bool AddInvalidEvent(base::Time time, EventType type) {
54 std::string key = database_->key_builder_->CreateEventKey(time, type);
55 leveldb::Status status =
56 database_->event_db_->Put(database_->write_options_, key, "fake_event");
57 return status.ok();
58 }
59
60 size_t GetNumberOfMetricEntries() {
61 return GetNumberOfEntries(database_->metric_db_.get());
62 }
63 size_t GetNumberOfEventEntries() {
64 return GetNumberOfEntries(database_->event_db_.get());
65 }
66
67 private:
68
eaugusti 2012/09/07 23:10:55 nit: extra space
Devlin 2012/09/10 17:49:14 Done.
69 // Returns the number of entries in a given database.
70 size_t GetNumberOfEntries(leveldb::DB* level_db) {
71 size_t number_of_entries = 0;
72 scoped_ptr<leveldb::Iterator> iter(
73 level_db->NewIterator(database_->read_options_));
74 for (iter->SeekToFirst(); iter->Valid(); iter->Next())
75 ++number_of_entries;
76 return number_of_entries;
77 }
78
79 Database* database_;
80 };
81
24 // A clock that increments every access. Great for testing. 82 // A clock that increments every access. Great for testing.
25 class TestingClock : public Database::Clock { 83 class TestingClock : public Database::Clock {
26 public: 84 public:
27 TestingClock() 85 TestingClock()
28 : counter_(0) { 86 : counter_(0) {
29 } 87 }
30 explicit TestingClock(const TestingClock& other) 88 explicit TestingClock(const TestingClock& other)
31 : counter_(other.counter_) { 89 : counter_(other.counter_) {
32 } 90 }
33 virtual ~TestingClock() {} 91 virtual ~TestingClock() {}
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 db_->set_clock(scoped_ptr<Database::Clock>(clock_)); 158 db_->set_clock(scoped_ptr<Database::Clock>(clock_));
101 activity_ = std::string("A"); 159 activity_ = std::string("A");
102 } 160 }
103 161
104 void SetUp() { 162 void SetUp() {
105 ASSERT_TRUE(db_.get()); 163 ASSERT_TRUE(db_.get());
106 PopulateDB(); 164 PopulateDB();
107 } 165 }
108 166
109 void PopulateDB() { 167 void PopulateDB() {
110 db_->AddMetric(kProcessChromeAggregate, METRIC_CPU_USAGE, 168 db_->AddMetric(kProcessChromeAggregate,
111 std::string("50.5")); 169 Metric(METRIC_CPU_USAGE, clock_->GetTime(), 50.5));
112 db_->AddMetric(activity_, METRIC_CPU_USAGE, std::string("13.1")); 170 db_->AddMetric(activity_,
113 171 Metric(METRIC_CPU_USAGE, clock_->GetTime(), 13.1));
114 db_->AddMetric(kProcessChromeAggregate, METRIC_PRIVATE_MEMORY_USAGE, 172 db_->AddMetric(kProcessChromeAggregate,
115 std::string("1000000")); 173 Metric(METRIC_PRIVATE_MEMORY_USAGE,
116 db_->AddMetric(activity_, METRIC_PRIVATE_MEMORY_USAGE, 174 clock_->GetTime(),
117 std::string("3000000")); 175 1000000.0));
176 db_->AddMetric(activity_,
177 Metric(METRIC_PRIVATE_MEMORY_USAGE,
178 clock_->GetTime(),
179 3000000.0));
118 } 180 }
119 181
120 scoped_ptr<Database> db_; 182 scoped_ptr<Database> db_;
121 Database::Clock* clock_; 183 Database::Clock* clock_;
122 ScopedTempDir temp_dir_; 184 ScopedTempDir temp_dir_;
123 std::string activity_; 185 std::string activity_;
124 }; 186 };
125 187
126 ////// PerformanceMonitorDatabaseSetupTests //////////////////////////////////// 188 ////// PerformanceMonitorDatabaseSetupTests ////////////////////////////////////
127 TEST(PerformanceMonitorDatabaseSetupTest, OpenClose) { 189 TEST(PerformanceMonitorDatabaseSetupTest, OpenClose) {
128 ScopedTempDir temp_dir; 190 ScopedTempDir temp_dir;
129 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 191 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
130 scoped_ptr<Database> db = Database::Create(temp_dir.path()); 192 scoped_ptr<Database> db = Database::Create(temp_dir.path());
131 ASSERT_TRUE(db.get()); 193 ASSERT_TRUE(db.get());
132 ASSERT_TRUE(db->Close()); 194 DatabaseTestHelper helper(db.get());
195 ASSERT_TRUE(helper.Close());
133 } 196 }
134 197
135 TEST(PerformanceMonitorDatabaseSetupTest, ActiveInterval) { 198 TEST(PerformanceMonitorDatabaseSetupTest, ActiveInterval) {
136 ScopedTempDir temp_dir; 199 ScopedTempDir temp_dir;
137 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 200 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
138 201
139 TestingClock* clock_1 = new TestingClock(); 202 TestingClock* clock_1 = new TestingClock();
140 base::Time start_time = clock_1->GetTime(); 203 base::Time start_time = clock_1->GetTime();
141 204
142 scoped_ptr<Database> db_1 = Database::Create(temp_dir.path()); 205 scoped_ptr<Database> db_1 = Database::Create(temp_dir.path());
143 db_1->set_clock(scoped_ptr<Database::Clock>(clock_1)); 206 db_1->set_clock(scoped_ptr<Database::Clock>(clock_1));
207 DatabaseTestHelper helper1(db_1.get());
144 db_1->AddStateValue("test", "test"); 208 db_1->AddStateValue("test", "test");
145 ASSERT_TRUE(db_1.get()); 209 ASSERT_TRUE(db_1.get());
146 ASSERT_TRUE(db_1->Close()); 210 ASSERT_TRUE(helper1.Close());
147 211
148 TestingClock* clock_2 = new TestingClock(*clock_1); 212 TestingClock* clock_2 = new TestingClock(*clock_1);
149 base::Time mid_time = clock_2->GetTime(); 213 base::Time mid_time = clock_2->GetTime();
150 scoped_ptr<Database> db_2 = Database::Create(temp_dir.path()); 214 scoped_ptr<Database> db_2 = Database::Create(temp_dir.path());
151 db_2->set_clock(scoped_ptr<Database::Clock>(clock_2)); 215 db_2->set_clock(scoped_ptr<Database::Clock>(clock_2));
216 DatabaseTestHelper helper2(db_2.get());
152 db_2->AddStateValue("test", "test"); 217 db_2->AddStateValue("test", "test");
153 ASSERT_TRUE(db_2.get()); 218 ASSERT_TRUE(db_2.get());
154 ASSERT_TRUE(db_2->Close()); 219 ASSERT_TRUE(helper2.Close());
155 220
156 TestingClock* clock_3 = new TestingClock(*clock_2); 221 TestingClock* clock_3 = new TestingClock(*clock_2);
157 base::Time end_time = clock_3->GetTime(); 222 base::Time end_time = clock_3->GetTime();
158 scoped_ptr<Database> db_3 = Database::Create(temp_dir.path()); 223 scoped_ptr<Database> db_3 = Database::Create(temp_dir.path());
159 db_3->set_clock(scoped_ptr<Database::Clock>(clock_3)); 224 db_3->set_clock(scoped_ptr<Database::Clock>(clock_3));
160 db_3->AddStateValue("test", "test"); 225 db_3->AddStateValue("test", "test");
161 ASSERT_TRUE(db_3.get()); 226 ASSERT_TRUE(db_3.get());
162 227
163 std::vector<TimeRange> active_interval = db_3->GetActiveIntervals(start_time, 228 std::vector<TimeRange> active_interval = db_3->GetActiveIntervals(start_time,
164 end_time); 229 end_time);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 } 283 }
219 284
220 TEST_F(PerformanceMonitorDatabaseMetricTest, GetMaxMetric) { 285 TEST_F(PerformanceMonitorDatabaseMetricTest, GetMaxMetric) {
221 Metric stat; 286 Metric stat;
222 EXPECT_EQ(0.0, db_->GetMaxStatsForActivityAndMetric(activity_, 287 EXPECT_EQ(0.0, db_->GetMaxStatsForActivityAndMetric(activity_,
223 METRIC_PAGE_LOAD_TIME)); 288 METRIC_PAGE_LOAD_TIME));
224 289
225 EXPECT_EQ(1000000, 290 EXPECT_EQ(1000000,
226 db_->GetMaxStatsForActivityAndMetric(METRIC_PRIVATE_MEMORY_USAGE)); 291 db_->GetMaxStatsForActivityAndMetric(METRIC_PRIVATE_MEMORY_USAGE));
227 292
228 db_->AddMetric(kProcessChromeAggregate, METRIC_PRIVATE_MEMORY_USAGE, 293 db_->AddMetric(kProcessChromeAggregate,
229 std::string("99")); 294 Metric(METRIC_PRIVATE_MEMORY_USAGE, clock_->GetTime(), 99.0));
230 EXPECT_EQ(1000000, 295 EXPECT_EQ(1000000,
231 db_->GetMaxStatsForActivityAndMetric(METRIC_PRIVATE_MEMORY_USAGE)); 296 db_->GetMaxStatsForActivityAndMetric(METRIC_PRIVATE_MEMORY_USAGE));
232 297
233 db_->AddMetric(kProcessChromeAggregate, METRIC_PRIVATE_MEMORY_USAGE, 298 db_->AddMetric(kProcessChromeAggregate,
234 std::string("6000000")); 299 Metric(METRIC_PRIVATE_MEMORY_USAGE,
300 clock_->GetTime(),
301 6000000.0));
235 EXPECT_EQ(6000000, 302 EXPECT_EQ(6000000,
236 db_->GetMaxStatsForActivityAndMetric(METRIC_PRIVATE_MEMORY_USAGE)); 303 db_->GetMaxStatsForActivityAndMetric(METRIC_PRIVATE_MEMORY_USAGE));
237 } 304 }
238 305
239 TEST_F(PerformanceMonitorDatabaseEventTest, GetAllEventTypes) { 306 TEST_F(PerformanceMonitorDatabaseEventTest, GetAllEventTypes) {
240 Database::EventTypeSet types = db_->GetEventTypes(); 307 Database::EventTypeSet types = db_->GetEventTypes();
241 ASSERT_EQ(2u, types.size()); 308 ASSERT_EQ(2u, types.size());
242 ASSERT_EQ(1u, types.count(EVENT_EXTENSION_INSTALL)); 309 ASSERT_EQ(1u, types.count(EVENT_EXTENSION_INSTALL));
243 ASSERT_EQ(1u, types.count(EVENT_EXTENSION_UNINSTALL)); 310 ASSERT_EQ(1u, types.count(EVENT_EXTENSION_UNINSTALL));
244 } 311 }
245 312
246 TEST_F(PerformanceMonitorDatabaseEventTest, GetEventInTimeRange) { 313 TEST_F(PerformanceMonitorDatabaseEventTest, GetEventInTimeRange) {
247 base::Time start_time = clock_->GetTime(); 314 base::Time start_time = clock_->GetTime();
248 scoped_ptr<Event> crash_event = util::CreateRendererFreezeEvent( 315 scoped_ptr<Event> crash_event = util::CreateRendererFreezeEvent(
249 clock_->GetTime(), "chrome://freeze"); 316 clock_->GetTime(), "chrome://freeze");
250 db_->AddEvent(*crash_event.get()); 317 db_->AddEvent(*crash_event.get());
251 Database::EventVector events = db_->GetEvents(start_time, clock_->GetTime()); 318 Database::EventVector events = db_->GetEvents(start_time, clock_->GetTime());
252 ASSERT_EQ(1u, events.size()); 319 ASSERT_EQ(1u, events.size());
253 EXPECT_TRUE(events[0]->data()->Equals(crash_event->data())); 320 EXPECT_TRUE(events[0]->data()->Equals(crash_event->data()));
254 } 321 }
255 322
256 TEST_F(PerformanceMonitorDatabaseEventTest, GetInstallEvents) { 323 TEST_F(PerformanceMonitorDatabaseEventTest, GetInstallEvents) {
257 Database::EventVector events = db_->GetEvents(EVENT_EXTENSION_INSTALL); 324 Database::EventVector events = db_->GetEvents(EVENT_EXTENSION_INSTALL);
258 ASSERT_EQ(2u, events.size()); 325 ASSERT_EQ(2u, events.size());
259 EXPECT_TRUE(events[0]->data()->Equals(install_event_1_->data())); 326 EXPECT_TRUE(events[0]->data()->Equals(install_event_1_->data()));
260 EXPECT_TRUE(events[1]->data()->Equals(install_event_2_->data())); 327 EXPECT_TRUE(events[1]->data()->Equals(install_event_2_->data()));
261 } 328 }
262 329
330 TEST_F(PerformanceMonitorDatabaseEventTest, InvalidEvents) {
331 DatabaseTestHelper helper(db_.get());
332
333 // Insert an invalid event into the database; verify it is inserted.
334 size_t original_number_of_entries = helper.GetNumberOfEventEntries();
335 ASSERT_TRUE(helper.AddInvalidEvent(
336 clock_->GetTime(), EVENT_EXTENSION_INSTALL));
337 ASSERT_EQ(original_number_of_entries + 1u, helper.GetNumberOfEventEntries());
338
339 // Should not retrieve the invalid event.
340 Database::EventVector events = db_->GetEvents();
341 ASSERT_EQ(original_number_of_entries, events.size());
342
343 // Invalid event should have been deleted.
344 ASSERT_EQ(original_number_of_entries, helper.GetNumberOfEventEntries());
345 }
346
263 TEST_F(PerformanceMonitorDatabaseEventTest, GetUnusedEventType) { 347 TEST_F(PerformanceMonitorDatabaseEventTest, GetUnusedEventType) {
264 Database::EventVector events = db_->GetEvents(EVENT_EXTENSION_DISABLE); 348 Database::EventVector events = db_->GetEvents(EVENT_EXTENSION_DISABLE);
265 ASSERT_TRUE(events.empty()); 349 ASSERT_TRUE(events.empty());
266 events = db_->GetEvents(EVENT_EXTENSION_DISABLE, clock_->GetTime(), 350 events = db_->GetEvents(EVENT_EXTENSION_DISABLE, clock_->GetTime(),
267 clock_->GetTime()); 351 clock_->GetTime());
268 ASSERT_TRUE(events.empty()); 352 ASSERT_TRUE(events.empty());
269 } 353 }
270 354
271 TEST_F(PerformanceMonitorDatabaseEventTest, GetEventsTimeRange) { 355 TEST_F(PerformanceMonitorDatabaseEventTest, GetEventsTimeRange) {
272 base::Time start_time = clock_->GetTime(); 356 base::Time start_time = clock_->GetTime();
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 db_->AddStateValue(key, value_2); 420 db_->AddStateValue(key, value_2);
337 EXPECT_EQ(db_->GetStateValue(key), value_2); 421 EXPECT_EQ(db_->GetStateValue(key), value_2);
338 } 422 }
339 423
340 TEST_F(PerformanceMonitorDatabaseMetricTest, GetStatsForActivityAndMetric) { 424 TEST_F(PerformanceMonitorDatabaseMetricTest, GetStatsForActivityAndMetric) {
341 Database::MetricVector stats = db_->GetStatsForActivityAndMetric( 425 Database::MetricVector stats = db_->GetStatsForActivityAndMetric(
342 activity_, METRIC_CPU_USAGE, base::Time(), clock_->GetTime()); 426 activity_, METRIC_CPU_USAGE, base::Time(), clock_->GetTime());
343 ASSERT_EQ(1u, stats.size()); 427 ASSERT_EQ(1u, stats.size());
344 EXPECT_EQ(13.1, stats[0].value); 428 EXPECT_EQ(13.1, stats[0].value);
345 base::Time before = clock_->GetTime(); 429 base::Time before = clock_->GetTime();
346 db_->AddMetric(activity_, METRIC_CPU_USAGE, std::string("18")); 430 db_->AddMetric(activity_,
431 Metric(METRIC_CPU_USAGE, clock_->GetTime(), 18.0));
347 stats = db_->GetStatsForActivityAndMetric(activity_, METRIC_CPU_USAGE, 432 stats = db_->GetStatsForActivityAndMetric(activity_, METRIC_CPU_USAGE,
348 before, clock_->GetTime()); 433 before, clock_->GetTime());
349 ASSERT_EQ(1u, stats.size()); 434 ASSERT_EQ(1u, stats.size());
350 EXPECT_EQ(18, stats[0].value); 435 EXPECT_EQ(18, stats[0].value);
351 stats = db_->GetStatsForActivityAndMetric(activity_, METRIC_CPU_USAGE); 436 stats = db_->GetStatsForActivityAndMetric(activity_, METRIC_CPU_USAGE);
352 ASSERT_EQ(2u, stats.size()); 437 ASSERT_EQ(2u, stats.size());
353 EXPECT_EQ(13.1, stats[0].value); 438 EXPECT_EQ(13.1, stats[0].value);
354 EXPECT_EQ(18, stats[1].value); 439 EXPECT_EQ(18, stats[1].value);
355 stats = db_->GetStatsForActivityAndMetric(METRIC_PRIVATE_MEMORY_USAGE); 440 stats = db_->GetStatsForActivityAndMetric(METRIC_PRIVATE_MEMORY_USAGE);
356 ASSERT_EQ(1u, stats.size()); 441 ASSERT_EQ(1u, stats.size());
(...skipping 11 matching lines...) Expand all
368 linked_ptr<Database::MetricVector> stats = stats_map[activity_]; 453 linked_ptr<Database::MetricVector> stats = stats_map[activity_];
369 ASSERT_EQ(1u, stats->size()); 454 ASSERT_EQ(1u, stats->size());
370 EXPECT_EQ(13.1, stats->at(0).value); 455 EXPECT_EQ(13.1, stats->at(0).value);
371 stats = stats_map[kProcessChromeAggregate]; 456 stats = stats_map[kProcessChromeAggregate];
372 ASSERT_EQ(1u, stats->size()); 457 ASSERT_EQ(1u, stats->size());
373 EXPECT_EQ(50.5, stats->at(0).value); 458 EXPECT_EQ(50.5, stats->at(0).value);
374 stats_map = db_->GetStatsForMetricByActivity( 459 stats_map = db_->GetStatsForMetricByActivity(
375 METRIC_CPU_USAGE, clock_->GetTime(), clock_->GetTime()); 460 METRIC_CPU_USAGE, clock_->GetTime(), clock_->GetTime());
376 EXPECT_EQ(0u, stats_map.size()); 461 EXPECT_EQ(0u, stats_map.size());
377 base::Time before = clock_->GetTime(); 462 base::Time before = clock_->GetTime();
378 db_->AddMetric(activity_, METRIC_CPU_USAGE, std::string("18")); 463 db_->AddMetric(activity_,
464 Metric(METRIC_CPU_USAGE, clock_->GetTime(), 18.0));
379 stats_map = db_->GetStatsForMetricByActivity(METRIC_CPU_USAGE, before, 465 stats_map = db_->GetStatsForMetricByActivity(METRIC_CPU_USAGE, before,
380 clock_->GetTime()); 466 clock_->GetTime());
381 ASSERT_EQ(1u, stats_map.size()); 467 ASSERT_EQ(1u, stats_map.size());
382 stats = stats_map[activity_]; 468 stats = stats_map[activity_];
383 ASSERT_EQ(1u, stats->size()); 469 ASSERT_EQ(1u, stats->size());
384 EXPECT_EQ(18, stats->at(0).value); 470 EXPECT_EQ(18, stats->at(0).value);
385 } 471 }
386 472
473 TEST_F(PerformanceMonitorDatabaseMetricTest, InvalidMetrics) {
474 DatabaseTestHelper helper(db_.get());
475 Metric invalid_metric(METRIC_CPU_USAGE, clock_->GetTime(), -5.0);
476 ASSERT_FALSE(invalid_metric.Validate());
477
478 // Check that the database normally refuses to insert bad metrics.
479 EXPECT_FALSE(db_->AddMetric(invalid_metric));
480
481 // Verify that it was not inserted into the database.
482 Database::MetricVector stats = db_->GetStatsForActivityAndMetric(
483 activity_, METRIC_CPU_USAGE, base::Time(), clock_->GetTime());
484 ASSERT_EQ(1u, stats.size());
485
486 // Forcefully insert it into the database.
487 size_t original_number_of_entries = helper.GetNumberOfMetricEntries();
488 ASSERT_TRUE(helper.AddInvalidMetric(activity_, invalid_metric));
489 ASSERT_EQ(original_number_of_entries + 1u, helper.GetNumberOfMetricEntries());
490
491 // Try to retrieve it; should only get one result.
492 stats = db_->GetStatsForActivityAndMetric(
493 activity_, METRIC_CPU_USAGE, base::Time(), clock_->GetTime());
494 ASSERT_EQ(1u, stats.size());
495
496 // Entry should have been deleted in the database.
497 ASSERT_EQ(original_number_of_entries, helper.GetNumberOfMetricEntries());
498 }
499
387 TEST_F(PerformanceMonitorDatabaseMetricTest, GetFullRange) { 500 TEST_F(PerformanceMonitorDatabaseMetricTest, GetFullRange) {
388 db_->AddMetric(kProcessChromeAggregate, METRIC_CPU_USAGE, std::string("3.4")); 501 db_->AddMetric(kProcessChromeAggregate,
389 db_->AddMetric(kProcessChromeAggregate, METRIC_CPU_USAGE, std::string("21")); 502 Metric(METRIC_CPU_USAGE, clock_->GetTime(), 3.4));
503 db_->AddMetric(kProcessChromeAggregate,
504 Metric(METRIC_CPU_USAGE, clock_->GetTime(), 21.0));
390 Database::MetricVector stats = 505 Database::MetricVector stats =
391 db_->GetStatsForActivityAndMetric(METRIC_CPU_USAGE); 506 db_->GetStatsForActivityAndMetric(METRIC_CPU_USAGE);
392 ASSERT_EQ(3u, stats.size()); 507 ASSERT_EQ(3u, stats.size());
393 ASSERT_EQ(50.5, stats[0].value); 508 ASSERT_EQ(50.5, stats[0].value);
394 ASSERT_EQ(3.4, stats[1].value); 509 ASSERT_EQ(3.4, stats[1].value);
395 ASSERT_EQ(21, stats[2].value); 510 ASSERT_EQ(21, stats[2].value);
396 } 511 }
397 512
398 TEST_F(PerformanceMonitorDatabaseMetricTest, GetRange) { 513 TEST_F(PerformanceMonitorDatabaseMetricTest, GetRange) {
399 base::Time start = clock_->GetTime(); 514 base::Time start = clock_->GetTime();
400 db_->AddMetric(kProcessChromeAggregate, METRIC_CPU_USAGE, std::string("3")); 515 db_->AddMetric(kProcessChromeAggregate,
401 db_->AddMetric(kProcessChromeAggregate, METRIC_CPU_USAGE, std::string("9")); 516 Metric(METRIC_CPU_USAGE, clock_->GetTime(), 3.0));
517 db_->AddMetric(kProcessChromeAggregate,
518 Metric(METRIC_CPU_USAGE, clock_->GetTime(), 9.0));
402 base::Time end = clock_->GetTime(); 519 base::Time end = clock_->GetTime();
403 db_->AddMetric(kProcessChromeAggregate, METRIC_CPU_USAGE, std::string("21")); 520 db_->AddMetric(kProcessChromeAggregate,
521 Metric(METRIC_CPU_USAGE, clock_->GetTime(), 21.0));
404 Database::MetricVector stats = 522 Database::MetricVector stats =
405 db_->GetStatsForActivityAndMetric(METRIC_CPU_USAGE, start, end); 523 db_->GetStatsForActivityAndMetric(METRIC_CPU_USAGE, start, end);
406 ASSERT_EQ(2u, stats.size()); 524 ASSERT_EQ(2u, stats.size());
407 ASSERT_EQ(3, stats[0].value); 525 ASSERT_EQ(3, stats[0].value);
408 ASSERT_EQ(9, stats[1].value); 526 ASSERT_EQ(9, stats[1].value);
409 } 527 }
410 528
411 } // namespace performance_monitor 529 } // namespace performance_monitor
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698