OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/test/trace_event_analyzer.h" | 6 #include "base/test/trace_event_analyzer.h" |
7 #include "testing/gmock/include/gmock/gmock.h" | 7 #include "testing/gmock/include/gmock/gmock.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 | 9 |
10 namespace trace_analyzer { | 10 namespace trace_analyzer { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 scoped_ptr<TraceAnalyzer> | 63 scoped_ptr<TraceAnalyzer> |
64 analyzer(TraceAnalyzer::Create(output_.json_output)); | 64 analyzer(TraceAnalyzer::Create(output_.json_output)); |
65 ASSERT_TRUE(analyzer.get()); | 65 ASSERT_TRUE(analyzer.get()); |
66 | 66 |
67 // Search for all events and verify that nothing is returned. | 67 // Search for all events and verify that nothing is returned. |
68 TraceAnalyzer::TraceEventVector found; | 68 TraceAnalyzer::TraceEventVector found; |
69 analyzer->FindEvents(Query::Bool(true), &found); | 69 analyzer->FindEvents(Query::Bool(true), &found); |
70 EXPECT_EQ(0u, found.size()); | 70 EXPECT_EQ(0u, found.size()); |
71 } | 71 } |
72 | 72 |
| 73 TEST_F(TraceEventAnalyzerTest, TraceEvent) { |
| 74 using namespace trace_analyzer; |
| 75 ManualSetUp(); |
| 76 |
| 77 int int_num = 2; |
| 78 double double_num = 3.5; |
| 79 const char* str = "the string"; |
| 80 |
| 81 TraceEvent event; |
| 82 event.arg_numbers["false"] = 0.0; |
| 83 event.arg_numbers["true"] = 1.0; |
| 84 event.arg_numbers["int"] = static_cast<double>(int_num); |
| 85 event.arg_numbers["double"] = double_num; |
| 86 event.arg_strings["string"] = str; |
| 87 |
| 88 ASSERT_TRUE(event.HasNumberArg("false")); |
| 89 ASSERT_TRUE(event.HasNumberArg("true")); |
| 90 ASSERT_TRUE(event.HasNumberArg("int")); |
| 91 ASSERT_TRUE(event.HasNumberArg("double")); |
| 92 ASSERT_TRUE(event.HasStringArg("string")); |
| 93 ASSERT_FALSE(event.HasNumberArg("notfound")); |
| 94 ASSERT_FALSE(event.HasStringArg("notfound")); |
| 95 |
| 96 EXPECT_FALSE(event.GetKnownArgAsBool("false")); |
| 97 EXPECT_TRUE(event.GetKnownArgAsBool("true")); |
| 98 EXPECT_EQ(int_num, event.GetKnownArgAsInt("int")); |
| 99 EXPECT_EQ(double_num, event.GetKnownArgAsDouble("double")); |
| 100 EXPECT_STREQ(str, event.GetKnownArgAsString("string").c_str()); |
| 101 } |
| 102 |
73 TEST_F(TraceEventAnalyzerTest, QueryEventMember) { | 103 TEST_F(TraceEventAnalyzerTest, QueryEventMember) { |
74 using namespace trace_analyzer; | 104 using namespace trace_analyzer; |
75 ManualSetUp(); | 105 ManualSetUp(); |
76 | 106 |
77 TraceEvent event; | 107 TraceEvent event; |
78 event.thread.process_id = 3; | 108 event.thread.process_id = 3; |
79 event.thread.thread_id = 4; | 109 event.thread.thread_id = 4; |
80 event.timestamp = 1.5; | 110 event.timestamp = 1.5; |
81 event.phase = base::debug::TRACE_EVENT_PHASE_BEGIN; | 111 event.phase = base::debug::TRACE_EVENT_PHASE_BEGIN; |
82 event.category = "category"; | 112 event.category = "category"; |
83 event.name = "name"; | 113 event.name = "name"; |
84 event.arg_numbers["num"] = 7.0; | 114 event.arg_numbers["num"] = 7.0; |
85 event.arg_strings["str"] = "the string"; | 115 event.arg_strings["str"] = "the string"; |
86 | 116 |
87 // Other event with all different members: | 117 // Other event with all different members: |
88 TraceEvent other; | 118 TraceEvent other; |
89 other.thread.process_id = 5; | 119 other.thread.process_id = 5; |
90 other.thread.thread_id = 6; | 120 other.thread.thread_id = 6; |
91 other.timestamp = 2.5; | 121 other.timestamp = 2.5; |
92 other.phase = base::debug::TRACE_EVENT_PHASE_END; | 122 other.phase = base::debug::TRACE_EVENT_PHASE_END; |
93 other.category = "category2"; | 123 other.category = "category2"; |
94 other.name = "name2"; | 124 other.name = "name2"; |
95 other.arg_numbers["num2"] = 8.0; | 125 other.arg_numbers["num2"] = 8.0; |
96 other.arg_strings["str2"] = "the string 2"; | 126 other.arg_strings["str2"] = "the string 2"; |
97 | 127 |
98 event.other_event = &other; | 128 event.other_event = &other; |
99 double duration; | 129 ASSERT_TRUE(event.has_other_event()); |
100 ASSERT_TRUE(event.GetAbsTimeToOtherEvent(&duration)); | 130 double duration = event.GetAbsTimeToOtherEvent(); |
101 | 131 |
102 Query event_pid = (Query(EVENT_PID) == Query::Int(event.thread.process_id)); | 132 Query event_pid = (Query(EVENT_PID) == Query::Int(event.thread.process_id)); |
103 Query event_tid = (Query(EVENT_TID) == Query::Int(event.thread.thread_id)); | 133 Query event_tid = (Query(EVENT_TID) == Query::Int(event.thread.thread_id)); |
104 Query event_time = (Query(EVENT_TIME) == Query::Double(event.timestamp)); | 134 Query event_time = (Query(EVENT_TIME) == Query::Double(event.timestamp)); |
105 Query event_duration = (Query(EVENT_DURATION) == Query::Double(duration)); | 135 Query event_duration = (Query(EVENT_DURATION) == Query::Double(duration)); |
106 Query event_phase = (Query(EVENT_PHASE) == Query::Phase(event.phase)); | 136 Query event_phase = (Query(EVENT_PHASE) == Query::Phase(event.phase)); |
107 Query event_category = | 137 Query event_category = |
108 (Query(EVENT_CATEGORY) == Query::String(event.category)); | 138 (Query(EVENT_CATEGORY) == Query::String(event.category)); |
109 Query event_name = (Query(EVENT_NAME) == Query::String(event.name)); | 139 Query event_name = (Query(EVENT_NAME) == Query::String(event.name)); |
110 Query event_has_arg1 = Query(EVENT_HAS_ARG, "num"); | 140 Query event_has_arg1 = Query(EVENT_HAS_NUMBER_ARG, "num"); |
111 Query event_has_arg2 = Query(EVENT_HAS_ARG, "str"); | 141 Query event_has_arg2 = Query(EVENT_HAS_STRING_ARG, "str"); |
112 Query event_arg1 = | 142 Query event_arg1 = |
113 (Query(EVENT_ARG, "num") == Query::Double(event.arg_numbers["num"])); | 143 (Query(EVENT_ARG, "num") == Query::Double(event.arg_numbers["num"])); |
114 Query event_arg2 = | 144 Query event_arg2 = |
115 (Query(EVENT_ARG, "str") == Query::String(event.arg_strings["str"])); | 145 (Query(EVENT_ARG, "str") == Query::String(event.arg_strings["str"])); |
116 Query event_has_other = Query(EVENT_HAS_OTHER); | 146 Query event_has_other = Query(EVENT_HAS_OTHER); |
117 Query other_pid = (Query(OTHER_PID) == Query::Int(other.thread.process_id)); | 147 Query other_pid = (Query(OTHER_PID) == Query::Int(other.thread.process_id)); |
118 Query other_tid = (Query(OTHER_TID) == Query::Int(other.thread.thread_id)); | 148 Query other_tid = (Query(OTHER_TID) == Query::Int(other.thread.thread_id)); |
119 Query other_time = (Query(OTHER_TIME) == Query::Double(other.timestamp)); | 149 Query other_time = (Query(OTHER_TIME) == Query::Double(other.timestamp)); |
120 Query other_phase = (Query(OTHER_PHASE) == Query::Phase(other.phase)); | 150 Query other_phase = (Query(OTHER_PHASE) == Query::Phase(other.phase)); |
121 Query other_category = | 151 Query other_category = |
122 (Query(OTHER_CATEGORY) == Query::String(other.category)); | 152 (Query(OTHER_CATEGORY) == Query::String(other.category)); |
123 Query other_name = (Query(OTHER_NAME) == Query::String(other.name)); | 153 Query other_name = (Query(OTHER_NAME) == Query::String(other.name)); |
124 Query other_has_arg1 = Query(OTHER_HAS_ARG, "num2"); | 154 Query other_has_arg1 = Query(OTHER_HAS_NUMBER_ARG, "num2"); |
125 Query other_has_arg2 = Query(OTHER_HAS_ARG, "str2"); | 155 Query other_has_arg2 = Query(OTHER_HAS_STRING_ARG, "str2"); |
126 Query other_arg1 = | 156 Query other_arg1 = |
127 (Query(OTHER_ARG, "num2") == Query::Double(other.arg_numbers["num2"])); | 157 (Query(OTHER_ARG, "num2") == Query::Double(other.arg_numbers["num2"])); |
128 Query other_arg2 = | 158 Query other_arg2 = |
129 (Query(OTHER_ARG, "str2") == Query::String(other.arg_strings["str2"])); | 159 (Query(OTHER_ARG, "str2") == Query::String(other.arg_strings["str2"])); |
130 | 160 |
131 EXPECT_TRUE(event_pid.Evaluate(event)); | 161 EXPECT_TRUE(event_pid.Evaluate(event)); |
132 EXPECT_TRUE(event_tid.Evaluate(event)); | 162 EXPECT_TRUE(event_tid.Evaluate(event)); |
133 EXPECT_TRUE(event_time.Evaluate(event)); | 163 EXPECT_TRUE(event_time.Evaluate(event)); |
134 EXPECT_TRUE(event_duration.Evaluate(event)); | 164 EXPECT_TRUE(event_duration.Evaluate(event)); |
135 EXPECT_TRUE(event_phase.Evaluate(event)); | 165 EXPECT_TRUE(event_phase.Evaluate(event)); |
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 EXPECT_TRUE((Query::Double(1.0) == Query::Double(1.0f)).Evaluate(dummy)); | 523 EXPECT_TRUE((Query::Double(1.0) == Query::Double(1.0f)).Evaluate(dummy)); |
494 EXPECT_TRUE((Query::Bool(true) == Query::Int(1)).Evaluate(dummy)); | 524 EXPECT_TRUE((Query::Bool(true) == Query::Int(1)).Evaluate(dummy)); |
495 EXPECT_TRUE((Query::Bool(false) == Query::Int(0)).Evaluate(dummy)); | 525 EXPECT_TRUE((Query::Bool(false) == Query::Int(0)).Evaluate(dummy)); |
496 EXPECT_TRUE((Query::Bool(true) == Query::Double(1.0f)).Evaluate(dummy)); | 526 EXPECT_TRUE((Query::Bool(true) == Query::Double(1.0f)).Evaluate(dummy)); |
497 EXPECT_TRUE((Query::Bool(false) == Query::Double(0.0f)).Evaluate(dummy)); | 527 EXPECT_TRUE((Query::Bool(false) == Query::Double(0.0f)).Evaluate(dummy)); |
498 } | 528 } |
499 | 529 |
500 | 530 |
501 } // namespace trace_analyzer | 531 } // namespace trace_analyzer |
502 | 532 |
OLD | NEW |