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

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

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

Powered by Google App Engine
This is Rietveld 408576698