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

Unified Diff: base/trace_event/memory_dump_manager_unittest.cc

Issue 2845633002: memory-infra: Remove is_enabled_ from MDM (Closed)
Patch Set: add not reached Created 3 years, 7 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
« no previous file with comments | « base/trace_event/memory_dump_manager.cc ('k') | base/trace_event/process_memory_dump.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 a75eab2f7cabfde0f2785b1b0cfd5d0abea56f20..8c844a5cdd0e5c8402eafd792fe8fff56d1d679f 100644
--- a/base/trace_event/memory_dump_manager_unittest.cc
+++ b/base/trace_event/memory_dump_manager_unittest.cc
@@ -159,11 +159,6 @@ class MockMemoryDumpProvider : public MemoryDumpProvider {
ON_CALL(*this, OnMemoryDump(_, _))
.WillByDefault(
Invoke([](const MemoryDumpArgs&, ProcessMemoryDump* pmd) -> bool {
- // |heap_profiler_serialization_state| should not be null under
- // any circumstances when invoking a memory dump. The problem
- // might arise in race conditions like crbug.com/600570 .
- EXPECT_TRUE(pmd->heap_profiler_serialization_state().get() !=
- nullptr);
return true;
}));
@@ -341,20 +336,12 @@ class MemoryDumpManagerTest : public testing::Test {
};
// Basic sanity checks. Registers a memory dump provider and checks that it is
-// called, but only when memory-infra is enabled.
+// called.
TEST_F(MemoryDumpManagerTest, SingleDumper) {
InitializeMemoryDumpManager(false /* is_coordinator */);
MockMemoryDumpProvider mdp;
RegisterDumpProvider(&mdp, ThreadTaskRunnerHandle::Get());
- // Check that the dumper is not called if the memory category is not enabled.
- EnableTracingWithLegacyCategories("foobar-but-not-memory");
- EXPECT_CALL(global_dump_handler_, RequestGlobalMemoryDump(_, _)).Times(0);
- EXPECT_CALL(mdp, OnMemoryDump(_, _)).Times(0);
- RequestGlobalDumpAndWait(MemoryDumpType::EXPLICITLY_TRIGGERED,
- MemoryDumpLevelOfDetail::DETAILED);
- DisableTracing();
-
// Now repeat enabling the memory category and check that the dumper is
// invoked this time.
EnableTracingWithLegacyCategories(MemoryDumpManager::kTraceCategory);
@@ -918,9 +905,6 @@ TEST_F(MemoryDumpManagerTest, CallbackCalledOnFailure) {
MockMemoryDumpProvider mdp1;
RegisterDumpProvider(&mdp1, nullptr);
- EXPECT_CALL(global_dump_handler_, RequestGlobalMemoryDump(_, _)).Times(0);
- EXPECT_CALL(mdp1, OnMemoryDump(_, _)).Times(0);
-
last_callback_success_ = true;
RequestGlobalDumpAndWait(MemoryDumpType::EXPLICITLY_TRIGGERED,
MemoryDumpLevelOfDetail::DETAILED);
@@ -1053,44 +1037,6 @@ TEST_F(MemoryDumpManagerTest, TraceConfigExpectationsWhenIsCoordinator) {
DisableTracing();
}
-// Tests against race conditions that can happen if tracing is disabled before
-// the CreateProcessDump() call. Real-world regression: crbug.com/580295 .
-TEST_F(MemoryDumpManagerTest, DisableTracingRightBeforeStartOfDump) {
- base::WaitableEvent tracing_disabled_event(
- WaitableEvent::ResetPolicy::AUTOMATIC,
- WaitableEvent::InitialState::NOT_SIGNALED);
- InitializeMemoryDumpManager(false /* is_coordinator */);
-
- std::unique_ptr<Thread> mdp_thread(new Thread("test thread"));
- mdp_thread->Start();
-
- // Create both same-thread MDP and another MDP with dedicated thread
- MockMemoryDumpProvider mdp1;
- RegisterDumpProvider(&mdp1, nullptr);
- MockMemoryDumpProvider mdp2;
- RegisterDumpProvider(&mdp2, mdp_thread->task_runner(), kDefaultOptions);
- EnableTracingWithLegacyCategories(MemoryDumpManager::kTraceCategory);
-
- EXPECT_CALL(global_dump_handler_, RequestGlobalMemoryDump(_, _))
- .WillOnce(Invoke([this](const MemoryDumpRequestArgs& args,
- const GlobalMemoryDumpCallback& callback) {
- DisableTracing();
- ProcessMemoryDumpCallback process_callback =
- Bind(&ProcessDumpCallbackAdapter, callback);
- mdm_->CreateProcessDump(args, process_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);
- EXPECT_FALSE(last_callback_success_);
-}
-
TEST_F(MemoryDumpManagerTest, DumpOnBehalfOfOtherProcess) {
using trace_analyzer::Query;
@@ -1330,6 +1276,29 @@ TEST_F(MemoryDumpManagerTest, DumpWithTracingDisabled) {
mdm_->UnregisterDumpProvider(&mdp);
}
+// Tests that we can do a dump without enabling/disabling.
+TEST_F(MemoryDumpManagerTest, DumpWithoutTracing) {
+ InitializeMemoryDumpManager(false /* is_coordinator */);
+ MockMemoryDumpProvider mdp;
+ RegisterDumpProvider(&mdp, ThreadTaskRunnerHandle::Get());
+
+ DisableTracing();
+
+ EXPECT_CALL(global_dump_handler_, RequestGlobalMemoryDump(_, _)).Times(3);
+ EXPECT_CALL(mdp, OnMemoryDump(_, _)).Times(3).WillRepeatedly(Return(true));
+ last_callback_success_ = true;
+ for (int i = 0; i < 3; ++i)
+ RequestGlobalDumpAndWait(MemoryDumpType::EXPLICITLY_TRIGGERED,
+ MemoryDumpLevelOfDetail::DETAILED);
+ // The callback result should be false since (for the moment at
+ // least) a true result means that as well as the dump being
+ // successful we also managed to add the dump to the trace which shouldn't
+ // happen when tracing is not enabled.
+ EXPECT_FALSE(last_callback_success_);
+
+ mdm_->UnregisterDumpProvider(&mdp);
+}
+
TEST_F(MemoryDumpManagerTest, TestSummaryComputation) {
InitializeMemoryDumpManager(false /* is_coordinator */);
MockMemoryDumpProvider mdp;
« no previous file with comments | « base/trace_event/memory_dump_manager.cc ('k') | base/trace_event/process_memory_dump.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698