| 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 |