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

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

Issue 9187015: Remove usage of using namespace, and cleanup trace_analyzer namespace (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: compile Created 8 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « base/test/trace_event_analyzer.cc ('k') | chrome/test/gpu/gpu_feature_browsertest.cc » ('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/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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 } 48 }
49 49
50 void TraceEventAnalyzerTest::EndTracing() { 50 void TraceEventAnalyzerTest::EndTracing() {
51 base::debug::TraceLog::GetInstance()->SetEnabled(false); 51 base::debug::TraceLog::GetInstance()->SetEnabled(false);
52 buffer_.Finish(); 52 buffer_.Finish();
53 } 53 }
54 54
55 } // namespace 55 } // namespace
56 56
57 TEST_F(TraceEventAnalyzerTest, NoEvents) { 57 TEST_F(TraceEventAnalyzerTest, NoEvents) {
58 using namespace trace_analyzer;
59 ManualSetUp(); 58 ManualSetUp();
60 59
61 // Create an empty JSON event string: 60 // Create an empty JSON event string:
62 buffer_.Start(); 61 buffer_.Start();
63 buffer_.Finish(); 62 buffer_.Finish();
64 63
65 scoped_ptr<TraceAnalyzer> 64 scoped_ptr<TraceAnalyzer>
66 analyzer(TraceAnalyzer::Create(output_.json_output)); 65 analyzer(TraceAnalyzer::Create(output_.json_output));
67 ASSERT_TRUE(analyzer.get()); 66 ASSERT_TRUE(analyzer.get());
68 67
69 // Search for all events and verify that nothing is returned. 68 // Search for all events and verify that nothing is returned.
70 TraceEventVector found; 69 TraceEventVector found;
71 analyzer->FindEvents(Query::Bool(true), &found); 70 analyzer->FindEvents(Query::Bool(true), &found);
72 EXPECT_EQ(0u, found.size()); 71 EXPECT_EQ(0u, found.size());
73 } 72 }
74 73
75 TEST_F(TraceEventAnalyzerTest, TraceEvent) { 74 TEST_F(TraceEventAnalyzerTest, TraceEvent) {
76 using namespace trace_analyzer;
77 ManualSetUp(); 75 ManualSetUp();
78 76
79 int int_num = 2; 77 int int_num = 2;
80 double double_num = 3.5; 78 double double_num = 3.5;
81 const char* str = "the string"; 79 const char* str = "the string";
82 80
83 TraceEvent event; 81 TraceEvent event;
84 event.arg_numbers["false"] = 0.0; 82 event.arg_numbers["false"] = 0.0;
85 event.arg_numbers["true"] = 1.0; 83 event.arg_numbers["true"] = 1.0;
86 event.arg_numbers["int"] = static_cast<double>(int_num); 84 event.arg_numbers["int"] = static_cast<double>(int_num);
87 event.arg_numbers["double"] = double_num; 85 event.arg_numbers["double"] = double_num;
88 event.arg_strings["string"] = str; 86 event.arg_strings["string"] = str;
89 87
90 ASSERT_TRUE(event.HasNumberArg("false")); 88 ASSERT_TRUE(event.HasNumberArg("false"));
91 ASSERT_TRUE(event.HasNumberArg("true")); 89 ASSERT_TRUE(event.HasNumberArg("true"));
92 ASSERT_TRUE(event.HasNumberArg("int")); 90 ASSERT_TRUE(event.HasNumberArg("int"));
93 ASSERT_TRUE(event.HasNumberArg("double")); 91 ASSERT_TRUE(event.HasNumberArg("double"));
94 ASSERT_TRUE(event.HasStringArg("string")); 92 ASSERT_TRUE(event.HasStringArg("string"));
95 ASSERT_FALSE(event.HasNumberArg("notfound")); 93 ASSERT_FALSE(event.HasNumberArg("notfound"));
96 ASSERT_FALSE(event.HasStringArg("notfound")); 94 ASSERT_FALSE(event.HasStringArg("notfound"));
97 95
98 EXPECT_FALSE(event.GetKnownArgAsBool("false")); 96 EXPECT_FALSE(event.GetKnownArgAsBool("false"));
99 EXPECT_TRUE(event.GetKnownArgAsBool("true")); 97 EXPECT_TRUE(event.GetKnownArgAsBool("true"));
100 EXPECT_EQ(int_num, event.GetKnownArgAsInt("int")); 98 EXPECT_EQ(int_num, event.GetKnownArgAsInt("int"));
101 EXPECT_EQ(double_num, event.GetKnownArgAsDouble("double")); 99 EXPECT_EQ(double_num, event.GetKnownArgAsDouble("double"));
102 EXPECT_STREQ(str, event.GetKnownArgAsString("string").c_str()); 100 EXPECT_STREQ(str, event.GetKnownArgAsString("string").c_str());
103 } 101 }
104 102
105 TEST_F(TraceEventAnalyzerTest, QueryEventMember) { 103 TEST_F(TraceEventAnalyzerTest, QueryEventMember) {
106 using namespace trace_analyzer;
107 ManualSetUp(); 104 ManualSetUp();
108 105
109 TraceEvent event; 106 TraceEvent event;
110 event.thread.process_id = 3; 107 event.thread.process_id = 3;
111 event.thread.thread_id = 4; 108 event.thread.thread_id = 4;
112 event.timestamp = 1.5; 109 event.timestamp = 1.5;
113 event.phase = TRACE_EVENT_PHASE_BEGIN; 110 event.phase = TRACE_EVENT_PHASE_BEGIN;
114 event.category = "category"; 111 event.category = "category";
115 event.name = "name"; 112 event.name = "name";
116 event.id = "1"; 113 event.id = "1";
117 event.arg_numbers["num"] = 7.0; 114 event.arg_numbers["num"] = 7.0;
118 event.arg_strings["str"] = "the string"; 115 event.arg_strings["str"] = "the string";
119 116
120 // Other event with all different members: 117 // Other event with all different members:
121 TraceEvent other; 118 TraceEvent other;
122 other.thread.process_id = 5; 119 other.thread.process_id = 5;
123 other.thread.thread_id = 6; 120 other.thread.thread_id = 6;
124 other.timestamp = 2.5; 121 other.timestamp = 2.5;
125 other.phase = TRACE_EVENT_PHASE_END; 122 other.phase = TRACE_EVENT_PHASE_END;
126 other.category = "category2"; 123 other.category = "category2";
127 other.name = "name2"; 124 other.name = "name2";
128 other.id = "2"; 125 other.id = "2";
129 other.arg_numbers["num2"] = 8.0; 126 other.arg_numbers["num2"] = 8.0;
130 other.arg_strings["str2"] = "the string 2"; 127 other.arg_strings["str2"] = "the string 2";
131 128
132 event.other_event = &other; 129 event.other_event = &other;
133 ASSERT_TRUE(event.has_other_event()); 130 ASSERT_TRUE(event.has_other_event());
134 double duration = event.GetAbsTimeToOtherEvent(); 131 double duration = event.GetAbsTimeToOtherEvent();
135 132
136 Query event_pid = (Query(EVENT_PID) == Query::Int(event.thread.process_id)); 133 Query event_pid = (Query::EventPid() == Query::Int(event.thread.process_id));
137 Query event_tid = (Query(EVENT_TID) == Query::Int(event.thread.thread_id)); 134 Query event_tid = (Query::EventTid() == Query::Int(event.thread.thread_id));
138 Query event_time = (Query(EVENT_TIME) == Query::Double(event.timestamp)); 135 Query event_time = (Query::EventTime() == Query::Double(event.timestamp));
139 Query event_duration = (Query(EVENT_DURATION) == Query::Double(duration)); 136 Query event_duration = (Query::EventDuration() == Query::Double(duration));
140 Query event_phase = (Query(EVENT_PHASE) == Query::Phase(event.phase)); 137 Query event_phase = (Query::EventPhase() == Query::Phase(event.phase));
141 Query event_category = 138 Query event_category =
142 (Query(EVENT_CATEGORY) == Query::String(event.category)); 139 (Query::EventCategory() == Query::String(event.category));
143 Query event_name = (Query(EVENT_NAME) == Query::String(event.name)); 140 Query event_name = (Query::EventName() == Query::String(event.name));
144 Query event_id = (Query(EVENT_ID) == Query::String(event.id)); 141 Query event_id = (Query::EventId() == Query::String(event.id));
145 Query event_has_arg1 = Query(EVENT_HAS_NUMBER_ARG, "num"); 142 Query event_has_arg1 = Query::EventHasNumberArg("num");
146 Query event_has_arg2 = Query(EVENT_HAS_STRING_ARG, "str"); 143 Query event_has_arg2 = Query::EventHasStringArg("str");
147 Query event_arg1 = 144 Query event_arg1 =
148 (Query(EVENT_ARG, "num") == Query::Double(event.arg_numbers["num"])); 145 (Query::EventArg("num") == Query::Double(event.arg_numbers["num"]));
149 Query event_arg2 = 146 Query event_arg2 =
150 (Query(EVENT_ARG, "str") == Query::String(event.arg_strings["str"])); 147 (Query::EventArg("str") == Query::String(event.arg_strings["str"]));
151 Query event_has_other = Query(EVENT_HAS_OTHER); 148 Query event_has_other = Query::EventHasOther();
152 Query other_pid = (Query(OTHER_PID) == Query::Int(other.thread.process_id)); 149 Query other_pid = (Query::OtherPid() == Query::Int(other.thread.process_id));
153 Query other_tid = (Query(OTHER_TID) == Query::Int(other.thread.thread_id)); 150 Query other_tid = (Query::OtherTid() == Query::Int(other.thread.thread_id));
154 Query other_time = (Query(OTHER_TIME) == Query::Double(other.timestamp)); 151 Query other_time = (Query::OtherTime() == Query::Double(other.timestamp));
155 Query other_phase = (Query(OTHER_PHASE) == Query::Phase(other.phase)); 152 Query other_phase = (Query::OtherPhase() == Query::Phase(other.phase));
156 Query other_category = 153 Query other_category =
157 (Query(OTHER_CATEGORY) == Query::String(other.category)); 154 (Query::OtherCategory() == Query::String(other.category));
158 Query other_name = (Query(OTHER_NAME) == Query::String(other.name)); 155 Query other_name = (Query::OtherName() == Query::String(other.name));
159 Query other_id = (Query(OTHER_ID) == Query::String(other.id)); 156 Query other_id = (Query::OtherId() == Query::String(other.id));
160 Query other_has_arg1 = Query(OTHER_HAS_NUMBER_ARG, "num2"); 157 Query other_has_arg1 = Query::OtherHasNumberArg("num2");
161 Query other_has_arg2 = Query(OTHER_HAS_STRING_ARG, "str2"); 158 Query other_has_arg2 = Query::OtherHasStringArg("str2");
162 Query other_arg1 = 159 Query other_arg1 =
163 (Query(OTHER_ARG, "num2") == Query::Double(other.arg_numbers["num2"])); 160 (Query::OtherArg("num2") == Query::Double(other.arg_numbers["num2"]));
164 Query other_arg2 = 161 Query other_arg2 =
165 (Query(OTHER_ARG, "str2") == Query::String(other.arg_strings["str2"])); 162 (Query::OtherArg("str2") == Query::String(other.arg_strings["str2"]));
166 163
167 EXPECT_TRUE(event_pid.Evaluate(event)); 164 EXPECT_TRUE(event_pid.Evaluate(event));
168 EXPECT_TRUE(event_tid.Evaluate(event)); 165 EXPECT_TRUE(event_tid.Evaluate(event));
169 EXPECT_TRUE(event_time.Evaluate(event)); 166 EXPECT_TRUE(event_time.Evaluate(event));
170 EXPECT_TRUE(event_duration.Evaluate(event)); 167 EXPECT_TRUE(event_duration.Evaluate(event));
171 EXPECT_TRUE(event_phase.Evaluate(event)); 168 EXPECT_TRUE(event_phase.Evaluate(event));
172 EXPECT_TRUE(event_category.Evaluate(event)); 169 EXPECT_TRUE(event_category.Evaluate(event));
173 EXPECT_TRUE(event_name.Evaluate(event)); 170 EXPECT_TRUE(event_name.Evaluate(event));
174 EXPECT_TRUE(event_id.Evaluate(event)); 171 EXPECT_TRUE(event_id.Evaluate(event));
175 EXPECT_TRUE(event_has_arg1.Evaluate(event)); 172 EXPECT_TRUE(event_has_arg1.Evaluate(event));
(...skipping 24 matching lines...) Expand all
200 EXPECT_FALSE(event_name.Evaluate(other)); 197 EXPECT_FALSE(event_name.Evaluate(other));
201 EXPECT_FALSE(event_id.Evaluate(other)); 198 EXPECT_FALSE(event_id.Evaluate(other));
202 EXPECT_FALSE(event_has_arg1.Evaluate(other)); 199 EXPECT_FALSE(event_has_arg1.Evaluate(other));
203 EXPECT_FALSE(event_has_arg2.Evaluate(other)); 200 EXPECT_FALSE(event_has_arg2.Evaluate(other));
204 EXPECT_FALSE(event_arg1.Evaluate(other)); 201 EXPECT_FALSE(event_arg1.Evaluate(other));
205 EXPECT_FALSE(event_arg2.Evaluate(other)); 202 EXPECT_FALSE(event_arg2.Evaluate(other));
206 EXPECT_FALSE(event_has_other.Evaluate(other)); 203 EXPECT_FALSE(event_has_other.Evaluate(other));
207 } 204 }
208 205
209 TEST_F(TraceEventAnalyzerTest, BooleanOperators) { 206 TEST_F(TraceEventAnalyzerTest, BooleanOperators) {
210 using namespace trace_analyzer;
211 ManualSetUp(); 207 ManualSetUp();
212 208
213 BeginTracing(); 209 BeginTracing();
214 { 210 {
215 TRACE_EVENT_INSTANT1("cat1", "name1", "num", 1); 211 TRACE_EVENT_INSTANT1("cat1", "name1", "num", 1);
216 TRACE_EVENT_INSTANT1("cat1", "name2", "num", 2); 212 TRACE_EVENT_INSTANT1("cat1", "name2", "num", 2);
217 TRACE_EVENT_INSTANT1("cat2", "name3", "num", 3); 213 TRACE_EVENT_INSTANT1("cat2", "name3", "num", 3);
218 TRACE_EVENT_INSTANT1("cat2", "name4", "num", 4); 214 TRACE_EVENT_INSTANT1("cat2", "name4", "num", 4);
219 } 215 }
220 EndTracing(); 216 EndTracing();
221 217
222 scoped_ptr<TraceAnalyzer> 218 scoped_ptr<TraceAnalyzer>
223 analyzer(TraceAnalyzer::Create(output_.json_output)); 219 analyzer(TraceAnalyzer::Create(output_.json_output));
224 ASSERT_TRUE(!!analyzer.get()); 220 ASSERT_TRUE(!!analyzer.get());
225 221
226 TraceEventVector found; 222 TraceEventVector found;
227 223
228 // == 224 // ==
229 225
230 analyzer->FindEvents(Query(EVENT_CATEGORY) == Query::String("cat1"), &found); 226 analyzer->FindEvents(Query::EventCategory() == Query::String("cat1"), &found);
231 ASSERT_EQ(2u, found.size()); 227 ASSERT_EQ(2u, found.size());
232 EXPECT_STREQ("name1", found[0]->name.c_str()); 228 EXPECT_STREQ("name1", found[0]->name.c_str());
233 EXPECT_STREQ("name2", found[1]->name.c_str()); 229 EXPECT_STREQ("name2", found[1]->name.c_str());
234 230
235 analyzer->FindEvents(Query(EVENT_ARG, "num") == Query::Int(2), &found); 231 analyzer->FindEvents(Query::EventArg("num") == Query::Int(2), &found);
236 ASSERT_EQ(1u, found.size()); 232 ASSERT_EQ(1u, found.size());
237 EXPECT_STREQ("name2", found[0]->name.c_str()); 233 EXPECT_STREQ("name2", found[0]->name.c_str());
238 234
239 // != 235 // !=
240 236
241 analyzer->FindEvents(Query(EVENT_CATEGORY) != Query::String("cat1"), &found); 237 analyzer->FindEvents(Query::EventCategory() != Query::String("cat1"), &found);
242 ASSERT_EQ(2u, found.size()); 238 ASSERT_EQ(2u, found.size());
243 EXPECT_STREQ("name3", found[0]->name.c_str()); 239 EXPECT_STREQ("name3", found[0]->name.c_str());
244 EXPECT_STREQ("name4", found[1]->name.c_str()); 240 EXPECT_STREQ("name4", found[1]->name.c_str());
245 241
246 analyzer->FindEvents(Query(EVENT_ARG, "num") != Query::Int(2), &found); 242 analyzer->FindEvents(Query::EventArg("num") != Query::Int(2), &found);
247 ASSERT_EQ(3u, found.size()); 243 ASSERT_EQ(3u, found.size());
248 EXPECT_STREQ("name1", found[0]->name.c_str()); 244 EXPECT_STREQ("name1", found[0]->name.c_str());
249 EXPECT_STREQ("name3", found[1]->name.c_str()); 245 EXPECT_STREQ("name3", found[1]->name.c_str());
250 EXPECT_STREQ("name4", found[2]->name.c_str()); 246 EXPECT_STREQ("name4", found[2]->name.c_str());
251 247
252 // < 248 // <
253 analyzer->FindEvents(Query(EVENT_ARG, "num") < Query::Int(2), &found); 249 analyzer->FindEvents(Query::EventArg("num") < Query::Int(2), &found);
254 ASSERT_EQ(1u, found.size()); 250 ASSERT_EQ(1u, found.size());
255 EXPECT_STREQ("name1", found[0]->name.c_str()); 251 EXPECT_STREQ("name1", found[0]->name.c_str());
256 252
257 // <= 253 // <=
258 analyzer->FindEvents(Query(EVENT_ARG, "num") <= Query::Int(2), &found); 254 analyzer->FindEvents(Query::EventArg("num") <= Query::Int(2), &found);
259 ASSERT_EQ(2u, found.size()); 255 ASSERT_EQ(2u, found.size());
260 EXPECT_STREQ("name1", found[0]->name.c_str()); 256 EXPECT_STREQ("name1", found[0]->name.c_str());
261 EXPECT_STREQ("name2", found[1]->name.c_str()); 257 EXPECT_STREQ("name2", found[1]->name.c_str());
262 258
263 // > 259 // >
264 analyzer->FindEvents(Query(EVENT_ARG, "num") > Query::Int(3), &found); 260 analyzer->FindEvents(Query::EventArg("num") > Query::Int(3), &found);
265 ASSERT_EQ(1u, found.size()); 261 ASSERT_EQ(1u, found.size());
266 EXPECT_STREQ("name4", found[0]->name.c_str()); 262 EXPECT_STREQ("name4", found[0]->name.c_str());
267 263
268 // >= 264 // >=
269 analyzer->FindEvents(Query(EVENT_ARG, "num") >= Query::Int(4), &found); 265 analyzer->FindEvents(Query::EventArg("num") >= Query::Int(4), &found);
270 ASSERT_EQ(1u, found.size()); 266 ASSERT_EQ(1u, found.size());
271 EXPECT_STREQ("name4", found[0]->name.c_str()); 267 EXPECT_STREQ("name4", found[0]->name.c_str());
272 268
273 // && 269 // &&
274 analyzer->FindEvents(Query(EVENT_NAME) != Query::String("name1") && 270 analyzer->FindEvents(Query::EventName() != Query::String("name1") &&
275 Query(EVENT_ARG, "num") < Query::Int(3), &found); 271 Query::EventArg("num") < Query::Int(3), &found);
276 ASSERT_EQ(1u, found.size()); 272 ASSERT_EQ(1u, found.size());
277 EXPECT_STREQ("name2", found[0]->name.c_str()); 273 EXPECT_STREQ("name2", found[0]->name.c_str());
278 274
279 // || 275 // ||
280 analyzer->FindEvents(Query(EVENT_NAME) == Query::String("name1") || 276 analyzer->FindEvents(Query::EventName() == Query::String("name1") ||
281 Query(EVENT_ARG, "num") == Query::Int(3), &found); 277 Query::EventArg("num") == Query::Int(3), &found);
282 ASSERT_EQ(2u, found.size()); 278 ASSERT_EQ(2u, found.size());
283 EXPECT_STREQ("name1", found[0]->name.c_str()); 279 EXPECT_STREQ("name1", found[0]->name.c_str());
284 EXPECT_STREQ("name3", found[1]->name.c_str()); 280 EXPECT_STREQ("name3", found[1]->name.c_str());
285 281
286 // ! 282 // !
287 analyzer->FindEvents(!(Query(EVENT_NAME) == Query::String("name1") || 283 analyzer->FindEvents(!(Query::EventName() == Query::String("name1") ||
288 Query(EVENT_ARG, "num") == Query::Int(3)), &found); 284 Query::EventArg("num") == Query::Int(3)), &found);
289 ASSERT_EQ(2u, found.size()); 285 ASSERT_EQ(2u, found.size());
290 EXPECT_STREQ("name2", found[0]->name.c_str()); 286 EXPECT_STREQ("name2", found[0]->name.c_str());
291 EXPECT_STREQ("name4", found[1]->name.c_str()); 287 EXPECT_STREQ("name4", found[1]->name.c_str());
292 } 288 }
293 289
294 TEST_F(TraceEventAnalyzerTest, ArithmeticOperators) { 290 TEST_F(TraceEventAnalyzerTest, ArithmeticOperators) {
295 using namespace trace_analyzer;
296 ManualSetUp(); 291 ManualSetUp();
297 292
298 BeginTracing(); 293 BeginTracing();
299 { 294 {
300 // These events are searched for: 295 // These events are searched for:
301 TRACE_EVENT_INSTANT2("cat1", "math1", "a", 10, "b", 5); 296 TRACE_EVENT_INSTANT2("cat1", "math1", "a", 10, "b", 5);
302 TRACE_EVENT_INSTANT2("cat1", "math2", "a", 10, "b", 10); 297 TRACE_EVENT_INSTANT2("cat1", "math2", "a", 10, "b", 10);
303 // Extra events that never match, for noise: 298 // Extra events that never match, for noise:
304 TRACE_EVENT_INSTANT2("noise", "math3", "a", 1, "b", 3); 299 TRACE_EVENT_INSTANT2("noise", "math3", "a", 1, "b", 3);
305 TRACE_EVENT_INSTANT2("noise", "math4", "c", 10, "d", 5); 300 TRACE_EVENT_INSTANT2("noise", "math4", "c", 10, "d", 5);
306 } 301 }
307 EndTracing(); 302 EndTracing();
308 303
309 scoped_ptr<TraceAnalyzer> 304 scoped_ptr<TraceAnalyzer>
310 analyzer(TraceAnalyzer::Create(output_.json_output)); 305 analyzer(TraceAnalyzer::Create(output_.json_output));
311 ASSERT_TRUE(analyzer.get()); 306 ASSERT_TRUE(analyzer.get());
312 307
313 TraceEventVector found; 308 TraceEventVector found;
314 309
315 // Verify that arithmetic operators function: 310 // Verify that arithmetic operators function:
316 311
317 // + 312 // +
318 analyzer->FindEvents(Query(EVENT_ARG, "a") + Query(EVENT_ARG, "b") == 313 analyzer->FindEvents(Query::EventArg("a") + Query::EventArg("b") ==
319 Query::Int(20), &found); 314 Query::Int(20), &found);
320 EXPECT_EQ(1u, found.size()); 315 EXPECT_EQ(1u, found.size());
321 EXPECT_STREQ("math2", found.front()->name.c_str()); 316 EXPECT_STREQ("math2", found.front()->name.c_str());
322 317
323 // - 318 // -
324 analyzer->FindEvents(Query(EVENT_ARG, "a") - Query(EVENT_ARG, "b") == 319 analyzer->FindEvents(Query::EventArg("a") - Query::EventArg("b") ==
325 Query::Int(5), &found); 320 Query::Int(5), &found);
326 EXPECT_EQ(1u, found.size()); 321 EXPECT_EQ(1u, found.size());
327 EXPECT_STREQ("math1", found.front()->name.c_str()); 322 EXPECT_STREQ("math1", found.front()->name.c_str());
328 323
329 // * 324 // *
330 analyzer->FindEvents(Query(EVENT_ARG, "a") * Query(EVENT_ARG, "b") == 325 analyzer->FindEvents(Query::EventArg("a") * Query::EventArg("b") ==
331 Query::Int(50), &found); 326 Query::Int(50), &found);
332 EXPECT_EQ(1u, found.size()); 327 EXPECT_EQ(1u, found.size());
333 EXPECT_STREQ("math1", found.front()->name.c_str()); 328 EXPECT_STREQ("math1", found.front()->name.c_str());
334 329
335 // / 330 // /
336 analyzer->FindEvents(Query(EVENT_ARG, "a") / Query(EVENT_ARG, "b") == 331 analyzer->FindEvents(Query::EventArg("a") / Query::EventArg("b") ==
337 Query::Int(2), &found); 332 Query::Int(2), &found);
338 EXPECT_EQ(1u, found.size()); 333 EXPECT_EQ(1u, found.size());
339 EXPECT_STREQ("math1", found.front()->name.c_str()); 334 EXPECT_STREQ("math1", found.front()->name.c_str());
340 335
341 // % 336 // %
342 analyzer->FindEvents(Query(EVENT_ARG, "a") % Query(EVENT_ARG, "b") == 337 analyzer->FindEvents(Query::EventArg("a") % Query::EventArg("b") ==
343 Query::Int(0), &found); 338 Query::Int(0), &found);
344 EXPECT_EQ(2u, found.size()); 339 EXPECT_EQ(2u, found.size());
345 340
346 // - (negate) 341 // - (negate)
347 analyzer->FindEvents(-Query(EVENT_ARG, "b") == Query::Int(-10), &found); 342 analyzer->FindEvents(-Query::EventArg("b") == Query::Int(-10), &found);
348 EXPECT_EQ(1u, found.size()); 343 EXPECT_EQ(1u, found.size());
349 EXPECT_STREQ("math2", found.front()->name.c_str()); 344 EXPECT_STREQ("math2", found.front()->name.c_str());
350 } 345 }
351 346
352 TEST_F(TraceEventAnalyzerTest, StringPattern) { 347 TEST_F(TraceEventAnalyzerTest, StringPattern) {
353 using namespace trace_analyzer;
354 ManualSetUp(); 348 ManualSetUp();
355 349
356 BeginTracing(); 350 BeginTracing();
357 { 351 {
358 TRACE_EVENT_INSTANT0("cat1", "name1"); 352 TRACE_EVENT_INSTANT0("cat1", "name1");
359 TRACE_EVENT_INSTANT0("cat1", "name2"); 353 TRACE_EVENT_INSTANT0("cat1", "name2");
360 TRACE_EVENT_INSTANT0("cat1", "no match"); 354 TRACE_EVENT_INSTANT0("cat1", "no match");
361 TRACE_EVENT_INSTANT0("cat1", "name3x"); 355 TRACE_EVENT_INSTANT0("cat1", "name3x");
362 } 356 }
363 EndTracing(); 357 EndTracing();
364 358
365 scoped_ptr<TraceAnalyzer> 359 scoped_ptr<TraceAnalyzer>
366 analyzer(TraceAnalyzer::Create(output_.json_output)); 360 analyzer(TraceAnalyzer::Create(output_.json_output));
367 ASSERT_TRUE(analyzer.get()); 361 ASSERT_TRUE(analyzer.get());
368 362
369 TraceEventVector found; 363 TraceEventVector found;
370 364
371 analyzer->FindEvents(Query(EVENT_NAME) == Query::Pattern("name?"), &found); 365 analyzer->FindEvents(Query::EventName() == Query::Pattern("name?"), &found);
372 ASSERT_EQ(2u, found.size()); 366 ASSERT_EQ(2u, found.size());
373 EXPECT_STREQ("name1", found[0]->name.c_str()); 367 EXPECT_STREQ("name1", found[0]->name.c_str());
374 EXPECT_STREQ("name2", found[1]->name.c_str()); 368 EXPECT_STREQ("name2", found[1]->name.c_str());
375 369
376 analyzer->FindEvents(Query(EVENT_NAME) == Query::Pattern("name*"), &found); 370 analyzer->FindEvents(Query::EventName() == Query::Pattern("name*"), &found);
377 ASSERT_EQ(3u, found.size()); 371 ASSERT_EQ(3u, found.size());
378 EXPECT_STREQ("name1", found[0]->name.c_str()); 372 EXPECT_STREQ("name1", found[0]->name.c_str());
379 EXPECT_STREQ("name2", found[1]->name.c_str()); 373 EXPECT_STREQ("name2", found[1]->name.c_str());
380 EXPECT_STREQ("name3x", found[2]->name.c_str()); 374 EXPECT_STREQ("name3x", found[2]->name.c_str());
381 375
382 analyzer->FindEvents(Query(EVENT_NAME) != Query::Pattern("name*"), &found); 376 analyzer->FindEvents(Query::EventName() != Query::Pattern("name*"), &found);
383 ASSERT_EQ(1u, found.size()); 377 ASSERT_EQ(1u, found.size());
384 EXPECT_STREQ("no match", found[0]->name.c_str()); 378 EXPECT_STREQ("no match", found[0]->name.c_str());
385 } 379 }
386 380
387 // Test that duration queries work. 381 // Test that duration queries work.
388 TEST_F(TraceEventAnalyzerTest, Duration) { 382 TEST_F(TraceEventAnalyzerTest, Duration) {
389 using namespace trace_analyzer;
390 ManualSetUp(); 383 ManualSetUp();
391 384
392 const base::TimeDelta kSleepTime = base::TimeDelta::FromMilliseconds(200); 385 const base::TimeDelta kSleepTime = base::TimeDelta::FromMilliseconds(200);
393 // We will search for events that have a duration of greater than 90% of the 386 // We will search for events that have a duration of greater than 90% of the
394 // sleep time, so that there is no flakiness. 387 // sleep time, so that there is no flakiness.
395 int duration_cutoff_us = (kSleepTime.InMicroseconds() * 9) / 10; 388 int duration_cutoff_us = (kSleepTime.InMicroseconds() * 9) / 10;
396 389
397 BeginTracing(); 390 BeginTracing();
398 { 391 {
399 TRACE_EVENT0("cat1", "name1"); // found by duration query 392 TRACE_EVENT0("cat1", "name1"); // found by duration query
400 TRACE_EVENT0("noise", "name2"); // not searched for, just noise 393 TRACE_EVENT0("noise", "name2"); // not searched for, just noise
401 { 394 {
402 TRACE_EVENT0("cat2", "name3"); // found by duration query 395 TRACE_EVENT0("cat2", "name3"); // found by duration query
403 TRACE_EVENT_INSTANT0("noise", "name4"); // not searched for, just noise 396 TRACE_EVENT_INSTANT0("noise", "name4"); // not searched for, just noise
404 base::PlatformThread::Sleep(kSleepTime); 397 base::PlatformThread::Sleep(kSleepTime);
405 TRACE_EVENT0("cat2", "name5"); // not found (duration too short) 398 TRACE_EVENT0("cat2", "name5"); // not found (duration too short)
406 } 399 }
407 } 400 }
408 EndTracing(); 401 EndTracing();
409 402
410 scoped_ptr<TraceAnalyzer> 403 scoped_ptr<TraceAnalyzer>
411 analyzer(TraceAnalyzer::Create(output_.json_output)); 404 analyzer(TraceAnalyzer::Create(output_.json_output));
412 ASSERT_TRUE(analyzer.get()); 405 ASSERT_TRUE(analyzer.get());
413 analyzer->AssociateBeginEndEvents(); 406 analyzer->AssociateBeginEndEvents();
414 407
415 TraceEventVector found; 408 TraceEventVector found;
416 analyzer->FindEvents(Query::MatchBeginWithEnd() && 409 analyzer->FindEvents(
417 Query(EVENT_DURATION) > Query::Int(duration_cutoff_us) && 410 Query::MatchBeginWithEnd() &&
418 (Query(EVENT_CATEGORY) == Query::String("cat1") || 411 Query::EventDuration() > Query::Int(duration_cutoff_us) &&
419 Query(EVENT_CATEGORY) == Query::String("cat2") || 412 (Query::EventCategory() == Query::String("cat1") ||
420 Query(EVENT_CATEGORY) == Query::String("cat3")), &found); 413 Query::EventCategory() == Query::String("cat2") ||
414 Query::EventCategory() == Query::String("cat3")),
415 &found);
421 ASSERT_EQ(2u, found.size()); 416 ASSERT_EQ(2u, found.size());
422 EXPECT_STREQ("name1", found[0]->name.c_str()); 417 EXPECT_STREQ("name1", found[0]->name.c_str());
423 EXPECT_STREQ("name3", found[1]->name.c_str()); 418 EXPECT_STREQ("name3", found[1]->name.c_str());
424 } 419 }
425 420
426 // Test AssociateBeginEndEvents 421 // Test AssociateBeginEndEvents
427 TEST_F(TraceEventAnalyzerTest, BeginEndAssocations) { 422 TEST_F(TraceEventAnalyzerTest, BeginEndAssocations) {
428 using namespace trace_analyzer;
429 ManualSetUp(); 423 ManualSetUp();
430 424
431 BeginTracing(); 425 BeginTracing();
432 { 426 {
433 TRACE_EVENT_END0("cat1", "name1"); // does not match out of order begin 427 TRACE_EVENT_END0("cat1", "name1"); // does not match out of order begin
434 TRACE_EVENT0("cat1", "name2"); 428 TRACE_EVENT0("cat1", "name2");
435 TRACE_EVENT_INSTANT0("cat1", "name3"); 429 TRACE_EVENT_INSTANT0("cat1", "name3");
436 TRACE_EVENT_BEGIN0("cat1", "name1"); 430 TRACE_EVENT_BEGIN0("cat1", "name1");
437 } 431 }
438 EndTracing(); 432 EndTracing();
439 433
440 scoped_ptr<TraceAnalyzer> 434 scoped_ptr<TraceAnalyzer>
441 analyzer(TraceAnalyzer::Create(output_.json_output)); 435 analyzer(TraceAnalyzer::Create(output_.json_output));
442 ASSERT_TRUE(analyzer.get()); 436 ASSERT_TRUE(analyzer.get());
443 analyzer->AssociateBeginEndEvents(); 437 analyzer->AssociateBeginEndEvents();
444 438
445 TraceEventVector found; 439 TraceEventVector found;
446 analyzer->FindEvents(Query::MatchBeginWithEnd(), &found); 440 analyzer->FindEvents(Query::MatchBeginWithEnd(), &found);
447 ASSERT_EQ(1u, found.size()); 441 ASSERT_EQ(1u, found.size());
448 EXPECT_STREQ("name2", found[0]->name.c_str()); 442 EXPECT_STREQ("name2", found[0]->name.c_str());
449 } 443 }
450 444
451 // Test MergeAssociatedEventArgs 445 // Test MergeAssociatedEventArgs
452 TEST_F(TraceEventAnalyzerTest, MergeAssociatedEventArgs) { 446 TEST_F(TraceEventAnalyzerTest, MergeAssociatedEventArgs) {
453 using namespace trace_analyzer;
454 ManualSetUp(); 447 ManualSetUp();
455 448
456 const char* arg_string = "arg_string"; 449 const char* arg_string = "arg_string";
457 BeginTracing(); 450 BeginTracing();
458 { 451 {
459 TRACE_EVENT1("cat1", "name1", "arg", arg_string); 452 TRACE_EVENT1("cat1", "name1", "arg", arg_string);
460 } 453 }
461 EndTracing(); 454 EndTracing();
462 455
463 scoped_ptr<TraceAnalyzer> 456 scoped_ptr<TraceAnalyzer>
464 analyzer(TraceAnalyzer::Create(output_.json_output)); 457 analyzer(TraceAnalyzer::Create(output_.json_output));
465 ASSERT_TRUE(analyzer.get()); 458 ASSERT_TRUE(analyzer.get());
466 analyzer->AssociateBeginEndEvents(); 459 analyzer->AssociateBeginEndEvents();
467 460
468 TraceEventVector found; 461 TraceEventVector found;
469 analyzer->FindEvents(Query(EVENT_NAME) == Query::String("name1") && 462 analyzer->FindEvents(Query::EventName() == Query::String("name1") &&
470 Query(EVENT_PHASE) == Query::Phase(TRACE_EVENT_PHASE_END), &found); 463 Query::EventPhase() == Query::Phase(TRACE_EVENT_PHASE_END), &found);
471 ASSERT_EQ(1u, found.size()); 464 ASSERT_EQ(1u, found.size());
472 std::string arg_actual; 465 std::string arg_actual;
473 EXPECT_FALSE(found[0]->GetArgAsString("arg", &arg_actual)); 466 EXPECT_FALSE(found[0]->GetArgAsString("arg", &arg_actual));
474 467
475 analyzer->MergeAssociatedEventArgs(); 468 analyzer->MergeAssociatedEventArgs();
476 EXPECT_TRUE(found[0]->GetArgAsString("arg", &arg_actual)); 469 EXPECT_TRUE(found[0]->GetArgAsString("arg", &arg_actual));
477 EXPECT_STREQ(arg_string, arg_actual.c_str()); 470 EXPECT_STREQ(arg_string, arg_actual.c_str());
478 } 471 }
479 472
480 // Test AssociateStartFinishEvents 473 // Test AssociateStartFinishEvents
481 TEST_F(TraceEventAnalyzerTest, StartFinishAssocations) { 474 TEST_F(TraceEventAnalyzerTest, StartFinishAssocations) {
482 using namespace trace_analyzer;
483 ManualSetUp(); 475 ManualSetUp();
484 476
485 BeginTracing(); 477 BeginTracing();
486 { 478 {
487 TRACE_EVENT_FINISH0("cat1", "name1", 0xA); // does not match / out of order 479 TRACE_EVENT_FINISH0("cat1", "name1", 0xA); // does not match / out of order
488 TRACE_EVENT_START0("cat1", "name1", 0xB); 480 TRACE_EVENT_START0("cat1", "name1", 0xB);
489 TRACE_EVENT_START0("cat1", "name1", 0xC); 481 TRACE_EVENT_START0("cat1", "name1", 0xC);
490 TRACE_EVENT_INSTANT0("cat1", "name1"); // noise 482 TRACE_EVENT_INSTANT0("cat1", "name1"); // noise
491 TRACE_EVENT0("cat1", "name1"); // noise 483 TRACE_EVENT0("cat1", "name1"); // noise
492 TRACE_EVENT_FINISH0("cat1", "name1", 0xB); 484 TRACE_EVENT_FINISH0("cat1", "name1", 0xB);
493 TRACE_EVENT_FINISH0("cat1", "name1", 0xC); 485 TRACE_EVENT_FINISH0("cat1", "name1", 0xC);
494 TRACE_EVENT_START0("cat1", "name1", 0xA); // does not match / out of order 486 TRACE_EVENT_START0("cat1", "name1", 0xA); // does not match / out of order
495 } 487 }
496 EndTracing(); 488 EndTracing();
497 489
498 scoped_ptr<TraceAnalyzer> 490 scoped_ptr<TraceAnalyzer>
499 analyzer(TraceAnalyzer::Create(output_.json_output)); 491 analyzer(TraceAnalyzer::Create(output_.json_output));
500 ASSERT_TRUE(analyzer.get()); 492 ASSERT_TRUE(analyzer.get());
501 analyzer->AssociateStartFinishEvents(); 493 analyzer->AssociateStartFinishEvents();
502 494
503 TraceEventVector found; 495 TraceEventVector found;
504 analyzer->FindEvents(Query::MatchStartWithFinish(), &found); 496 analyzer->FindEvents(Query::MatchStartWithFinish(), &found);
505 ASSERT_EQ(2u, found.size()); 497 ASSERT_EQ(2u, found.size());
506 EXPECT_STRCASEEQ("B", found[0]->id.c_str()); 498 EXPECT_STRCASEEQ("B", found[0]->id.c_str());
507 EXPECT_STRCASEEQ("C", found[1]->id.c_str()); 499 EXPECT_STRCASEEQ("C", found[1]->id.c_str());
508 } 500 }
509 501
510 // Test that the TraceAnalyzer custom associations work. 502 // Test that the TraceAnalyzer custom associations work.
511 TEST_F(TraceEventAnalyzerTest, CustomAssociations) { 503 TEST_F(TraceEventAnalyzerTest, CustomAssociations) {
512 using namespace trace_analyzer;
513 ManualSetUp(); 504 ManualSetUp();
514 505
515 // Add events that begin/end in pipelined ordering with unique ID parameter 506 // Add events that begin/end in pipelined ordering with unique ID parameter
516 // to match up the begin/end pairs. 507 // to match up the begin/end pairs.
517 BeginTracing(); 508 BeginTracing();
518 { 509 {
519 TRACE_EVENT_INSTANT1("cat1", "end", "id", 1); // no begin match 510 TRACE_EVENT_INSTANT1("cat1", "end", "id", 1); // no begin match
520 TRACE_EVENT_INSTANT1("cat2", "begin", "id", 2); // end is cat4 511 TRACE_EVENT_INSTANT1("cat2", "begin", "id", 2); // end is cat4
521 TRACE_EVENT_INSTANT1("cat3", "begin", "id", 3); // end is cat5 512 TRACE_EVENT_INSTANT1("cat3", "begin", "id", 3); // end is cat5
522 TRACE_EVENT_INSTANT1("cat4", "end", "id", 2); 513 TRACE_EVENT_INSTANT1("cat4", "end", "id", 2);
523 TRACE_EVENT_INSTANT1("cat5", "end", "id", 3); 514 TRACE_EVENT_INSTANT1("cat5", "end", "id", 3);
524 TRACE_EVENT_INSTANT1("cat6", "begin", "id", 1); // no end match 515 TRACE_EVENT_INSTANT1("cat6", "begin", "id", 1); // no end match
525 } 516 }
526 EndTracing(); 517 EndTracing();
527 518
528 scoped_ptr<TraceAnalyzer> 519 scoped_ptr<TraceAnalyzer>
529 analyzer(TraceAnalyzer::Create(output_.json_output)); 520 analyzer(TraceAnalyzer::Create(output_.json_output));
530 ASSERT_TRUE(analyzer.get()); 521 ASSERT_TRUE(analyzer.get());
531 522
532 // begin, end, and match queries to find proper begin/end pairs. 523 // begin, end, and match queries to find proper begin/end pairs.
533 Query begin(Query(EVENT_NAME) == Query::String("begin")); 524 Query begin(Query::EventName() == Query::String("begin"));
534 Query end(Query(EVENT_NAME) == Query::String("end")); 525 Query end(Query::EventName() == Query::String("end"));
535 Query match(Query(EVENT_ARG, "id") == Query(OTHER_ARG, "id")); 526 Query match(Query::EventArg("id") == Query::OtherArg("id"));
536 analyzer->AssociateEvents(begin, end, match); 527 analyzer->AssociateEvents(begin, end, match);
537 528
538 TraceEventVector found; 529 TraceEventVector found;
539 530
540 // cat1 has no other_event. 531 // cat1 has no other_event.
541 analyzer->FindEvents(Query(EVENT_CATEGORY) == Query::String("cat1") && 532 analyzer->FindEvents(Query::EventCategory() == Query::String("cat1") &&
542 Query(EVENT_HAS_OTHER), &found); 533 Query::EventHasOther(), &found);
543 EXPECT_EQ(0u, found.size()); 534 EXPECT_EQ(0u, found.size());
544 535
545 // cat1 has no other_event. 536 // cat1 has no other_event.
546 analyzer->FindEvents(Query(EVENT_CATEGORY) == Query::String("cat1") && 537 analyzer->FindEvents(Query::EventCategory() == Query::String("cat1") &&
547 !Query(EVENT_HAS_OTHER), &found); 538 !Query::EventHasOther(), &found);
548 EXPECT_EQ(1u, found.size()); 539 EXPECT_EQ(1u, found.size());
549 540
550 // cat6 has no other_event. 541 // cat6 has no other_event.
551 analyzer->FindEvents(Query(EVENT_CATEGORY) == Query::String("cat6") && 542 analyzer->FindEvents(Query::EventCategory() == Query::String("cat6") &&
552 !Query(EVENT_HAS_OTHER), &found); 543 !Query::EventHasOther(), &found);
553 EXPECT_EQ(1u, found.size()); 544 EXPECT_EQ(1u, found.size());
554 545
555 // cat2 and cat4 are a associated. 546 // cat2 and cat4 are a associated.
556 analyzer->FindEvents(Query(EVENT_CATEGORY) == Query::String("cat2") && 547 analyzer->FindEvents(Query::EventCategory() == Query::String("cat2") &&
557 Query(OTHER_CATEGORY) == Query::String("cat4"), &found); 548 Query::OtherCategory() == Query::String("cat4"), &found);
558 EXPECT_EQ(1u, found.size()); 549 EXPECT_EQ(1u, found.size());
559 550
560 // cat4 and cat2 are a associated. 551 // cat4 and cat2 are a associated.
561 analyzer->FindEvents(Query(EVENT_CATEGORY) == Query::String("cat4") && 552 analyzer->FindEvents(Query::EventCategory() == Query::String("cat4") &&
562 Query(OTHER_CATEGORY) == Query::String("cat2"), &found); 553 Query::OtherCategory() == Query::String("cat2"), &found);
563 EXPECT_EQ(1u, found.size()); 554 EXPECT_EQ(1u, found.size());
564 555
565 // cat3 and cat5 are a associated. 556 // cat3 and cat5 are a associated.
566 analyzer->FindEvents(Query(EVENT_CATEGORY) == Query::String("cat3") && 557 analyzer->FindEvents(Query::EventCategory() == Query::String("cat3") &&
567 Query(OTHER_CATEGORY) == Query::String("cat5"), &found); 558 Query::OtherCategory() == Query::String("cat5"), &found);
568 EXPECT_EQ(1u, found.size()); 559 EXPECT_EQ(1u, found.size());
569 560
570 // cat5 and cat3 are a associated. 561 // cat5 and cat3 are a associated.
571 analyzer->FindEvents(Query(EVENT_CATEGORY) == Query::String("cat5") && 562 analyzer->FindEvents(Query::EventCategory() == Query::String("cat5") &&
572 Query(OTHER_CATEGORY) == Query::String("cat3"), &found); 563 Query::OtherCategory() == Query::String("cat3"), &found);
573 EXPECT_EQ(1u, found.size()); 564 EXPECT_EQ(1u, found.size());
574 } 565 }
575 566
576 // Verify that Query literals and types are properly casted. 567 // Verify that Query literals and types are properly casted.
577 TEST_F(TraceEventAnalyzerTest, Literals) { 568 TEST_F(TraceEventAnalyzerTest, Literals) {
578 using namespace trace_analyzer;
579 ManualSetUp(); 569 ManualSetUp();
580 570
581 // Since these queries don't refer to the event data, the dummy event below 571 // Since these queries don't refer to the event data, the dummy event below
582 // will never be accessed. 572 // will never be accessed.
583 TraceEvent dummy; 573 TraceEvent dummy;
584 char char_num = 5; 574 char char_num = 5;
585 short short_num = -5; 575 short short_num = -5;
586 EXPECT_TRUE((Query::Double(5.0) == Query::Int(char_num)).Evaluate(dummy)); 576 EXPECT_TRUE((Query::Double(5.0) == Query::Int(char_num)).Evaluate(dummy));
587 EXPECT_TRUE((Query::Double(-5.0) == Query::Int(short_num)).Evaluate(dummy)); 577 EXPECT_TRUE((Query::Double(-5.0) == Query::Int(short_num)).Evaluate(dummy));
588 EXPECT_TRUE((Query::Double(1.0) == Query::Uint(1u)).Evaluate(dummy)); 578 EXPECT_TRUE((Query::Double(1.0) == Query::Uint(1u)).Evaluate(dummy));
589 EXPECT_TRUE((Query::Double(1.0) == Query::Int(1)).Evaluate(dummy)); 579 EXPECT_TRUE((Query::Double(1.0) == Query::Int(1)).Evaluate(dummy));
590 EXPECT_TRUE((Query::Double(-1.0) == Query::Int(-1)).Evaluate(dummy)); 580 EXPECT_TRUE((Query::Double(-1.0) == Query::Int(-1)).Evaluate(dummy));
591 EXPECT_TRUE((Query::Double(1.0) == Query::Double(1.0f)).Evaluate(dummy)); 581 EXPECT_TRUE((Query::Double(1.0) == Query::Double(1.0f)).Evaluate(dummy));
592 EXPECT_TRUE((Query::Bool(true) == Query::Int(1)).Evaluate(dummy)); 582 EXPECT_TRUE((Query::Bool(true) == Query::Int(1)).Evaluate(dummy));
593 EXPECT_TRUE((Query::Bool(false) == Query::Int(0)).Evaluate(dummy)); 583 EXPECT_TRUE((Query::Bool(false) == Query::Int(0)).Evaluate(dummy));
594 EXPECT_TRUE((Query::Bool(true) == Query::Double(1.0f)).Evaluate(dummy)); 584 EXPECT_TRUE((Query::Bool(true) == Query::Double(1.0f)).Evaluate(dummy));
595 EXPECT_TRUE((Query::Bool(false) == Query::Double(0.0f)).Evaluate(dummy)); 585 EXPECT_TRUE((Query::Bool(false) == Query::Double(0.0f)).Evaluate(dummy));
596 } 586 }
597 587
598 // Test GetRateStats. 588 // Test GetRateStats.
599 TEST_F(TraceEventAnalyzerTest, RateStats) { 589 TEST_F(TraceEventAnalyzerTest, RateStats) {
600 using namespace trace_analyzer;
601
602 std::vector<TraceEvent> events; 590 std::vector<TraceEvent> events;
603 events.reserve(100); 591 events.reserve(100);
604 TraceEventVector event_ptrs; 592 TraceEventVector event_ptrs;
605 TraceEvent event; 593 TraceEvent event;
606 event.timestamp = 0.0; 594 event.timestamp = 0.0;
607 double little_delta = 1.0; 595 double little_delta = 1.0;
608 double big_delta = 10.0; 596 double big_delta = 10.0;
609 RateStats stats; 597 RateStats stats;
610 598
611 for (int i = 0; i < 10; ++i) { 599 for (int i = 0; i < 10; ++i) {
(...skipping 21 matching lines...) Expand all
633 TraceEventVector few_event_ptrs; 621 TraceEventVector few_event_ptrs;
634 few_event_ptrs.push_back(&event); 622 few_event_ptrs.push_back(&event);
635 few_event_ptrs.push_back(&event); 623 few_event_ptrs.push_back(&event);
636 ASSERT_FALSE(GetRateStats(few_event_ptrs, &stats)); 624 ASSERT_FALSE(GetRateStats(few_event_ptrs, &stats));
637 few_event_ptrs.push_back(&event); 625 few_event_ptrs.push_back(&event);
638 ASSERT_TRUE(GetRateStats(few_event_ptrs, &stats)); 626 ASSERT_TRUE(GetRateStats(few_event_ptrs, &stats));
639 } 627 }
640 628
641 // Test FindFirstOf and FindLastOf. 629 // Test FindFirstOf and FindLastOf.
642 TEST_F(TraceEventAnalyzerTest, FindOf) { 630 TEST_F(TraceEventAnalyzerTest, FindOf) {
643 using namespace trace_analyzer;
644
645 size_t num_events = 100; 631 size_t num_events = 100;
646 size_t index = 0; 632 size_t index = 0;
647 TraceEventVector event_ptrs; 633 TraceEventVector event_ptrs;
648 EXPECT_FALSE(FindFirstOf(event_ptrs, Query::Bool(true), 0, &index)); 634 EXPECT_FALSE(FindFirstOf(event_ptrs, Query::Bool(true), 0, &index));
649 EXPECT_FALSE(FindFirstOf(event_ptrs, Query::Bool(true), 10, &index)); 635 EXPECT_FALSE(FindFirstOf(event_ptrs, Query::Bool(true), 10, &index));
650 EXPECT_FALSE(FindLastOf(event_ptrs, Query::Bool(true), 0, &index)); 636 EXPECT_FALSE(FindLastOf(event_ptrs, Query::Bool(true), 0, &index));
651 EXPECT_FALSE(FindLastOf(event_ptrs, Query::Bool(true), 10, &index)); 637 EXPECT_FALSE(FindLastOf(event_ptrs, Query::Bool(true), 10, &index));
652 638
653 std::vector<TraceEvent> events; 639 std::vector<TraceEvent> events;
654 events.resize(num_events); 640 events.resize(num_events);
655 for (size_t i = 0; i < events.size(); ++i) 641 for (size_t i = 0; i < events.size(); ++i)
656 event_ptrs.push_back(&events[i]); 642 event_ptrs.push_back(&events[i]);
657 size_t bam_index = num_events/2; 643 size_t bam_index = num_events/2;
658 events[bam_index].name = "bam"; 644 events[bam_index].name = "bam";
659 Query query_bam = Query(EVENT_NAME) == Query::String(events[bam_index].name); 645 Query query_bam = Query::EventName() == Query::String(events[bam_index].name);
660 646
661 // FindFirstOf 647 // FindFirstOf
662 EXPECT_FALSE(FindFirstOf(event_ptrs, Query::Bool(false), 0, &index)); 648 EXPECT_FALSE(FindFirstOf(event_ptrs, Query::Bool(false), 0, &index));
663 EXPECT_TRUE(FindFirstOf(event_ptrs, Query::Bool(true), 0, &index)); 649 EXPECT_TRUE(FindFirstOf(event_ptrs, Query::Bool(true), 0, &index));
664 EXPECT_EQ(0u, index); 650 EXPECT_EQ(0u, index);
665 EXPECT_TRUE(FindFirstOf(event_ptrs, Query::Bool(true), 5, &index)); 651 EXPECT_TRUE(FindFirstOf(event_ptrs, Query::Bool(true), 5, &index));
666 EXPECT_EQ(5u, index); 652 EXPECT_EQ(5u, index);
667 653
668 EXPECT_FALSE(FindFirstOf(event_ptrs, query_bam, bam_index + 1, &index)); 654 EXPECT_FALSE(FindFirstOf(event_ptrs, query_bam, bam_index + 1, &index));
669 EXPECT_TRUE(FindFirstOf(event_ptrs, query_bam, 0, &index)); 655 EXPECT_TRUE(FindFirstOf(event_ptrs, query_bam, 0, &index));
(...skipping 11 matching lines...) Expand all
681 667
682 EXPECT_FALSE(FindLastOf(event_ptrs, query_bam, bam_index - 1, &index)); 668 EXPECT_FALSE(FindLastOf(event_ptrs, query_bam, bam_index - 1, &index));
683 EXPECT_TRUE(FindLastOf(event_ptrs, query_bam, num_events, &index)); 669 EXPECT_TRUE(FindLastOf(event_ptrs, query_bam, num_events, &index));
684 EXPECT_EQ(bam_index, index); 670 EXPECT_EQ(bam_index, index);
685 EXPECT_TRUE(FindLastOf(event_ptrs, query_bam, bam_index, &index)); 671 EXPECT_TRUE(FindLastOf(event_ptrs, query_bam, bam_index, &index));
686 EXPECT_EQ(bam_index, index); 672 EXPECT_EQ(bam_index, index);
687 } 673 }
688 674
689 // Test FindClosest. 675 // Test FindClosest.
690 TEST_F(TraceEventAnalyzerTest, FindClosest) { 676 TEST_F(TraceEventAnalyzerTest, FindClosest) {
691 using namespace trace_analyzer;
692
693 size_t index_1 = 0; 677 size_t index_1 = 0;
694 size_t index_2 = 0; 678 size_t index_2 = 0;
695 TraceEventVector event_ptrs; 679 TraceEventVector event_ptrs;
696 EXPECT_FALSE(FindClosest(event_ptrs, Query::Bool(true), 0, 680 EXPECT_FALSE(FindClosest(event_ptrs, Query::Bool(true), 0,
697 &index_1, &index_2)); 681 &index_1, &index_2));
698 682
699 size_t num_events = 5; 683 size_t num_events = 5;
700 std::vector<TraceEvent> events; 684 std::vector<TraceEvent> events;
701 events.resize(num_events); 685 events.resize(num_events);
702 for (size_t i = 0; i < events.size(); ++i) { 686 for (size_t i = 0; i < events.size(); ++i) {
703 // timestamps go up exponentially so the lower index is always closer in 687 // timestamps go up exponentially so the lower index is always closer in
704 // time than the higher index. 688 // time than the higher index.
705 events[i].timestamp = static_cast<double>(i) * static_cast<double>(i); 689 events[i].timestamp = static_cast<double>(i) * static_cast<double>(i);
706 event_ptrs.push_back(&events[i]); 690 event_ptrs.push_back(&events[i]);
707 } 691 }
708 events[0].name = "one"; 692 events[0].name = "one";
709 events[2].name = "two"; 693 events[2].name = "two";
710 events[4].name = "three"; 694 events[4].name = "three";
711 Query query_named = Query(EVENT_NAME) != Query::String(""); 695 Query query_named = Query::EventName() != Query::String("");
712 Query query_one = Query(EVENT_NAME) == Query::String("one"); 696 Query query_one = Query::EventName() == Query::String("one");
713 697
714 // Only one event matches query_one, so two closest can't be found. 698 // Only one event matches query_one, so two closest can't be found.
715 EXPECT_FALSE(FindClosest(event_ptrs, query_one, 0, &index_1, &index_2)); 699 EXPECT_FALSE(FindClosest(event_ptrs, query_one, 0, &index_1, &index_2));
716 700
717 EXPECT_TRUE(FindClosest(event_ptrs, query_one, 3, &index_1, NULL)); 701 EXPECT_TRUE(FindClosest(event_ptrs, query_one, 3, &index_1, NULL));
718 EXPECT_EQ(0u, index_1); 702 EXPECT_EQ(0u, index_1);
719 703
720 EXPECT_TRUE(FindClosest(event_ptrs, query_named, 1, &index_1, &index_2)); 704 EXPECT_TRUE(FindClosest(event_ptrs, query_named, 1, &index_1, &index_2));
721 EXPECT_EQ(0u, index_1); 705 EXPECT_EQ(0u, index_1);
722 EXPECT_EQ(2u, index_2); 706 EXPECT_EQ(2u, index_2);
723 707
724 EXPECT_TRUE(FindClosest(event_ptrs, query_named, 4, &index_1, &index_2)); 708 EXPECT_TRUE(FindClosest(event_ptrs, query_named, 4, &index_1, &index_2));
725 EXPECT_EQ(4u, index_1); 709 EXPECT_EQ(4u, index_1);
726 EXPECT_EQ(2u, index_2); 710 EXPECT_EQ(2u, index_2);
727 711
728 EXPECT_TRUE(FindClosest(event_ptrs, query_named, 3, &index_1, &index_2)); 712 EXPECT_TRUE(FindClosest(event_ptrs, query_named, 3, &index_1, &index_2));
729 EXPECT_EQ(2u, index_1); 713 EXPECT_EQ(2u, index_1);
730 EXPECT_EQ(0u, index_2); 714 EXPECT_EQ(0u, index_2);
731 } 715 }
732 716
733 // Test CountMatches. 717 // Test CountMatches.
734 TEST_F(TraceEventAnalyzerTest, CountMatches) { 718 TEST_F(TraceEventAnalyzerTest, CountMatches) {
735 using namespace trace_analyzer;
736
737 TraceEventVector event_ptrs; 719 TraceEventVector event_ptrs;
738 EXPECT_EQ(0u, CountMatches(event_ptrs, Query::Bool(true), 0, 10)); 720 EXPECT_EQ(0u, CountMatches(event_ptrs, Query::Bool(true), 0, 10));
739 721
740 size_t num_events = 5; 722 size_t num_events = 5;
741 size_t num_named = 3; 723 size_t num_named = 3;
742 std::vector<TraceEvent> events; 724 std::vector<TraceEvent> events;
743 events.resize(num_events); 725 events.resize(num_events);
744 for (size_t i = 0; i < events.size(); ++i) 726 for (size_t i = 0; i < events.size(); ++i)
745 event_ptrs.push_back(&events[i]); 727 event_ptrs.push_back(&events[i]);
746 events[0].name = "one"; 728 events[0].name = "one";
747 events[2].name = "two"; 729 events[2].name = "two";
748 events[4].name = "three"; 730 events[4].name = "three";
749 Query query_named = Query(EVENT_NAME) != Query::String(""); 731 Query query_named = Query::EventName() != Query::String("");
750 Query query_one = Query(EVENT_NAME) == Query::String("one"); 732 Query query_one = Query::EventName() == Query::String("one");
751 733
752 EXPECT_EQ(0u, CountMatches(event_ptrs, Query::Bool(false))); 734 EXPECT_EQ(0u, CountMatches(event_ptrs, Query::Bool(false)));
753 EXPECT_EQ(num_events, CountMatches(event_ptrs, Query::Bool(true))); 735 EXPECT_EQ(num_events, CountMatches(event_ptrs, Query::Bool(true)));
754 EXPECT_EQ(num_events - 1, CountMatches(event_ptrs, Query::Bool(true), 736 EXPECT_EQ(num_events - 1, CountMatches(event_ptrs, Query::Bool(true),
755 1, num_events)); 737 1, num_events));
756 EXPECT_EQ(1u, CountMatches(event_ptrs, query_one)); 738 EXPECT_EQ(1u, CountMatches(event_ptrs, query_one));
757 EXPECT_EQ(num_events - 1, CountMatches(event_ptrs, !query_one)); 739 EXPECT_EQ(num_events - 1, CountMatches(event_ptrs, !query_one));
758 EXPECT_EQ(num_named, CountMatches(event_ptrs, query_named)); 740 EXPECT_EQ(num_named, CountMatches(event_ptrs, query_named));
759 } 741 }
760 742
761 743
762 } // namespace trace_analyzer 744 } // namespace trace_analyzer
OLDNEW
« no previous file with comments | « base/test/trace_event_analyzer.cc ('k') | chrome/test/gpu/gpu_feature_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698