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..7f1bce9b8991429509b5d81dabab4024a1bb3f25 100644 |
--- a/base/debug/activity_analyzer_unittest.cc |
+++ b/base/debug/activity_analyzer_unittest.cc |
@@ -321,6 +321,82 @@ 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.address = 0x12345678; |
+ info1.load_time = 1111; |
+ info1.size = 0xABCDEF; |
+ info1.timestamp = 111; |
+ info1.age = 11; |
+ info1.identifier[0] = 1; |
+ info1.file = "anything"; |
+ info1.debug_file = "elsewhere"; |
+ |
+ 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.address, stored1a.address); |
+ EXPECT_NE(info1.load_time, stored1a.load_time); |
+ EXPECT_EQ(info1.size, stored1a.size); |
+ EXPECT_EQ(info1.timestamp, stored1a.timestamp); |
+ EXPECT_EQ(info1.age, stored1a.age); |
+ EXPECT_EQ(info1.identifier[0], stored1a.identifier[0]); |
+ EXPECT_EQ(info1.file, stored1a.file); |
+ EXPECT_EQ(info1.debug_file, stored1a.debug_file); |
+ |
+ 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.address, stored1b.address); |
+ EXPECT_NE(info1.load_time, stored1b.load_time); |
+ EXPECT_EQ(info1.size, stored1b.size); |
+ EXPECT_EQ(info1.timestamp, stored1b.timestamp); |
+ EXPECT_EQ(info1.age, stored1b.age); |
+ EXPECT_EQ(info1.identifier[0], stored1b.identifier[0]); |
+ EXPECT_EQ(info1.file, stored1b.file); |
+ EXPECT_EQ(info1.debug_file, stored1b.debug_file); |
+ |
+ GlobalActivityTracker::ModuleInfo info2; |
+ info2.is_loaded = true; |
+ info2.address = 0x87654321; |
+ info2.load_time = 2222; |
+ info2.size = 0xFEDCBA; |
+ info2.timestamp = 222; |
+ info2.age = 22; |
+ info2.identifier[0] = 2; |
+ info2.file = "nothing"; |
+ info2.debug_file = "farewell"; |
+ |
+ 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.address, stored2.address); |
+ EXPECT_NE(info2.load_time, stored2.load_time); |
+ EXPECT_EQ(info2.size, stored2.size); |
+ EXPECT_EQ(info2.timestamp, stored2.timestamp); |
+ EXPECT_EQ(info2.age, stored2.age); |
+ EXPECT_EQ(info2.identifier[0], stored2.identifier[0]); |
+ EXPECT_EQ(info2.file, stored2.file); |
+ EXPECT_EQ(info2.debug_file, stored2.debug_file); |
+} |
+ |
TEST_F(ActivityAnalyzerTest, GlobalLogMessages) { |
GlobalActivityTracker::CreateWithLocalMemory(kMemorySize, 0, "", 3); |