Chromium Code Reviews| 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 2461e616790476de6ab95ef14a8ddc2695b21d01..0711d2937fd8b5bb2715e5f9d79b9e7edd468a3d 100644 |
| --- a/base/trace_event/memory_dump_manager_unittest.cc |
| +++ b/base/trace_event/memory_dump_manager_unittest.cc |
| @@ -117,7 +117,14 @@ class MockMemoryDumpProvider : public MemoryDumpProvider { |
| MOCK_METHOD2(OnMemoryDump, |
| bool(const MemoryDumpArgs& args, ProcessMemoryDump* pmd)); |
| - MockMemoryDumpProvider() : enable_mock_destructor(false) {} |
| + MockMemoryDumpProvider() : enable_mock_destructor(false) { |
| + ON_CALL(*this, OnMemoryDump(_, _)) |
| + .WillByDefault(Invoke([](const MemoryDumpArgs&, |
| + ProcessMemoryDump* pmd) -> bool { |
| + EXPECT_TRUE(pmd->session_state().get() != nullptr); |
|
Primiano Tucci (use gerrit)
2016/04/13 20:19:16
Plz add a comment here explaining that under no ci
|
| + return true; |
| + })); |
| + } |
| ~MockMemoryDumpProvider() override { |
| if (enable_mock_destructor) |
| Destructor(); |
| @@ -938,8 +945,14 @@ TEST_F(MemoryDumpManagerTest, DisableTracingRightBeforeStartOfDump) { |
| base::WaitableEvent tracing_disabled_event(false, false); |
| InitializeMemoryDumpManager(false /* is_coordinator */); |
| - MockMemoryDumpProvider mdp; |
| - RegisterDumpProvider(&mdp); |
| + std::unique_ptr<Thread> thread = WrapUnique(new Thread("test thread")); |
|
Primiano Tucci (use gerrit)
2016/04/13 20:19:16
as commented before, this WrapUnique is unnecessar
Primiano Tucci (use gerrit)
2016/04/13 20:19:16
s/thread/mdp_thread/ for consistency with the code
|
| + thread->Start(); |
| + |
| + // Create both same-thread MDP and another MDP with dedicated thread |
| + MockMemoryDumpProvider mdp1; |
| + RegisterDumpProvider(&mdp1); |
| + MockMemoryDumpProvider mdp2; |
| + RegisterDumpProvider(&mdp2, thread->task_runner(), kDefaultOptions); |
| EnableTracingWithLegacyCategories(MemoryDumpManager::kTraceCategory); |
| EXPECT_CALL(*delegate_, RequestGlobalMemoryDump(_, _)) |
| @@ -949,6 +962,11 @@ TEST_F(MemoryDumpManagerTest, DisableTracingRightBeforeStartOfDump) { |
| delegate_->CreateProcessDump(args, callback); |
| })); |
| + // If tracing is disabled for current session CreateProcessDump() should NOT |
| + // request dumps from providers. Real-world regression: crbug.com/600570 . |
| + EXPECT_CALL(mdp1, OnMemoryDump(_, _)).Times(0); |
| + EXPECT_CALL(mdp2, OnMemoryDump(_, _)).Times(0); |
| + |
| last_callback_success_ = true; |
| RequestGlobalDumpAndWait(MemoryDumpType::EXPLICITLY_TRIGGERED, |
| MemoryDumpLevelOfDetail::DETAILED); |