OLD | NEW |
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 Loading... |
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 |
OLD | NEW |