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

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

Powered by Google App Engine
This is Rietveld 408576698