| Index: chrome/browser/metrics/leak_detector_controller_unittest.cc
|
| diff --git a/chrome/browser/metrics/leak_detector_controller_unittest.cc b/chrome/browser/metrics/leak_detector_controller_unittest.cc
|
| index 4da0b5d33ad241be0e8602f02a8cc934288b0e4f..85d252a79ce8e672fcbf55d1fc2589af33d0c99c 100644
|
| --- a/chrome/browser/metrics/leak_detector_controller_unittest.cc
|
| +++ b/chrome/browser/metrics/leak_detector_controller_unittest.cc
|
| @@ -69,6 +69,52 @@ TEST(LeakDetectorControllerTest, SingleReport) {
|
| ASSERT_EQ(0U, stored_reports.size());
|
| }
|
|
|
| +TEST(LeakDetectorControllerTest, SingleReportHistory) {
|
| + LeakReport report;
|
| + report.alloc_breakdown_history.resize(3);
|
| + report.alloc_breakdown_history[0].counts_by_size = {100, 200, 300};
|
| + report.alloc_breakdown_history[0].count_for_call_stack = 15;
|
| + report.alloc_breakdown_history[1].counts_by_size = {150, 250, 350, 650};
|
| + report.alloc_breakdown_history[1].count_for_call_stack = 30;
|
| + report.alloc_breakdown_history[2].counts_by_size = {200, 300, 400, 700, 800};
|
| + report.alloc_breakdown_history[2].count_for_call_stack = 45;
|
| +
|
| + TestLeakDetectorController* controller = &g_instance.Get();
|
| + controller->OnLeakFound(report);
|
| +
|
| + std::vector<MemoryLeakReportProto> stored_reports;
|
| + controller->GetLeakReports(&stored_reports);
|
| + ASSERT_EQ(1U, stored_reports.size());
|
| +
|
| + const auto& history = stored_reports[0].alloc_breakdown_history();
|
| + ASSERT_EQ(3, history.size());
|
| +
|
| + ASSERT_EQ(3, history.Get(0).counts_by_size().size());
|
| + EXPECT_EQ(100U, history.Get(0).counts_by_size(0));
|
| + EXPECT_EQ(200U, history.Get(0).counts_by_size(1));
|
| + EXPECT_EQ(300U, history.Get(0).counts_by_size(2));
|
| + EXPECT_EQ(15U, history.Get(0).count_for_call_stack());
|
| +
|
| + ASSERT_EQ(4, history.Get(1).counts_by_size_size());
|
| + EXPECT_EQ(150U, history.Get(1).counts_by_size(0));
|
| + EXPECT_EQ(250U, history.Get(1).counts_by_size(1));
|
| + EXPECT_EQ(350U, history.Get(1).counts_by_size(2));
|
| + EXPECT_EQ(650U, history.Get(1).counts_by_size(3));
|
| + EXPECT_EQ(30U, history.Get(1).count_for_call_stack());
|
| +
|
| + ASSERT_EQ(5, history.Get(2).counts_by_size_size());
|
| + EXPECT_EQ(200U, history.Get(2).counts_by_size(0));
|
| + EXPECT_EQ(300U, history.Get(2).counts_by_size(1));
|
| + EXPECT_EQ(400U, history.Get(2).counts_by_size(2));
|
| + EXPECT_EQ(700U, history.Get(2).counts_by_size(3));
|
| + EXPECT_EQ(800U, history.Get(2).counts_by_size(4));
|
| + EXPECT_EQ(45U, history.Get(2).count_for_call_stack());
|
| +
|
| + // No more reports.
|
| + controller->GetLeakReports(&stored_reports);
|
| + ASSERT_EQ(0U, stored_reports.size());
|
| +}
|
| +
|
| TEST(LeakDetectorControllerTest, MultipleReportsSeparately) {
|
| TestLeakDetectorController* controller = &g_instance.Get();
|
| std::vector<MemoryLeakReportProto> stored_reports;
|
|
|