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 <string> | 5 #include <string> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/file_path.h" | 8 #include "base/file_path.h" |
9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
11 #include "base/time.h" | 11 #include "base/time.h" |
12 #include "chrome/browser/performance_monitor/database.h" | 12 #include "chrome/browser/performance_monitor/database.h" |
13 #include "chrome/browser/performance_monitor/metric_details.h" | |
13 #include "chrome/browser/performance_monitor/performance_monitor_util.h" | 14 #include "chrome/browser/performance_monitor/performance_monitor_util.h" |
14 #include "chrome/common/extensions/extension.h" | 15 #include "chrome/common/extensions/extension.h" |
15 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
16 | 17 |
17 using extensions::Extension; | 18 using extensions::Extension; |
18 | 19 |
19 namespace performance_monitor { | 20 namespace performance_monitor { |
20 | 21 |
21 // A clock that increments every access. Great for testing. | 22 // A clock that increments every access. Great for testing. |
22 class TestingClock : public Database::Clock { | 23 class TestingClock : public Database::Clock { |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
85 | 86 |
86 class PerformanceMonitorDatabaseMetricTest : public ::testing::Test { | 87 class PerformanceMonitorDatabaseMetricTest : public ::testing::Test { |
87 protected: | 88 protected: |
88 PerformanceMonitorDatabaseMetricTest() { | 89 PerformanceMonitorDatabaseMetricTest() { |
89 clock_ = new TestingClock(); | 90 clock_ = new TestingClock(); |
90 file_util::CreateNewTempDirectory(FilePath::StringType(), &temp_path_); | 91 file_util::CreateNewTempDirectory(FilePath::StringType(), &temp_path_); |
91 db_ = Database::Create(temp_path_); | 92 db_ = Database::Create(temp_path_); |
92 CHECK(db_.get()); | 93 CHECK(db_.get()); |
93 db_->set_clock(scoped_ptr<Database::Clock>(clock_)); | 94 db_->set_clock(scoped_ptr<Database::Clock>(clock_)); |
94 activity_ = std::string("A"); | 95 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 } | 96 } |
102 | 97 |
103 void SetUp() { | 98 void SetUp() { |
104 ASSERT_TRUE(db_.get()); | 99 ASSERT_TRUE(db_.get()); |
105 PopulateDB(); | 100 PopulateDB(); |
106 } | 101 } |
107 | 102 |
103 // TODO(mtytel): Once more metrics are added, populate the database with | |
104 // different metrics. | |
108 void PopulateDB() { | 105 void PopulateDB() { |
eaugusti
2012/07/21 02:00:40
I think that testing with only one metric type doe
Matt Tytel
2012/07/21 02:11:40
Dern.. I deleted the patch set with the comment he
Matt Tytel
2012/07/23 22:24:00
Actually I just added a couple into mine.
Done.
| |
109 db_->AddMetricDetails(cpu_metric_details_); | 106 db_->AddMetric(kProcessChromeAggregate, METRIC_SAMPLE, std::string("50.5")); |
110 db_->AddMetricDetails(mem_metric_details_); | 107 db_->AddMetric(activity_, METRIC_SAMPLE, std::string("13.1")); |
111 db_->AddMetricDetails(fun_metric_details_); | |
112 db_->AddMetric(kProcessChromeAggregate, cpu_metric_, std::string("50.5")); | |
113 db_->AddMetric(activity_, cpu_metric_, std::string("13.1")); | |
114 db_->AddMetric(kProcessChromeAggregate, mem_metric_, std::string("100000")); | |
115 db_->AddMetric(activity_, mem_metric_, std::string("20000")); | |
116 db_->AddMetric(kProcessChromeAggregate, fun_metric_, std::string("3.14")); | |
117 db_->AddMetric(activity_, fun_metric_, std::string("1.68")); | |
118 } | 108 } |
119 | 109 |
120 scoped_ptr<Database> db_; | 110 scoped_ptr<Database> db_; |
121 Database::Clock* clock_; | 111 Database::Clock* clock_; |
122 FilePath temp_path_; | 112 FilePath temp_path_; |
123 std::string activity_; | 113 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 }; | 114 }; |
131 | 115 |
132 ////// PerformanceMonitorDatabaseSetupTests //////////////////////////////////// | 116 ////// PerformanceMonitorDatabaseSetupTests //////////////////////////////////// |
133 TEST(PerformanceMonitorDatabaseSetupTest, OpenClose) { | 117 TEST(PerformanceMonitorDatabaseSetupTest, OpenClose) { |
134 FilePath alternate_path; | 118 FilePath alternate_path; |
135 file_util::CreateNewTempDirectory(FilePath::StringType(), &alternate_path); | 119 file_util::CreateNewTempDirectory(FilePath::StringType(), &alternate_path); |
136 scoped_ptr<Database> db = Database::Create(alternate_path); | 120 scoped_ptr<Database> db = Database::Create(alternate_path); |
137 ASSERT_TRUE(db.get()); | 121 ASSERT_TRUE(db.get()); |
138 ASSERT_TRUE(db->Close()); | 122 ASSERT_TRUE(db->Close()); |
139 } | 123 } |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
277 EXPECT_TRUE(events[0]->data()->Equals(new_install_event->data())); | 261 EXPECT_TRUE(events[0]->data()->Equals(new_install_event->data())); |
278 EXPECT_TRUE(events[1]->data()->Equals(new_uninstall_event->data())); | 262 EXPECT_TRUE(events[1]->data()->Equals(new_uninstall_event->data())); |
279 events = db_->GetEvents( | 263 events = db_->GetEvents( |
280 EVENT_EXTENSION_INSTALL, start_time, end_time); | 264 EVENT_EXTENSION_INSTALL, start_time, end_time); |
281 ASSERT_EQ(1u, events.size()); | 265 ASSERT_EQ(1u, events.size()); |
282 EXPECT_TRUE(events[0]->data()->Equals(new_install_event->data())); | 266 EXPECT_TRUE(events[0]->data()->Equals(new_install_event->data())); |
283 } | 267 } |
284 | 268 |
285 ////// PerformanceMonitorDatabaseMetricTests /////////////////////////////////// | 269 ////// PerformanceMonitorDatabaseMetricTests /////////////////////////////////// |
286 TEST_F(PerformanceMonitorDatabaseMetricTest, GetActiveMetrics) { | 270 TEST_F(PerformanceMonitorDatabaseMetricTest, GetActiveMetrics) { |
287 std::vector<MetricDetails> metrics = | 271 std::vector<const MetricDetails*> metrics = |
288 db_->GetActiveMetrics(base::Time(), clock_->GetTime()); | 272 db_->GetActiveMetrics(base::Time(), clock_->GetTime()); |
289 ASSERT_EQ(3u, metrics.size()); | 273 ASSERT_EQ(1u, metrics.size()); |
290 std::vector<MetricDetails>::iterator it; | 274 EXPECT_EQ(GetMetricDetails(METRIC_SAMPLE), metrics[0]); |
291 for (it = metrics.begin(); it != metrics.end(); ++it) { | |
292 if (it->name == cpu_metric_details_.name) | |
293 EXPECT_EQ(it->description, cpu_metric_details_.description); | |
294 else if (it->name == mem_metric_details_.name) | |
295 EXPECT_EQ(it->description, mem_metric_details_.description); | |
296 else if (it->name == fun_metric_details_.name) | |
297 EXPECT_EQ(it->description, fun_metric_details_.description); | |
298 else | |
299 NOTREACHED(); | |
300 } | |
301 } | 275 } |
302 | 276 |
303 TEST_F(PerformanceMonitorDatabaseMetricTest, GetState) { | 277 TEST_F(PerformanceMonitorDatabaseMetricTest, GetState) { |
304 std::string key("version"); | 278 std::string key("version"); |
305 std::string value("1.0.0.0.1"); | 279 std::string value("1.0.0.0.1"); |
306 db_->AddStateValue(key, value); | 280 db_->AddStateValue(key, value); |
307 EXPECT_EQ(db_->GetStateValue(key), value); | 281 EXPECT_EQ(db_->GetStateValue(key), value); |
308 } | 282 } |
309 | 283 |
310 TEST_F(PerformanceMonitorDatabaseMetricTest, GetStateOverride) { | 284 TEST_F(PerformanceMonitorDatabaseMetricTest, GetStateOverride) { |
311 std::string key("version"); | 285 std::string key("version"); |
312 std::string value_1("1.0.0.0.0"); | 286 std::string value_1("1.0.0.0.0"); |
313 std::string value_2("1.0.0.0.1"); | 287 std::string value_2("1.0.0.0.1"); |
314 db_->AddStateValue(key, value_1); | 288 db_->AddStateValue(key, value_1); |
315 db_->AddStateValue(key, value_2); | 289 db_->AddStateValue(key, value_2); |
316 EXPECT_EQ(db_->GetStateValue(key), value_2); | 290 EXPECT_EQ(db_->GetStateValue(key), value_2); |
317 } | 291 } |
318 | 292 |
319 TEST_F(PerformanceMonitorDatabaseMetricTest, GetStatsForActivityAndMetric) { | 293 TEST_F(PerformanceMonitorDatabaseMetricTest, GetStatsForActivityAndMetric) { |
320 Database::MetricInfoVector stats = db_->GetStatsForActivityAndMetric( | 294 Database::MetricInfoVector stats = db_->GetStatsForActivityAndMetric( |
321 activity_, cpu_metric_, base::Time(), clock_->GetTime()); | 295 activity_, METRIC_SAMPLE, base::Time(), clock_->GetTime()); |
322 ASSERT_EQ(1u, stats.size()); | 296 ASSERT_EQ(1u, stats.size()); |
323 EXPECT_EQ(13.1, stats[0].value); | 297 EXPECT_EQ(13.1, stats[0].value); |
324 base::Time before = clock_->GetTime(); | 298 base::Time before = clock_->GetTime(); |
325 db_->AddMetric(activity_, cpu_metric_, std::string("18")); | 299 db_->AddMetric(activity_, METRIC_SAMPLE, std::string("18")); |
326 stats = db_->GetStatsForActivityAndMetric(activity_, cpu_metric_, | 300 stats = db_->GetStatsForActivityAndMetric(activity_, METRIC_SAMPLE, |
327 before, clock_->GetTime()); | 301 before, clock_->GetTime()); |
328 ASSERT_EQ(1u, stats.size()); | 302 ASSERT_EQ(1u, stats.size()); |
329 EXPECT_EQ(18, stats[0].value); | 303 EXPECT_EQ(18, stats[0].value); |
330 stats = db_->GetStatsForActivityAndMetric(activity_, cpu_metric_); | 304 stats = db_->GetStatsForActivityAndMetric(activity_, METRIC_SAMPLE); |
331 ASSERT_EQ(2u, stats.size()); | 305 ASSERT_EQ(2u, stats.size()); |
332 EXPECT_EQ(13.1, stats[0].value); | 306 EXPECT_EQ(13.1, stats[0].value); |
333 EXPECT_EQ(18, stats[1].value); | 307 EXPECT_EQ(18, stats[1].value); |
334 stats = db_->GetStatsForActivityAndMetric(mem_metric_); | 308 // stats = db_->GetStatsForActivityAndMetric(METRIC_NUMBER_OF_METRICS); |
eaugusti
2012/07/21 02:00:40
Why are these left in?
Matt Tytel
2012/07/21 02:11:40
Because I'm careless. When Mitchell's patch goes t
Matt Tytel
2012/07/23 22:24:00
Done.
| |
335 ASSERT_EQ(1u, stats.size()); | 309 // ASSERT_EQ(1u, stats.size()); |
336 EXPECT_EQ(100000, stats[0].value); | 310 // EXPECT_EQ(3, stats[0].value); |
337 stats = db_->GetStatsForActivityAndMetric(activity_, cpu_metric_, | 311 stats = db_->GetStatsForActivityAndMetric(activity_, METRIC_SAMPLE, |
338 clock_->GetTime(), | 312 clock_->GetTime(), |
339 clock_->GetTime()); | 313 clock_->GetTime()); |
340 EXPECT_TRUE(stats.empty()); | 314 EXPECT_TRUE(stats.empty()); |
341 } | 315 } |
342 | 316 |
343 TEST_F(PerformanceMonitorDatabaseMetricTest, GetStatsForMetricByActivity) { | 317 TEST_F(PerformanceMonitorDatabaseMetricTest, GetStatsForMetricByActivity) { |
344 Database::MetricVectorMap stats_map = db_->GetStatsForMetricByActivity( | 318 Database::MetricVectorMap stats_map = db_->GetStatsForMetricByActivity( |
345 cpu_metric_, base::Time(), clock_->GetTime()); | 319 METRIC_SAMPLE, base::Time(), clock_->GetTime()); |
346 ASSERT_EQ(2u, stats_map.size()); | 320 ASSERT_EQ(2u, stats_map.size()); |
347 linked_ptr<Database::MetricInfoVector> stats = stats_map[activity_]; | 321 linked_ptr<Database::MetricInfoVector> stats = stats_map[activity_]; |
348 ASSERT_EQ(1u, stats->size()); | 322 ASSERT_EQ(1u, stats->size()); |
349 EXPECT_EQ(13.1, stats->at(0).value); | 323 EXPECT_EQ(13.1, stats->at(0).value); |
350 stats = stats_map[kProcessChromeAggregate]; | 324 stats = stats_map[kProcessChromeAggregate]; |
351 ASSERT_EQ(1u, stats->size()); | 325 ASSERT_EQ(1u, stats->size()); |
352 EXPECT_EQ(50.5, stats->at(0).value); | 326 EXPECT_EQ(50.5, stats->at(0).value); |
353 stats_map = db_->GetStatsForMetricByActivity(cpu_metric_, clock_->GetTime(), | 327 stats_map = db_->GetStatsForMetricByActivity(METRIC_SAMPLE, clock_->GetTime(), |
354 clock_->GetTime()); | 328 clock_->GetTime()); |
355 EXPECT_EQ(0u, stats_map.size()); | 329 EXPECT_EQ(0u, stats_map.size()); |
356 base::Time before = clock_->GetTime(); | 330 base::Time before = clock_->GetTime(); |
357 db_->AddMetric(activity_, cpu_metric_, std::string("18")); | 331 db_->AddMetric(activity_, METRIC_SAMPLE, std::string("18")); |
358 stats_map = db_->GetStatsForMetricByActivity(cpu_metric_, before, | 332 stats_map = db_->GetStatsForMetricByActivity(METRIC_SAMPLE, before, |
359 clock_->GetTime()); | 333 clock_->GetTime()); |
360 ASSERT_EQ(1u, stats_map.size()); | 334 ASSERT_EQ(1u, stats_map.size()); |
361 stats = stats_map[activity_]; | 335 stats = stats_map[activity_]; |
362 ASSERT_EQ(1u, stats->size()); | 336 ASSERT_EQ(1u, stats->size()); |
363 EXPECT_EQ(18, stats->at(0).value); | 337 EXPECT_EQ(18, stats->at(0).value); |
364 } | 338 } |
365 | 339 |
366 TEST_F(PerformanceMonitorDatabaseMetricTest, GetFullRange) { | 340 TEST_F(PerformanceMonitorDatabaseMetricTest, GetFullRange) { |
367 db_->AddMetric(kProcessChromeAggregate, cpu_metric_, std::string("3.4")); | 341 db_->AddMetric(kProcessChromeAggregate, METRIC_SAMPLE, std::string("3.4")); |
368 db_->AddMetric(kProcessChromeAggregate, cpu_metric_, std::string("21")); | 342 db_->AddMetric(kProcessChromeAggregate, METRIC_SAMPLE, std::string("21")); |
369 Database::MetricInfoVector stats = | 343 Database::MetricInfoVector stats = |
370 db_->GetStatsForActivityAndMetric(cpu_metric_); | 344 db_->GetStatsForActivityAndMetric(METRIC_SAMPLE); |
371 ASSERT_EQ(3u, stats.size()); | 345 ASSERT_EQ(3u, stats.size()); |
372 ASSERT_EQ(50.5, stats[0].value); | 346 ASSERT_EQ(50.5, stats[0].value); |
373 ASSERT_EQ(3.4, stats[1].value); | 347 ASSERT_EQ(3.4, stats[1].value); |
374 ASSERT_EQ(21, stats[2].value); | 348 ASSERT_EQ(21, stats[2].value); |
375 } | 349 } |
376 | 350 |
377 TEST_F(PerformanceMonitorDatabaseMetricTest, GetRange) { | 351 TEST_F(PerformanceMonitorDatabaseMetricTest, GetRange) { |
378 base::Time start = clock_->GetTime(); | 352 base::Time start = clock_->GetTime(); |
379 db_->AddMetric(kProcessChromeAggregate, cpu_metric_, std::string("3")); | 353 db_->AddMetric(kProcessChromeAggregate, METRIC_SAMPLE, std::string("3")); |
380 db_->AddMetric(kProcessChromeAggregate, cpu_metric_, std::string("9")); | 354 db_->AddMetric(kProcessChromeAggregate, METRIC_SAMPLE, std::string("9")); |
381 base::Time end = clock_->GetTime(); | 355 base::Time end = clock_->GetTime(); |
382 db_->AddMetric(kProcessChromeAggregate, cpu_metric_, std::string("21")); | 356 db_->AddMetric(kProcessChromeAggregate, METRIC_SAMPLE, std::string("21")); |
383 Database::MetricInfoVector stats = | 357 Database::MetricInfoVector stats = |
384 db_->GetStatsForActivityAndMetric(cpu_metric_, start, end); | 358 db_->GetStatsForActivityAndMetric(METRIC_SAMPLE, start, end); |
385 ASSERT_EQ(2u, stats.size()); | 359 ASSERT_EQ(2u, stats.size()); |
386 ASSERT_EQ(3, stats[0].value); | 360 ASSERT_EQ(3, stats[0].value); |
387 ASSERT_EQ(9, stats[1].value); | 361 ASSERT_EQ(9, stats[1].value); |
388 } | 362 } |
389 | 363 |
390 } // namespace performance_monitor | 364 } // namespace performance_monitor |
OLD | NEW |