Index: base/debug/trace_event_unittest.cc |
diff --git a/base/debug/trace_event_unittest.cc b/base/debug/trace_event_unittest.cc |
index a5c889f5608f4f7758174ac835a3af64e9beb60b..c0c938098a4c5963db00e427385a24a103504c0b 100644 |
--- a/base/debug/trace_event_unittest.cc |
+++ b/base/debug/trace_event_unittest.cc |
@@ -58,20 +58,23 @@ class TraceEventTestFixture : public testing::Test { |
private: |
// We want our singleton torn down after each test. |
ShadowingAtExitManager at_exit_manager_; |
+ Lock lock_; |
}; |
void TraceEventTestFixture::ManualTestSetUp() { |
+ TraceLog::DeleteForTesting(); |
TraceLog::Resurrect(); |
TraceLog* tracelog = TraceLog::GetInstance(); |
ASSERT_TRUE(tracelog); |
ASSERT_FALSE(tracelog->IsEnabled()); |
tracelog->SetOutputCallback( |
- base::Bind(&TraceEventTestFixture::OnTraceDataCollected, |
- base::Unretained(this))); |
+ base::Bind(&TraceEventTestFixture::OnTraceDataCollected, |
+ base::Unretained(this))); |
} |
void TraceEventTestFixture::OnTraceDataCollected( |
scoped_refptr<TraceLog::RefCountedString> json_events_str) { |
+ AutoLock lock(lock_); |
trace_string_ += json_events_str->data; |
scoped_ptr<Value> root; |
@@ -283,11 +286,11 @@ void ValidateAllTraceMacrosCreatedData(const ListValue& trace_parsed, |
DictionaryValue* item = NULL; |
#define EXPECT_FIND_(string) \ |
- EXPECT_TRUE((item = FindTraceEntry(trace_parsed, string))); |
+ EXPECT_TRUE((item = FindTraceEntry(trace_parsed, string))); |
#define EXPECT_NOT_FIND_(string) \ |
- EXPECT_FALSE((item = FindTraceEntry(trace_parsed, string))); |
+ EXPECT_FALSE((item = FindTraceEntry(trace_parsed, string))); |
#define EXPECT_SUB_FIND_(string) \ |
- if (item) EXPECT_TRUE((IsStringInDict(string, item))); |
+ if (item) EXPECT_TRUE((IsStringInDict(string, item))); |
EXPECT_FIND_("ETW Trace Event"); |
EXPECT_FIND_("all"); |
@@ -679,12 +682,12 @@ TEST_F(TraceEventTestFixture, DataCapturedOnThread) { |
thread.Start(); |
thread.message_loop()->PostTask( |
- FROM_HERE, NewRunnableFunction(&TraceWithAllMacroVariants, |
- &task_complete_event)); |
+ FROM_HERE, NewRunnableFunction(&TraceWithAllMacroVariants, |
+ &task_complete_event)); |
task_complete_event.Wait(); |
+ thread.Stop(); |
TraceLog::GetInstance()->SetEnabled(false); |
- thread.Stop(); |
ValidateAllTraceMacrosCreatedData(trace_parsed_, trace_string_); |
} |
@@ -702,22 +705,22 @@ TEST_F(TraceEventTestFixture, DataCapturedManyThreads) { |
task_complete_events[i] = new WaitableEvent(false, false); |
threads[i]->Start(); |
threads[i]->message_loop()->PostTask( |
- FROM_HERE, NewRunnableFunction(&TraceManyInstantEvents, |
- i, num_events, task_complete_events[i])); |
+ FROM_HERE, NewRunnableFunction(&TraceManyInstantEvents, |
+ i, num_events, task_complete_events[i])); |
} |
for (int i = 0; i < num_threads; i++) { |
task_complete_events[i]->Wait(); |
} |
- TraceLog::GetInstance()->SetEnabled(false); |
- |
for (int i = 0; i < num_threads; i++) { |
threads[i]->Stop(); |
delete threads[i]; |
delete task_complete_events[i]; |
} |
+ TraceLog::GetInstance()->SetEnabled(false); |
+ |
ValidateInstantEventPresentOnEveryThread(trace_parsed_, trace_string_, |
num_threads, num_events); |
} |
@@ -745,21 +748,22 @@ TEST_F(TraceEventTestFixture, ThreadNames) { |
threads[i]->Start(); |
thread_ids[i] = threads[i]->thread_id(); |
threads[i]->message_loop()->PostTask( |
- FROM_HERE, NewRunnableFunction(&TraceManyInstantEvents, |
- i, num_events, task_complete_events[i])); |
+ FROM_HERE, NewRunnableFunction(&TraceManyInstantEvents, |
+ i, num_events, task_complete_events[i])); |
} |
for (int i = 0; i < num_threads; i++) { |
task_complete_events[i]->Wait(); |
} |
// Shut things down. |
- TraceLog::GetInstance()->SetEnabled(false); |
for (int i = 0; i < num_threads; i++) { |
threads[i]->Stop(); |
delete threads[i]; |
delete task_complete_events[i]; |
} |
+ TraceLog::GetInstance()->SetEnabled(false); |
+ |
std::string tmp; |
int tmp_int; |
DictionaryValue* item; |