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

Unified Diff: chrome/browser/metrics/leak_detector_controller_unittest.cc

Issue 1868193003: Store alloc history data in memory leak report protobuf (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@leak-history
Patch Set: Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698