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

Unified Diff: base/debug/activity_analyzer_unittest.cc

Issue 2566983009: Support storing information about what modules are loaded in the process. (Closed)
Patch Set: rebased Created 4 years 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: base/debug/activity_analyzer_unittest.cc
diff --git a/base/debug/activity_analyzer_unittest.cc b/base/debug/activity_analyzer_unittest.cc
index 08ed85c66db3ca274751ebc1b9c02fe0cbb9b779..2ecb811f85e87c070d10ef841069fff412ec9e55 100644
--- a/base/debug/activity_analyzer_unittest.cc
+++ b/base/debug/activity_analyzer_unittest.cc
@@ -321,6 +321,77 @@ TEST_F(ActivityAnalyzerTest, GlobalUserDataTest) {
EXPECT_EQ(strlen(string2), snapshot.at("sref").GetStringReference().size());
}
+TEST_F(ActivityAnalyzerTest, GlobalModulesTest) {
+ GlobalActivityTracker::CreateWithLocalMemory(kMemorySize, 0, "", 3);
+
+ PersistentMemoryAllocator* allocator =
+ GlobalActivityTracker::Get()->allocator();
+ GlobalActivityAnalyzer global_analyzer(MakeUnique<PersistentMemoryAllocator>(
+ const_cast<void*>(allocator->data()), allocator->size(), 0, 0, "", true));
+
+ GlobalActivityTracker::ModuleInfo info1;
+ info1.is_loaded = true;
+ info1.file = "anything";
+ info1.address = 0x12345678;
+ info1.size = 0xABCDEF;
+ info1.version = "1.2.3";
+ info1.identifier = "foo/bar";
+ info1.debug_file = "elsewhere";
+ info1.debug_identifier = "foo/baz";
+
+ GlobalActivityTracker::Get()->RecordModuleInfo(info1);
+ std::vector<GlobalActivityTracker::ModuleInfo> modules1;
+ modules1 = global_analyzer.GetModules();
+ ASSERT_EQ(1U, modules1.size());
+ GlobalActivityTracker::ModuleInfo& stored1a = modules1[0];
+ EXPECT_EQ(info1.is_loaded, stored1a.is_loaded);
+ EXPECT_EQ(info1.file, stored1a.file);
+ EXPECT_EQ(info1.address, stored1a.address);
+ EXPECT_EQ(info1.version, stored1a.version);
+ EXPECT_EQ(info1.size, stored1a.size);
+ EXPECT_EQ(info1.identifier, stored1a.identifier);
+ EXPECT_EQ(info1.debug_file, stored1a.debug_file);
+ EXPECT_EQ(info1.debug_identifier, stored1a.debug_identifier);
+
+ info1.is_loaded = false;
+ GlobalActivityTracker::Get()->RecordModuleInfo(info1);
+ modules1 = global_analyzer.GetModules();
+ ASSERT_EQ(1U, modules1.size());
+ GlobalActivityTracker::ModuleInfo& stored1b = modules1[0];
+ EXPECT_EQ(info1.is_loaded, stored1b.is_loaded);
+ EXPECT_EQ(info1.file, stored1b.file);
+ EXPECT_EQ(info1.address, stored1b.address);
+ EXPECT_EQ(info1.version, stored1b.version);
+ EXPECT_EQ(info1.size, stored1b.size);
+ EXPECT_EQ(info1.identifier, stored1b.identifier);
+ EXPECT_EQ(info1.debug_file, stored1b.debug_file);
+ EXPECT_EQ(info1.debug_identifier, stored1b.debug_identifier);
+
+ GlobalActivityTracker::ModuleInfo info2;
+ info2.is_loaded = true;
+ info2.file = "nothing";
+ info2.address = 0x87654321;
+ info2.size = 0xFEDCBA;
+ info2.version = "3.2.1";
+ info2.identifier = "fuar";
+ info2.debug_file = "farewell";
+ info2.debug_identifier = "fu/baz";
+
+ GlobalActivityTracker::Get()->RecordModuleInfo(info2);
+ std::vector<GlobalActivityTracker::ModuleInfo> modules2;
+ modules2 = global_analyzer.GetModules();
+ ASSERT_EQ(2U, modules2.size());
+ GlobalActivityTracker::ModuleInfo& stored2 = modules2[1];
+ EXPECT_EQ(info2.is_loaded, stored2.is_loaded);
+ EXPECT_EQ(info2.file, stored2.file);
+ EXPECT_EQ(info2.address, stored2.address);
+ EXPECT_EQ(info2.version, stored2.version);
+ EXPECT_EQ(info2.size, stored2.size);
+ EXPECT_EQ(info2.identifier, stored2.identifier);
+ EXPECT_EQ(info2.debug_file, stored2.debug_file);
+ EXPECT_EQ(info2.debug_identifier, stored2.debug_identifier);
+}
+
TEST_F(ActivityAnalyzerTest, GlobalLogMessages) {
GlobalActivityTracker::CreateWithLocalMemory(kMemorySize, 0, "", 3);

Powered by Google App Engine
This is Rietveld 408576698