Index: base/trace_event/memory_dump_manager_unittest.cc |
diff --git a/base/trace_event/memory_dump_manager_unittest.cc b/base/trace_event/memory_dump_manager_unittest.cc |
index 589c4061a7f1bc83cd8bb66baa4fb032d9ba390f..1da9429588e14b1de200dc278a50df92e40dd945 100644 |
--- a/base/trace_event/memory_dump_manager_unittest.cc |
+++ b/base/trace_event/memory_dump_manager_unittest.cc |
@@ -81,44 +81,35 @@ class MemoryDumpManagerTest : public testing::Test { |
class MockDumpProvider : public MemoryDumpProvider { |
public: |
- MockDumpProvider() {} |
+ MockDumpProvider() : last_session_state_(nullptr) {} |
+ // Ctor used by the RespectTaskRunnerAffinity test. |
explicit MockDumpProvider( |
const scoped_refptr<SingleThreadTaskRunner>& task_runner) |
- : MemoryDumpProvider(task_runner) {} |
+ : last_session_state_(nullptr), task_runner_(task_runner) {} |
- // Ctor for the SharedSessionState test. |
- explicit MockDumpProvider(const std::string& id) { |
- DeclareAllocatorAttribute("allocator" + id, "attr" + id, "type" + id); |
- } |
- |
- MOCK_METHOD1(DumpInto, bool(ProcessMemoryDump* pmd)); |
+ virtual ~MockDumpProvider() {} |
- // DumpInto() override for the ActiveDumpProviderConsistency test. |
- bool DumpIntoAndCheckDumpProviderCurrentlyActive(ProcessMemoryDump* pmd) { |
- EXPECT_EQ( |
- this, |
- MemoryDumpManager::GetInstance()->dump_provider_currently_active()); |
- return true; |
- } |
+ MOCK_METHOD1(OnMemoryDump, bool(ProcessMemoryDump* pmd)); |
- // DumpInto() override for the RespectTaskRunnerAffinity test. |
- bool DumpIntoAndCheckTaskRunner(ProcessMemoryDump* pmd) { |
- EXPECT_TRUE(task_runner()->RunsTasksOnCurrentThread()); |
+ // OnMemoryDump() override for the RespectTaskRunnerAffinity test. |
+ bool OnMemoryDump_CheckTaskRunner(ProcessMemoryDump* pmd) { |
+ EXPECT_TRUE(task_runner_->RunsTasksOnCurrentThread()); |
return true; |
} |
- // DumpInto() override for the SharedSessionState test. |
- bool DumpIntoAndCheckSessionState(ProcessMemoryDump* pmd) { |
- EXPECT_TRUE(pmd->session_state()); |
- const auto& attrs_type_info = |
- pmd->session_state()->allocators_attributes_type_info; |
- EXPECT_TRUE(attrs_type_info.Exists("allocator1", "attr1")); |
- EXPECT_TRUE(attrs_type_info.Exists("allocator2", "attr2")); |
+ // OnMemoryDump() override for the SharedSessionState test. |
+ bool OnMemoryDump_CheckSessionState(ProcessMemoryDump* pmd) { |
+ MemoryDumpSessionState* cur_session_state = pmd->session_state().get(); |
+ if (last_session_state_) |
+ EXPECT_EQ(last_session_state_, cur_session_state); |
+ last_session_state_ = cur_session_state; |
return true; |
} |
- const char* GetFriendlyName() const override { return "MockDumpProvider"; } |
+ private: |
+ MemoryDumpSessionState* last_session_state_; |
+ scoped_refptr<SingleThreadTaskRunner> task_runner_; |
}; |
TEST_F(MemoryDumpManagerTest, SingleDumper) { |
@@ -127,14 +118,14 @@ TEST_F(MemoryDumpManagerTest, SingleDumper) { |
// Check that the dumper is not called if the memory category is not enabled. |
EnableTracing("foo-and-bar-but-not-memory"); |
- EXPECT_CALL(mdp, DumpInto(_)).Times(0); |
+ EXPECT_CALL(mdp, OnMemoryDump(_)).Times(0); |
mdm_->RequestGlobalDump(MemoryDumpType::EXPLICITLY_TRIGGERED); |
DisableTracing(); |
// Now repeat enabling the memory category and check that the dumper is |
// invoked this time. |
EnableTracing(kTraceCategory); |
- EXPECT_CALL(mdp, DumpInto(_)).Times(3).WillRepeatedly(Return(true)); |
+ EXPECT_CALL(mdp, OnMemoryDump(_)).Times(3).WillRepeatedly(Return(true)); |
for (int i = 0; i < 3; ++i) |
mdm_->RequestGlobalDump(MemoryDumpType::EXPLICITLY_TRIGGERED); |
DisableTracing(); |
@@ -143,22 +134,26 @@ TEST_F(MemoryDumpManagerTest, SingleDumper) { |
// Finally check the unregister logic (no calls to the mdp after unregister). |
EnableTracing(kTraceCategory); |
- EXPECT_CALL(mdp, DumpInto(_)).Times(0); |
+ EXPECT_CALL(mdp, OnMemoryDump(_)).Times(0); |
mdm_->RequestGlobalDump(MemoryDumpType::EXPLICITLY_TRIGGERED); |
TraceLog::GetInstance()->SetDisabled(); |
} |
TEST_F(MemoryDumpManagerTest, SharedSessionState) { |
- MockDumpProvider mdp1("1"); // Will declare an allocator property "attr1". |
- MockDumpProvider mdp2("2"); // Will declare an allocator property "attr2". |
+ MockDumpProvider mdp1; |
+ MockDumpProvider mdp2; |
mdm_->RegisterDumpProvider(&mdp1); |
mdm_->RegisterDumpProvider(&mdp2); |
EnableTracing(kTraceCategory); |
- EXPECT_CALL(mdp1, DumpInto(_)).Times(2).WillRepeatedly( |
- Invoke(&mdp1, &MockDumpProvider::DumpIntoAndCheckSessionState)); |
- EXPECT_CALL(mdp2, DumpInto(_)).Times(2).WillRepeatedly( |
- Invoke(&mdp2, &MockDumpProvider::DumpIntoAndCheckSessionState)); |
+ EXPECT_CALL(mdp1, OnMemoryDump(_)) |
+ .Times(2) |
+ .WillRepeatedly( |
+ Invoke(&mdp1, &MockDumpProvider::OnMemoryDump_CheckSessionState)); |
+ EXPECT_CALL(mdp2, OnMemoryDump(_)) |
+ .Times(2) |
+ .WillRepeatedly( |
+ Invoke(&mdp2, &MockDumpProvider::OnMemoryDump_CheckSessionState)); |
for (int i = 0; i < 2; ++i) |
mdm_->RequestGlobalDump(MemoryDumpType::EXPLICITLY_TRIGGERED); |
@@ -173,8 +168,8 @@ TEST_F(MemoryDumpManagerTest, MultipleDumpers) { |
// Enable only mdp1. |
mdm_->RegisterDumpProvider(&mdp1); |
EnableTracing(kTraceCategory); |
- EXPECT_CALL(mdp1, DumpInto(_)).Times(1).WillRepeatedly(Return(true)); |
- EXPECT_CALL(mdp2, DumpInto(_)).Times(0); |
+ EXPECT_CALL(mdp1, OnMemoryDump(_)).Times(1).WillRepeatedly(Return(true)); |
+ EXPECT_CALL(mdp2, OnMemoryDump(_)).Times(0); |
mdm_->RequestGlobalDump(MemoryDumpType::EXPLICITLY_TRIGGERED); |
DisableTracing(); |
@@ -182,16 +177,16 @@ TEST_F(MemoryDumpManagerTest, MultipleDumpers) { |
mdm_->UnregisterDumpProvider(&mdp1); |
mdm_->RegisterDumpProvider(&mdp2); |
EnableTracing(kTraceCategory); |
- EXPECT_CALL(mdp1, DumpInto(_)).Times(0); |
- EXPECT_CALL(mdp2, DumpInto(_)).Times(1).WillRepeatedly(Return(true)); |
+ EXPECT_CALL(mdp1, OnMemoryDump(_)).Times(0); |
+ EXPECT_CALL(mdp2, OnMemoryDump(_)).Times(1).WillRepeatedly(Return(true)); |
mdm_->RequestGlobalDump(MemoryDumpType::EXPLICITLY_TRIGGERED); |
DisableTracing(); |
// Enable both mdp1 and mdp2. |
mdm_->RegisterDumpProvider(&mdp1); |
EnableTracing(kTraceCategory); |
- EXPECT_CALL(mdp1, DumpInto(_)).Times(1).WillRepeatedly(Return(true)); |
- EXPECT_CALL(mdp2, DumpInto(_)).Times(1).WillRepeatedly(Return(true)); |
+ EXPECT_CALL(mdp1, OnMemoryDump(_)).Times(1).WillRepeatedly(Return(true)); |
+ EXPECT_CALL(mdp2, OnMemoryDump(_)).Times(1).WillRepeatedly(Return(true)); |
mdm_->RequestGlobalDump(MemoryDumpType::EXPLICITLY_TRIGGERED); |
DisableTracing(); |
} |
@@ -214,11 +209,11 @@ TEST_F(MemoryDumpManagerTest, RespectTaskRunnerAffinity) { |
threads.back()->Start(); |
mdps.push_back(new MockDumpProvider(threads.back()->task_runner())); |
MockDumpProvider* mdp = mdps.back(); |
- mdm_->RegisterDumpProvider(mdp); |
- EXPECT_CALL(*mdp, DumpInto(_)) |
+ mdm_->RegisterDumpProvider(mdp, threads.back()->task_runner()); |
+ EXPECT_CALL(*mdp, OnMemoryDump(_)) |
.Times(i) |
.WillRepeatedly( |
- Invoke(mdp, &MockDumpProvider::DumpIntoAndCheckTaskRunner)); |
+ Invoke(mdp, &MockDumpProvider::OnMemoryDump_CheckTaskRunner)); |
} |
EnableTracing(kTraceCategory); |
@@ -266,41 +261,16 @@ TEST_F(MemoryDumpManagerTest, DisableFailingDumpers) { |
mdm_->RegisterDumpProvider(&mdp2); |
EnableTracing(kTraceCategory); |
- EXPECT_CALL(mdp1, DumpInto(_)).Times(1).WillRepeatedly(Return(false)); |
- EXPECT_CALL(mdp2, DumpInto(_)).Times(1).WillRepeatedly(Return(true)); |
+ EXPECT_CALL(mdp1, OnMemoryDump(_)).Times(1).WillRepeatedly(Return(false)); |
+ EXPECT_CALL(mdp2, OnMemoryDump(_)).Times(1).WillRepeatedly(Return(true)); |
mdm_->RequestGlobalDump(MemoryDumpType::EXPLICITLY_TRIGGERED); |
- EXPECT_CALL(mdp1, DumpInto(_)).Times(0); |
- EXPECT_CALL(mdp2, DumpInto(_)).Times(1).WillRepeatedly(Return(false)); |
+ EXPECT_CALL(mdp1, OnMemoryDump(_)).Times(0); |
+ EXPECT_CALL(mdp2, OnMemoryDump(_)).Times(1).WillRepeatedly(Return(false)); |
mdm_->RequestGlobalDump(MemoryDumpType::EXPLICITLY_TRIGGERED); |
DisableTracing(); |
} |
-// TODO(primiano): remove once crbug.com/466121 gets fixed. |
-// Ascertains that calls to MDM::dump_provider_currently_active() actually |
-// returns the MemoryDumpProvider currently active during the DumpInto() call. |
-TEST_F(MemoryDumpManagerTest, ActiveDumpProviderConsistency) { |
- MockDumpProvider mdp1; |
- MockDumpProvider mdp2; |
- |
- mdm_->RegisterDumpProvider(&mdp1); |
- mdm_->RegisterDumpProvider(&mdp2); |
- EnableTracing(kTraceCategory); |
- EXPECT_CALL(mdp1, DumpInto(_)) |
- .Times(2) |
- .WillRepeatedly(Invoke( |
- &mdp1, |
- &MockDumpProvider::DumpIntoAndCheckDumpProviderCurrentlyActive)); |
- EXPECT_CALL(mdp2, DumpInto(_)) |
- .Times(2) |
- .WillRepeatedly(Invoke( |
- &mdp2, |
- &MockDumpProvider::DumpIntoAndCheckDumpProviderCurrentlyActive)); |
- mdm_->RequestGlobalDump(MemoryDumpType::EXPLICITLY_TRIGGERED); |
- mdm_->RequestGlobalDump(MemoryDumpType::EXPLICITLY_TRIGGERED); |
- DisableTracing(); |
-} |
- |
} // namespace trace_event |
} // namespace base |