OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |