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

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

Issue 10805050: Chrome Performance Monitor: MetricDetails refactor. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Removed UpdateActiveIntervals from retrieval functions. Created 8 years, 5 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 <string> 6 #include <string>
6 #include <vector> 7 #include <vector>
7 8
8 #include "base/file_path.h" 9 #include "base/file_path.h"
9 #include "base/file_util.h" 10 #include "base/file_util.h"
10 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
11 #include "base/time.h" 12 #include "base/time.h"
12 #include "chrome/browser/performance_monitor/database.h" 13 #include "chrome/browser/performance_monitor/database.h"
14 #include "chrome/browser/performance_monitor/metric_details.h"
13 #include "chrome/browser/performance_monitor/performance_monitor_util.h" 15 #include "chrome/browser/performance_monitor/performance_monitor_util.h"
14 #include "chrome/common/extensions/extension.h" 16 #include "chrome/common/extensions/extension.h"
15 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
16 18
17 using extensions::Extension; 19 using extensions::Extension;
18 20
19 namespace performance_monitor { 21 namespace performance_monitor {
20 22
21 // A clock that increments every access. Great for testing. 23 // A clock that increments every access. Great for testing.
22 class TestingClock : public Database::Clock { 24 class TestingClock : public Database::Clock {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 87
86 class PerformanceMonitorDatabaseMetricTest : public ::testing::Test { 88 class PerformanceMonitorDatabaseMetricTest : public ::testing::Test {
87 protected: 89 protected:
88 PerformanceMonitorDatabaseMetricTest() { 90 PerformanceMonitorDatabaseMetricTest() {
89 clock_ = new TestingClock(); 91 clock_ = new TestingClock();
90 file_util::CreateNewTempDirectory(FilePath::StringType(), &temp_path_); 92 file_util::CreateNewTempDirectory(FilePath::StringType(), &temp_path_);
91 db_ = Database::Create(temp_path_); 93 db_ = Database::Create(temp_path_);
92 CHECK(db_.get()); 94 CHECK(db_.get());
93 db_->set_clock(scoped_ptr<Database::Clock>(clock_)); 95 db_->set_clock(scoped_ptr<Database::Clock>(clock_));
94 activity_ = std::string("A"); 96 activity_ = std::string("A");
95 cpu_metric_ = std::string("CPU");
96 mem_metric_ = std::string("MEM");
97 fun_metric_ = std::string("FUN");
98 cpu_metric_details_ = MetricDetails(cpu_metric_, "Testing CPU metric.");
99 mem_metric_details_ = MetricDetails(mem_metric_, "Testing MEM metric.");
100 fun_metric_details_ = MetricDetails(fun_metric_, "Testing FUN metric.");
101 } 97 }
102 98
103 void SetUp() { 99 void SetUp() {
104 ASSERT_TRUE(db_.get()); 100 ASSERT_TRUE(db_.get());
105 PopulateDB(); 101 PopulateDB();
106 } 102 }
107 103
108 void PopulateDB() { 104 void PopulateDB() {
109 db_->AddMetricDetails(cpu_metric_details_); 105 db_->AddMetric(kProcessChromeAggregate, METRIC_CPU_USAGE,
110 db_->AddMetricDetails(mem_metric_details_); 106 std::string("50.5"));
111 db_->AddMetricDetails(fun_metric_details_); 107 db_->AddMetric(activity_, METRIC_CPU_USAGE, std::string("13.1"));
112 db_->AddMetric(kProcessChromeAggregate, cpu_metric_, std::string("50.5")); 108
113 db_->AddMetric(activity_, cpu_metric_, std::string("13.1")); 109 db_->AddMetric(kProcessChromeAggregate, METRIC_PRIVATE_MEMORY_USAGE,
114 db_->AddMetric(kProcessChromeAggregate, mem_metric_, std::string("100000")); 110 std::string("1000000"));
115 db_->AddMetric(activity_, mem_metric_, std::string("20000")); 111 db_->AddMetric(activity_, METRIC_PRIVATE_MEMORY_USAGE,
116 db_->AddMetric(kProcessChromeAggregate, fun_metric_, std::string("3.14")); 112 std::string("3000000"));
117 db_->AddMetric(activity_, fun_metric_, std::string("1.68"));
118 } 113 }
119 114
120 scoped_ptr<Database> db_; 115 scoped_ptr<Database> db_;
121 Database::Clock* clock_; 116 Database::Clock* clock_;
122 FilePath temp_path_; 117 FilePath temp_path_;
123 std::string activity_; 118 std::string activity_;
124 std::string cpu_metric_;
125 std::string mem_metric_;
126 std::string fun_metric_;
127 MetricDetails cpu_metric_details_;
128 MetricDetails mem_metric_details_;
129 MetricDetails fun_metric_details_;
130 }; 119 };
131 120
132 ////// PerformanceMonitorDatabaseSetupTests //////////////////////////////////// 121 ////// PerformanceMonitorDatabaseSetupTests ////////////////////////////////////
133 TEST(PerformanceMonitorDatabaseSetupTest, OpenClose) { 122 TEST(PerformanceMonitorDatabaseSetupTest, OpenClose) {
134 FilePath alternate_path; 123 FilePath alternate_path;
135 file_util::CreateNewTempDirectory(FilePath::StringType(), &alternate_path); 124 file_util::CreateNewTempDirectory(FilePath::StringType(), &alternate_path);
136 scoped_ptr<Database> db = Database::Create(alternate_path); 125 scoped_ptr<Database> db = Database::Create(alternate_path);
137 ASSERT_TRUE(db.get()); 126 ASSERT_TRUE(db.get());
138 ASSERT_TRUE(db->Close()); 127 ASSERT_TRUE(db->Close());
139 } 128 }
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 EXPECT_TRUE(events[0]->data()->Equals(new_install_event->data())); 266 EXPECT_TRUE(events[0]->data()->Equals(new_install_event->data()));
278 EXPECT_TRUE(events[1]->data()->Equals(new_uninstall_event->data())); 267 EXPECT_TRUE(events[1]->data()->Equals(new_uninstall_event->data()));
279 events = db_->GetEvents( 268 events = db_->GetEvents(
280 EVENT_EXTENSION_INSTALL, start_time, end_time); 269 EVENT_EXTENSION_INSTALL, start_time, end_time);
281 ASSERT_EQ(1u, events.size()); 270 ASSERT_EQ(1u, events.size());
282 EXPECT_TRUE(events[0]->data()->Equals(new_install_event->data())); 271 EXPECT_TRUE(events[0]->data()->Equals(new_install_event->data()));
283 } 272 }
284 273
285 ////// PerformanceMonitorDatabaseMetricTests /////////////////////////////////// 274 ////// PerformanceMonitorDatabaseMetricTests ///////////////////////////////////
286 TEST_F(PerformanceMonitorDatabaseMetricTest, GetActiveMetrics) { 275 TEST_F(PerformanceMonitorDatabaseMetricTest, GetActiveMetrics) {
287 std::vector<MetricDetails> metrics = 276 std::vector<const MetricDetails*> active_metrics =
288 db_->GetActiveMetrics(base::Time(), clock_->GetTime()); 277 db_->GetActiveMetrics(base::Time(), clock_->GetTime());
289 ASSERT_EQ(3u, metrics.size()); 278 std::sort(active_metrics.begin(), active_metrics.end());
290 std::vector<MetricDetails>::iterator it; 279
291 for (it = metrics.begin(); it != metrics.end(); ++it) { 280 std::vector<const MetricDetails*> expected_metrics;
292 if (it->name == cpu_metric_details_.name) 281 expected_metrics.push_back(GetMetricDetails(METRIC_CPU_USAGE));
293 EXPECT_EQ(it->description, cpu_metric_details_.description); 282 expected_metrics.push_back(GetMetricDetails(METRIC_PRIVATE_MEMORY_USAGE));
294 else if (it->name == mem_metric_details_.name) 283 std::sort(expected_metrics.begin(), expected_metrics.end());
295 EXPECT_EQ(it->description, mem_metric_details_.description); 284 EXPECT_EQ(expected_metrics, active_metrics);
296 else if (it->name == fun_metric_details_.name)
297 EXPECT_EQ(it->description, fun_metric_details_.description);
298 else
299 NOTREACHED();
300 }
301 } 285 }
302 286
303 TEST_F(PerformanceMonitorDatabaseMetricTest, GetState) { 287 TEST_F(PerformanceMonitorDatabaseMetricTest, GetState) {
304 std::string key("version"); 288 std::string key("version");
305 std::string value("1.0.0.0.1"); 289 std::string value("1.0.0.0.1");
306 db_->AddStateValue(key, value); 290 db_->AddStateValue(key, value);
307 EXPECT_EQ(db_->GetStateValue(key), value); 291 EXPECT_EQ(db_->GetStateValue(key), value);
308 } 292 }
309 293
310 TEST_F(PerformanceMonitorDatabaseMetricTest, GetStateOverride) { 294 TEST_F(PerformanceMonitorDatabaseMetricTest, GetStateOverride) {
311 std::string key("version"); 295 std::string key("version");
312 std::string value_1("1.0.0.0.0"); 296 std::string value_1("1.0.0.0.0");
313 std::string value_2("1.0.0.0.1"); 297 std::string value_2("1.0.0.0.1");
314 db_->AddStateValue(key, value_1); 298 db_->AddStateValue(key, value_1);
315 db_->AddStateValue(key, value_2); 299 db_->AddStateValue(key, value_2);
316 EXPECT_EQ(db_->GetStateValue(key), value_2); 300 EXPECT_EQ(db_->GetStateValue(key), value_2);
317 } 301 }
318 302
319 TEST_F(PerformanceMonitorDatabaseMetricTest, GetStatsForActivityAndMetric) { 303 TEST_F(PerformanceMonitorDatabaseMetricTest, GetStatsForActivityAndMetric) {
320 Database::MetricInfoVector stats = db_->GetStatsForActivityAndMetric( 304 Database::MetricInfoVector stats = db_->GetStatsForActivityAndMetric(
321 activity_, cpu_metric_, base::Time(), clock_->GetTime()); 305 activity_, METRIC_CPU_USAGE, base::Time(), clock_->GetTime());
322 ASSERT_EQ(1u, stats.size()); 306 ASSERT_EQ(1u, stats.size());
323 EXPECT_EQ(13.1, stats[0].value); 307 EXPECT_EQ(13.1, stats[0].value);
324 base::Time before = clock_->GetTime(); 308 base::Time before = clock_->GetTime();
325 db_->AddMetric(activity_, cpu_metric_, std::string("18")); 309 db_->AddMetric(activity_, METRIC_CPU_USAGE, std::string("18"));
326 stats = db_->GetStatsForActivityAndMetric(activity_, cpu_metric_, 310 stats = db_->GetStatsForActivityAndMetric(activity_, METRIC_CPU_USAGE,
327 before, clock_->GetTime()); 311 before, clock_->GetTime());
328 ASSERT_EQ(1u, stats.size()); 312 ASSERT_EQ(1u, stats.size());
329 EXPECT_EQ(18, stats[0].value); 313 EXPECT_EQ(18, stats[0].value);
330 stats = db_->GetStatsForActivityAndMetric(activity_, cpu_metric_); 314 stats = db_->GetStatsForActivityAndMetric(activity_, METRIC_CPU_USAGE);
331 ASSERT_EQ(2u, stats.size()); 315 ASSERT_EQ(2u, stats.size());
332 EXPECT_EQ(13.1, stats[0].value); 316 EXPECT_EQ(13.1, stats[0].value);
333 EXPECT_EQ(18, stats[1].value); 317 EXPECT_EQ(18, stats[1].value);
334 stats = db_->GetStatsForActivityAndMetric(mem_metric_); 318 stats = db_->GetStatsForActivityAndMetric(METRIC_PRIVATE_MEMORY_USAGE);
335 ASSERT_EQ(1u, stats.size()); 319 ASSERT_EQ(1u, stats.size());
336 EXPECT_EQ(100000, stats[0].value); 320 EXPECT_EQ(1000000, stats[0].value);
337 stats = db_->GetStatsForActivityAndMetric(activity_, cpu_metric_, 321 stats = db_->GetStatsForActivityAndMetric(activity_, METRIC_CPU_USAGE,
338 clock_->GetTime(), 322 clock_->GetTime(),
339 clock_->GetTime()); 323 clock_->GetTime());
340 EXPECT_TRUE(stats.empty()); 324 EXPECT_TRUE(stats.empty());
341 } 325 }
342 326
343 TEST_F(PerformanceMonitorDatabaseMetricTest, GetStatsForMetricByActivity) { 327 TEST_F(PerformanceMonitorDatabaseMetricTest, GetStatsForMetricByActivity) {
344 Database::MetricVectorMap stats_map = db_->GetStatsForMetricByActivity( 328 Database::MetricVectorMap stats_map = db_->GetStatsForMetricByActivity(
345 cpu_metric_, base::Time(), clock_->GetTime()); 329 METRIC_CPU_USAGE, base::Time(), clock_->GetTime());
346 ASSERT_EQ(2u, stats_map.size()); 330 ASSERT_EQ(2u, stats_map.size());
347 linked_ptr<Database::MetricInfoVector> stats = stats_map[activity_]; 331 linked_ptr<Database::MetricInfoVector> stats = stats_map[activity_];
348 ASSERT_EQ(1u, stats->size()); 332 ASSERT_EQ(1u, stats->size());
349 EXPECT_EQ(13.1, stats->at(0).value); 333 EXPECT_EQ(13.1, stats->at(0).value);
350 stats = stats_map[kProcessChromeAggregate]; 334 stats = stats_map[kProcessChromeAggregate];
351 ASSERT_EQ(1u, stats->size()); 335 ASSERT_EQ(1u, stats->size());
352 EXPECT_EQ(50.5, stats->at(0).value); 336 EXPECT_EQ(50.5, stats->at(0).value);
353 stats_map = db_->GetStatsForMetricByActivity(cpu_metric_, clock_->GetTime(), 337 stats_map = db_->GetStatsForMetricByActivity(METRIC_CPU_USAGE, clock_->GetTime (),
354 clock_->GetTime()); 338 clock_->GetTime());
355 EXPECT_EQ(0u, stats_map.size()); 339 EXPECT_EQ(0u, stats_map.size());
356 base::Time before = clock_->GetTime(); 340 base::Time before = clock_->GetTime();
357 db_->AddMetric(activity_, cpu_metric_, std::string("18")); 341 db_->AddMetric(activity_, METRIC_CPU_USAGE, std::string("18"));
358 stats_map = db_->GetStatsForMetricByActivity(cpu_metric_, before, 342 stats_map = db_->GetStatsForMetricByActivity(METRIC_CPU_USAGE, before,
359 clock_->GetTime()); 343 clock_->GetTime());
360 ASSERT_EQ(1u, stats_map.size()); 344 ASSERT_EQ(1u, stats_map.size());
361 stats = stats_map[activity_]; 345 stats = stats_map[activity_];
362 ASSERT_EQ(1u, stats->size()); 346 ASSERT_EQ(1u, stats->size());
363 EXPECT_EQ(18, stats->at(0).value); 347 EXPECT_EQ(18, stats->at(0).value);
364 } 348 }
365 349
366 TEST_F(PerformanceMonitorDatabaseMetricTest, GetFullRange) { 350 TEST_F(PerformanceMonitorDatabaseMetricTest, GetFullRange) {
367 db_->AddMetric(kProcessChromeAggregate, cpu_metric_, std::string("3.4")); 351 db_->AddMetric(kProcessChromeAggregate, METRIC_CPU_USAGE, std::string("3.4"));
368 db_->AddMetric(kProcessChromeAggregate, cpu_metric_, std::string("21")); 352 db_->AddMetric(kProcessChromeAggregate, METRIC_CPU_USAGE, std::string("21"));
369 Database::MetricInfoVector stats = 353 Database::MetricInfoVector stats =
370 db_->GetStatsForActivityAndMetric(cpu_metric_); 354 db_->GetStatsForActivityAndMetric(METRIC_CPU_USAGE);
371 ASSERT_EQ(3u, stats.size()); 355 ASSERT_EQ(3u, stats.size());
372 ASSERT_EQ(50.5, stats[0].value); 356 ASSERT_EQ(50.5, stats[0].value);
373 ASSERT_EQ(3.4, stats[1].value); 357 ASSERT_EQ(3.4, stats[1].value);
374 ASSERT_EQ(21, stats[2].value); 358 ASSERT_EQ(21, stats[2].value);
375 } 359 }
376 360
377 TEST_F(PerformanceMonitorDatabaseMetricTest, GetRange) { 361 TEST_F(PerformanceMonitorDatabaseMetricTest, GetRange) {
378 base::Time start = clock_->GetTime(); 362 base::Time start = clock_->GetTime();
379 db_->AddMetric(kProcessChromeAggregate, cpu_metric_, std::string("3")); 363 db_->AddMetric(kProcessChromeAggregate, METRIC_CPU_USAGE, std::string("3"));
380 db_->AddMetric(kProcessChromeAggregate, cpu_metric_, std::string("9")); 364 db_->AddMetric(kProcessChromeAggregate, METRIC_CPU_USAGE, std::string("9"));
381 base::Time end = clock_->GetTime(); 365 base::Time end = clock_->GetTime();
382 db_->AddMetric(kProcessChromeAggregate, cpu_metric_, std::string("21")); 366 db_->AddMetric(kProcessChromeAggregate, METRIC_CPU_USAGE, std::string("21"));
383 Database::MetricInfoVector stats = 367 Database::MetricInfoVector stats =
384 db_->GetStatsForActivityAndMetric(cpu_metric_, start, end); 368 db_->GetStatsForActivityAndMetric(METRIC_CPU_USAGE, start, end);
385 ASSERT_EQ(2u, stats.size()); 369 ASSERT_EQ(2u, stats.size());
386 ASSERT_EQ(3, stats[0].value); 370 ASSERT_EQ(3, stats[0].value);
387 ASSERT_EQ(9, stats[1].value); 371 ASSERT_EQ(9, stats[1].value);
388 } 372 }
389 373
390 } // namespace performance_monitor 374 } // namespace performance_monitor
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698