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

Side by Side Diff: base/trace_event/memory_dump_manager_unittest.cc

Issue 1186053006: [tracing] fix a data race in MemoryDumpManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: femto perf improvement Created 5 years, 6 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 unified diff | Download patch
« no previous file with comments | « base/trace_event/memory_dump_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/trace_event/memory_dump_manager.h" 5 #include "base/trace_event/memory_dump_manager.h"
6 6
7 #include "base/bind_helpers.h" 7 #include "base/bind_helpers.h"
8 #include "base/memory/scoped_vector.h" 8 #include "base/memory/scoped_vector.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 184
185 // Enable both mdp1 and mdp2. 185 // Enable both mdp1 and mdp2.
186 mdm_->RegisterDumpProvider(&mdp1); 186 mdm_->RegisterDumpProvider(&mdp1);
187 EnableTracing(kTraceCategory); 187 EnableTracing(kTraceCategory);
188 EXPECT_CALL(mdp1, OnMemoryDump(_)).Times(1).WillRepeatedly(Return(true)); 188 EXPECT_CALL(mdp1, OnMemoryDump(_)).Times(1).WillRepeatedly(Return(true));
189 EXPECT_CALL(mdp2, OnMemoryDump(_)).Times(1).WillRepeatedly(Return(true)); 189 EXPECT_CALL(mdp2, OnMemoryDump(_)).Times(1).WillRepeatedly(Return(true));
190 mdm_->RequestGlobalDump(MemoryDumpType::EXPLICITLY_TRIGGERED); 190 mdm_->RequestGlobalDump(MemoryDumpType::EXPLICITLY_TRIGGERED);
191 DisableTracing(); 191 DisableTracing();
192 } 192 }
193 193
194 // Fails on Linux TSan. http://crbug.com/499983
195 #if defined(OS_LINUX)
196 #define MAYBE_RespectTaskRunnerAffinity DISABLED_RespectTaskRunnerAffinity
197 #else
198 #define MAYBE_RespectTaskRunnerAffinity RespectTaskRunnerAffinity
199 #endif
200
201 // Checks that the MemoryDumpManager respects the thread affinity when a 194 // Checks that the MemoryDumpManager respects the thread affinity when a
202 // MemoryDumpProvider specifies a task_runner(). The test starts creating 8 195 // MemoryDumpProvider specifies a task_runner(). The test starts creating 8
203 // threads and registering a MemoryDumpProvider on each of them. At each 196 // threads and registering a MemoryDumpProvider on each of them. At each
204 // iteration, one thread is removed, to check the live unregistration logic. 197 // iteration, one thread is removed, to check the live unregistration logic.
205 TEST_F(MemoryDumpManagerTest, MAYBE_RespectTaskRunnerAffinity) { 198 TEST_F(MemoryDumpManagerTest, RespectTaskRunnerAffinity) {
206 const uint32 kNumInitialThreads = 8; 199 const uint32 kNumInitialThreads = 8;
207 200
208 ScopedVector<Thread> threads; 201 ScopedVector<Thread> threads;
209 ScopedVector<MockDumpProvider> mdps; 202 ScopedVector<MockDumpProvider> mdps;
210 203
211 // Create the threads and setup the expectations. Given that at each iteration 204 // Create the threads and setup the expectations. Given that at each iteration
212 // we will pop out one thread/MemoryDumpProvider, each MDP is supposed to be 205 // we will pop out one thread/MemoryDumpProvider, each MDP is supposed to be
213 // invoked a number of times equal to its index. 206 // invoked a number of times equal to its index.
214 for (uint32 i = kNumInitialThreads; i > 0; --i) { 207 for (uint32 i = kNumInitialThreads; i > 0; --i) {
215 threads.push_back(new Thread("test thread")); 208 threads.push_back(new Thread("test thread"));
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 267
275 EXPECT_CALL(mdp1, OnMemoryDump(_)).Times(0); 268 EXPECT_CALL(mdp1, OnMemoryDump(_)).Times(0);
276 EXPECT_CALL(mdp2, OnMemoryDump(_)).Times(1).WillRepeatedly(Return(false)); 269 EXPECT_CALL(mdp2, OnMemoryDump(_)).Times(1).WillRepeatedly(Return(false));
277 mdm_->RequestGlobalDump(MemoryDumpType::EXPLICITLY_TRIGGERED); 270 mdm_->RequestGlobalDump(MemoryDumpType::EXPLICITLY_TRIGGERED);
278 271
279 DisableTracing(); 272 DisableTracing();
280 } 273 }
281 274
282 } // namespace trace_event 275 } // namespace trace_event
283 } // namespace base 276 } // namespace base
OLDNEW
« no previous file with comments | « base/trace_event/memory_dump_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698