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

Side by Side Diff: base/test/trace_event_analyzer_unittest.cc

Issue 22962004: Thread-local trace-event buffers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update browser_shutdown_profile_dumper Created 7 years, 3 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/debug/trace_event_unittest.cc ('k') | components/tracing/child_trace_message_filter.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/bind.h" 5 #include "base/bind.h"
6 #include "base/debug/trace_event_unittest.h" 6 #include "base/debug/trace_event_unittest.h"
7 #include "base/synchronization/waitable_event.h"
7 #include "base/test/trace_event_analyzer.h" 8 #include "base/test/trace_event_analyzer.h"
8 #include "testing/gmock/include/gmock/gmock.h" 9 #include "testing/gmock/include/gmock/gmock.h"
9 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
10 11
11 namespace trace_analyzer { 12 namespace trace_analyzer {
12 13
13 namespace { 14 namespace {
14 15
15 class TraceEventAnalyzerTest : public testing::Test { 16 class TraceEventAnalyzerTest : public testing::Test {
16 public: 17 public:
17 void ManualSetUp(); 18 void ManualSetUp();
18 void OnTraceDataCollected( 19 void OnTraceDataCollected(
19 const scoped_refptr<base::RefCountedString>& json_events_str); 20 base::WaitableEvent* flush_complete_event,
21 const scoped_refptr<base::RefCountedString>& json_events_str,
22 bool has_more_events);
20 void BeginTracing(); 23 void BeginTracing();
21 void EndTracing(); 24 void EndTracing();
22 25
23 base::debug::TraceResultBuffer::SimpleOutput output_; 26 base::debug::TraceResultBuffer::SimpleOutput output_;
24 base::debug::TraceResultBuffer buffer_; 27 base::debug::TraceResultBuffer buffer_;
25 }; 28 };
26 29
27 void TraceEventAnalyzerTest::ManualSetUp() { 30 void TraceEventAnalyzerTest::ManualSetUp() {
28 ASSERT_TRUE(base::debug::TraceLog::GetInstance()); 31 ASSERT_TRUE(base::debug::TraceLog::GetInstance());
29 buffer_.SetOutputCallback(output_.GetCallback()); 32 buffer_.SetOutputCallback(output_.GetCallback());
30 output_.json_output.clear(); 33 output_.json_output.clear();
31 } 34 }
32 35
33 void TraceEventAnalyzerTest::OnTraceDataCollected( 36 void TraceEventAnalyzerTest::OnTraceDataCollected(
34 const scoped_refptr<base::RefCountedString>& json_events_str) { 37 base::WaitableEvent* flush_complete_event,
38 const scoped_refptr<base::RefCountedString>& json_events_str,
39 bool has_more_events) {
35 buffer_.AddFragment(json_events_str->data()); 40 buffer_.AddFragment(json_events_str->data());
41 if (!has_more_events)
42 flush_complete_event->Signal();
36 } 43 }
37 44
38 void TraceEventAnalyzerTest::BeginTracing() { 45 void TraceEventAnalyzerTest::BeginTracing() {
39 output_.json_output.clear(); 46 output_.json_output.clear();
40 buffer_.Start(); 47 buffer_.Start();
41 base::debug::TraceLog::GetInstance()->SetEnabled( 48 base::debug::TraceLog::GetInstance()->SetEnabled(
42 base::debug::CategoryFilter("*"), 49 base::debug::CategoryFilter("*"),
43 base::debug::TraceLog::RECORD_UNTIL_FULL); 50 base::debug::TraceLog::RECORD_UNTIL_FULL);
44 } 51 }
45 52
46 void TraceEventAnalyzerTest::EndTracing() { 53 void TraceEventAnalyzerTest::EndTracing() {
47 base::debug::TraceLog::GetInstance()->SetDisabled(); 54 base::debug::TraceLog::GetInstance()->SetDisabled();
55 base::WaitableEvent flush_complete_event(false, false);
48 base::debug::TraceLog::GetInstance()->Flush( 56 base::debug::TraceLog::GetInstance()->Flush(
49 base::Bind(&TraceEventAnalyzerTest::OnTraceDataCollected, 57 base::Bind(&TraceEventAnalyzerTest::OnTraceDataCollected,
50 base::Unretained(this))); 58 base::Unretained(this),
59 base::Unretained(&flush_complete_event)));
60 flush_complete_event.Wait();
51 buffer_.Finish(); 61 buffer_.Finish();
52 } 62 }
53 63
54 } // namespace 64 } // namespace
55 65
56 TEST_F(TraceEventAnalyzerTest, NoEvents) { 66 TEST_F(TraceEventAnalyzerTest, NoEvents) {
57 ManualSetUp(); 67 ManualSetUp();
58 68
59 // Create an empty JSON event string: 69 // Create an empty JSON event string:
60 buffer_.Start(); 70 buffer_.Start();
(...skipping 765 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 EXPECT_EQ(num_events, CountMatches(event_ptrs, Query::Bool(true))); 836 EXPECT_EQ(num_events, CountMatches(event_ptrs, Query::Bool(true)));
827 EXPECT_EQ(num_events - 1, CountMatches(event_ptrs, Query::Bool(true), 837 EXPECT_EQ(num_events - 1, CountMatches(event_ptrs, Query::Bool(true),
828 1, num_events)); 838 1, num_events));
829 EXPECT_EQ(1u, CountMatches(event_ptrs, query_one)); 839 EXPECT_EQ(1u, CountMatches(event_ptrs, query_one));
830 EXPECT_EQ(num_events - 1, CountMatches(event_ptrs, !query_one)); 840 EXPECT_EQ(num_events - 1, CountMatches(event_ptrs, !query_one));
831 EXPECT_EQ(num_named, CountMatches(event_ptrs, query_named)); 841 EXPECT_EQ(num_named, CountMatches(event_ptrs, query_named));
832 } 842 }
833 843
834 844
835 } // namespace trace_analyzer 845 } // namespace trace_analyzer
OLDNEW
« no previous file with comments | « base/debug/trace_event_unittest.cc ('k') | components/tracing/child_trace_message_filter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698