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/debug/trace_event.h" | 5 #include "base/debug/trace_event.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/json/json_reader.h" | 9 #include "base/json/json_reader.h" |
10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 const scoped_refptr<TraceLog::RefCountedString>& events_str) { | 92 const scoped_refptr<TraceLog::RefCountedString>& events_str) { |
93 AutoLock lock(lock_); | 93 AutoLock lock(lock_); |
94 json_output_.json_output.clear(); | 94 json_output_.json_output.clear(); |
95 trace_buffer_.Start(); | 95 trace_buffer_.Start(); |
96 trace_buffer_.AddFragment(events_str->data); | 96 trace_buffer_.AddFragment(events_str->data); |
97 trace_buffer_.Finish(); | 97 trace_buffer_.Finish(); |
98 | 98 |
99 scoped_ptr<Value> root; | 99 scoped_ptr<Value> root; |
100 root.reset(base::JSONReader::Read(json_output_.json_output, false)); | 100 root.reset(base::JSONReader::Read(json_output_.json_output, false)); |
101 | 101 |
| 102 if (!root.get()) { |
| 103 LOG(ERROR) << json_output_.json_output; |
| 104 } |
| 105 |
102 ListValue* root_list = NULL; | 106 ListValue* root_list = NULL; |
103 ASSERT_TRUE(root.get()); | 107 ASSERT_TRUE(root.get()); |
104 ASSERT_TRUE(root->GetAsList(&root_list)); | 108 ASSERT_TRUE(root->GetAsList(&root_list)); |
105 | 109 |
106 // Move items into our aggregate collection | 110 // Move items into our aggregate collection |
107 while (root_list->GetSize()) { | 111 while (root_list->GetSize()) { |
108 Value* item = NULL; | 112 Value* item = NULL; |
109 root_list->Remove(0, &item); | 113 root_list->Remove(0, &item); |
110 trace_parsed_.Append(item); | 114 trace_parsed_.Append(item); |
111 } | 115 } |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 TRACE_EVENT_BEGIN2("all", "TRACE_EVENT_BEGIN2 call", | 307 TRACE_EVENT_BEGIN2("all", "TRACE_EVENT_BEGIN2 call", |
304 "name1", "value1", | 308 "name1", "value1", |
305 "name2", "value2"); | 309 "name2", "value2"); |
306 | 310 |
307 TRACE_EVENT_END0("all", "TRACE_EVENT_END0 call"); | 311 TRACE_EVENT_END0("all", "TRACE_EVENT_END0 call"); |
308 TRACE_EVENT_END1("all", "TRACE_EVENT_END1 call", "name1", "value1"); | 312 TRACE_EVENT_END1("all", "TRACE_EVENT_END1 call", "name1", "value1"); |
309 TRACE_EVENT_END2("all", "TRACE_EVENT_END2 call", | 313 TRACE_EVENT_END2("all", "TRACE_EVENT_END2 call", |
310 "name1", "value1", | 314 "name1", "value1", |
311 "name2", "value2"); | 315 "name2", "value2"); |
312 | 316 |
| 317 TRACE_EVENT_IF_LONGER_THAN0(0, "all", "TRACE_EVENT_IF_LONGER_THAN0 call"); |
| 318 TRACE_EVENT_IF_LONGER_THAN1(0, "all", "TRACE_EVENT_IF_LONGER_THAN1 call", |
| 319 "name1", "value1"); |
| 320 TRACE_EVENT_IF_LONGER_THAN2(0, "all", "TRACE_EVENT_IF_LONGER_THAN2 call", |
| 321 "name1", "value1", |
| 322 "name2", "value2"); |
| 323 |
| 324 TRACE_EVENT_START0("all", "TRACE_EVENT_START0 call", 5); |
| 325 TRACE_EVENT_START1("all", "TRACE_EVENT_START1 call", 5, |
| 326 "name1", "value1"); |
| 327 TRACE_EVENT_START2("all", "TRACE_EVENT_START2 call", 5, |
| 328 "name1", "value1", |
| 329 "name2", "value2"); |
| 330 |
| 331 TRACE_EVENT_FINISH0("all", "TRACE_EVENT_FINISH0 call", 5); |
| 332 TRACE_EVENT_FINISH1("all", "TRACE_EVENT_FINISH1 call", 5, |
| 333 "name1", "value1"); |
| 334 TRACE_EVENT_FINISH2("all", "TRACE_EVENT_FINISH2 call", 5, |
| 335 "name1", "value1", |
| 336 "name2", "value2"); |
| 337 |
| 338 TRACE_EVENT_BEGIN_ETW("TRACE_EVENT_BEGIN_ETW0 call", 5, NULL); |
| 339 TRACE_EVENT_BEGIN_ETW("TRACE_EVENT_BEGIN_ETW1 call", 5, "value"); |
| 340 TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW0 call", 5, NULL); |
| 341 TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW1 call", 5, "value"); |
| 342 TRACE_EVENT_INSTANT_ETW("TRACE_EVENT_INSTANT_ETW0 call", 5, NULL); |
| 343 TRACE_EVENT_INSTANT_ETW("TRACE_EVENT_INSTANT_ETW1 call", 5, "value"); |
| 344 |
313 TRACE_COUNTER1("all", "TRACE_COUNTER1 call", 31415); | 345 TRACE_COUNTER1("all", "TRACE_COUNTER1 call", 31415); |
314 TRACE_COUNTER2("all", "TRACE_COUNTER2 call", | 346 TRACE_COUNTER2("all", "TRACE_COUNTER2 call", |
315 "a", 30000, | 347 "a", 30000, |
316 "b", 1415); | 348 "b", 1415); |
317 | 349 |
318 TRACE_COUNTER_ID1("all", "TRACE_COUNTER_ID1 call", 0x319009, 31415); | 350 TRACE_COUNTER_ID1("all", "TRACE_COUNTER_ID1 call", 0x319009, 31415); |
319 TRACE_COUNTER_ID2("all", "TRACE_COUNTER_ID2 call", 0x319009, | 351 TRACE_COUNTER_ID2("all", "TRACE_COUNTER_ID2 call", 0x319009, |
320 "a", 30000, "b", 1415); | 352 "a", 30000, "b", 1415); |
321 } // Scope close causes TRACE_EVENT0 etc to send their END events. | 353 } // Scope close causes TRACE_EVENT0 etc to send their END events. |
322 | 354 |
(...skipping 28 matching lines...) Expand all Loading... |
351 std::string ph_end; | 383 std::string ph_end; |
352 EXPECT_TRUE((item = FindTraceEntry(trace_parsed, "TRACE_EVENT0 call"))); | 384 EXPECT_TRUE((item = FindTraceEntry(trace_parsed, "TRACE_EVENT0 call"))); |
353 EXPECT_TRUE((item && item->GetString("ph", &ph_begin))); | 385 EXPECT_TRUE((item && item->GetString("ph", &ph_begin))); |
354 EXPECT_TRUE((item = FindTraceEntry(trace_parsed, "TRACE_EVENT0 call", | 386 EXPECT_TRUE((item = FindTraceEntry(trace_parsed, "TRACE_EVENT0 call", |
355 item))); | 387 item))); |
356 EXPECT_TRUE((item && item->GetString("ph", &ph_end))); | 388 EXPECT_TRUE((item && item->GetString("ph", &ph_end))); |
357 EXPECT_EQ("B", ph_begin); | 389 EXPECT_EQ("B", ph_begin); |
358 EXPECT_EQ("E", ph_end); | 390 EXPECT_EQ("E", ph_end); |
359 } | 391 } |
360 EXPECT_FIND_("TRACE_EVENT1 call"); | 392 EXPECT_FIND_("TRACE_EVENT1 call"); |
| 393 EXPECT_SUB_FIND_("name1"); |
| 394 EXPECT_SUB_FIND_("value1"); |
361 EXPECT_FIND_("TRACE_EVENT2 call"); | 395 EXPECT_FIND_("TRACE_EVENT2 call"); |
362 EXPECT_SUB_FIND_("name1"); | 396 EXPECT_SUB_FIND_("name1"); |
363 EXPECT_SUB_FIND_("\"value1\""); | 397 EXPECT_SUB_FIND_("\"value1\""); |
364 EXPECT_SUB_FIND_("name2"); | 398 EXPECT_SUB_FIND_("name2"); |
365 EXPECT_SUB_FIND_("value\\2"); | 399 EXPECT_SUB_FIND_("value\\2"); |
| 400 |
366 EXPECT_FIND_("TRACE_EVENT_INSTANT0 call"); | 401 EXPECT_FIND_("TRACE_EVENT_INSTANT0 call"); |
367 EXPECT_FIND_("TRACE_EVENT_INSTANT1 call"); | 402 EXPECT_FIND_("TRACE_EVENT_INSTANT1 call"); |
| 403 EXPECT_SUB_FIND_("name1"); |
| 404 EXPECT_SUB_FIND_("value1"); |
368 EXPECT_FIND_("TRACE_EVENT_INSTANT2 call"); | 405 EXPECT_FIND_("TRACE_EVENT_INSTANT2 call"); |
369 EXPECT_SUB_FIND_("name1"); | 406 EXPECT_SUB_FIND_("name1"); |
370 EXPECT_SUB_FIND_("value1"); | 407 EXPECT_SUB_FIND_("value1"); |
371 EXPECT_SUB_FIND_("name2"); | 408 EXPECT_SUB_FIND_("name2"); |
372 EXPECT_SUB_FIND_("value2"); | 409 EXPECT_SUB_FIND_("value2"); |
| 410 |
373 EXPECT_FIND_("TRACE_EVENT_BEGIN0 call"); | 411 EXPECT_FIND_("TRACE_EVENT_BEGIN0 call"); |
374 EXPECT_FIND_("TRACE_EVENT_BEGIN1 call"); | 412 EXPECT_FIND_("TRACE_EVENT_BEGIN1 call"); |
| 413 EXPECT_SUB_FIND_("name1"); |
| 414 EXPECT_SUB_FIND_("value1"); |
375 EXPECT_FIND_("TRACE_EVENT_BEGIN2 call"); | 415 EXPECT_FIND_("TRACE_EVENT_BEGIN2 call"); |
376 EXPECT_SUB_FIND_("name1"); | 416 EXPECT_SUB_FIND_("name1"); |
377 EXPECT_SUB_FIND_("value1"); | 417 EXPECT_SUB_FIND_("value1"); |
378 EXPECT_SUB_FIND_("name2"); | 418 EXPECT_SUB_FIND_("name2"); |
379 EXPECT_SUB_FIND_("value2"); | 419 EXPECT_SUB_FIND_("value2"); |
| 420 |
380 EXPECT_FIND_("TRACE_EVENT_END0 call"); | 421 EXPECT_FIND_("TRACE_EVENT_END0 call"); |
381 EXPECT_FIND_("TRACE_EVENT_END1 call"); | 422 EXPECT_FIND_("TRACE_EVENT_END1 call"); |
| 423 EXPECT_SUB_FIND_("name1"); |
| 424 EXPECT_SUB_FIND_("value1"); |
382 EXPECT_FIND_("TRACE_EVENT_END2 call"); | 425 EXPECT_FIND_("TRACE_EVENT_END2 call"); |
383 EXPECT_SUB_FIND_("name1"); | 426 EXPECT_SUB_FIND_("name1"); |
384 EXPECT_SUB_FIND_("value1"); | 427 EXPECT_SUB_FIND_("value1"); |
385 EXPECT_SUB_FIND_("name2"); | 428 EXPECT_SUB_FIND_("name2"); |
386 EXPECT_SUB_FIND_("value2"); | 429 EXPECT_SUB_FIND_("value2"); |
387 | 430 |
| 431 EXPECT_FIND_("TRACE_EVENT_IF_LONGER_THAN0 call"); |
| 432 EXPECT_FIND_("TRACE_EVENT_IF_LONGER_THAN1 call"); |
| 433 EXPECT_SUB_FIND_("name1"); |
| 434 EXPECT_SUB_FIND_("value1"); |
| 435 EXPECT_FIND_("TRACE_EVENT_IF_LONGER_THAN2 call"); |
| 436 EXPECT_SUB_FIND_("name1"); |
| 437 EXPECT_SUB_FIND_("value1"); |
| 438 EXPECT_SUB_FIND_("name2"); |
| 439 EXPECT_SUB_FIND_("value2"); |
| 440 |
| 441 EXPECT_FIND_("TRACE_EVENT_START0 call"); |
| 442 EXPECT_SUB_FIND_("id"); |
| 443 EXPECT_SUB_FIND_("5"); |
| 444 EXPECT_FIND_("TRACE_EVENT_START1 call"); |
| 445 EXPECT_SUB_FIND_("id"); |
| 446 EXPECT_SUB_FIND_("5"); |
| 447 EXPECT_SUB_FIND_("name1"); |
| 448 EXPECT_SUB_FIND_("value1"); |
| 449 EXPECT_FIND_("TRACE_EVENT_START2 call"); |
| 450 EXPECT_SUB_FIND_("id"); |
| 451 EXPECT_SUB_FIND_("5"); |
| 452 EXPECT_SUB_FIND_("name1"); |
| 453 EXPECT_SUB_FIND_("value1"); |
| 454 EXPECT_SUB_FIND_("name2"); |
| 455 EXPECT_SUB_FIND_("value2"); |
| 456 |
| 457 EXPECT_FIND_("TRACE_EVENT_FINISH0 call"); |
| 458 EXPECT_SUB_FIND_("id"); |
| 459 EXPECT_SUB_FIND_("5"); |
| 460 EXPECT_FIND_("TRACE_EVENT_FINISH1 call"); |
| 461 EXPECT_SUB_FIND_("id"); |
| 462 EXPECT_SUB_FIND_("5"); |
| 463 EXPECT_SUB_FIND_("name1"); |
| 464 EXPECT_SUB_FIND_("value1"); |
| 465 EXPECT_FIND_("TRACE_EVENT_FINISH2 call"); |
| 466 EXPECT_SUB_FIND_("id"); |
| 467 EXPECT_SUB_FIND_("5"); |
| 468 EXPECT_SUB_FIND_("name1"); |
| 469 EXPECT_SUB_FIND_("value1"); |
| 470 EXPECT_SUB_FIND_("name2"); |
| 471 EXPECT_SUB_FIND_("value2"); |
| 472 |
| 473 EXPECT_FIND_("TRACE_EVENT_BEGIN_ETW0 call"); |
| 474 EXPECT_SUB_FIND_("id"); |
| 475 EXPECT_SUB_FIND_("5"); |
| 476 EXPECT_SUB_FIND_("extra"); |
| 477 EXPECT_SUB_FIND_("NULL"); |
| 478 EXPECT_FIND_("TRACE_EVENT_BEGIN_ETW1 call"); |
| 479 EXPECT_SUB_FIND_("id"); |
| 480 EXPECT_SUB_FIND_("5"); |
| 481 EXPECT_SUB_FIND_("extra"); |
| 482 EXPECT_SUB_FIND_("value"); |
| 483 EXPECT_FIND_("TRACE_EVENT_END_ETW0 call"); |
| 484 EXPECT_SUB_FIND_("id"); |
| 485 EXPECT_SUB_FIND_("5"); |
| 486 EXPECT_SUB_FIND_("extra"); |
| 487 EXPECT_SUB_FIND_("NULL"); |
| 488 EXPECT_FIND_("TRACE_EVENT_END_ETW1 call"); |
| 489 EXPECT_SUB_FIND_("id"); |
| 490 EXPECT_SUB_FIND_("5"); |
| 491 EXPECT_SUB_FIND_("extra"); |
| 492 EXPECT_SUB_FIND_("value"); |
| 493 EXPECT_FIND_("TRACE_EVENT_INSTANT_ETW0 call"); |
| 494 EXPECT_SUB_FIND_("id"); |
| 495 EXPECT_SUB_FIND_("5"); |
| 496 EXPECT_SUB_FIND_("extra"); |
| 497 EXPECT_SUB_FIND_("NULL"); |
| 498 EXPECT_FIND_("TRACE_EVENT_INSTANT_ETW1 call"); |
| 499 EXPECT_SUB_FIND_("id"); |
| 500 EXPECT_SUB_FIND_("5"); |
| 501 EXPECT_SUB_FIND_("extra"); |
| 502 EXPECT_SUB_FIND_("value"); |
| 503 |
388 EXPECT_FIND_("TRACE_COUNTER1 call"); | 504 EXPECT_FIND_("TRACE_COUNTER1 call"); |
389 { | 505 { |
390 std::string ph; | 506 std::string ph; |
391 EXPECT_TRUE((item && item->GetString("ph", &ph))); | 507 EXPECT_TRUE((item && item->GetString("ph", &ph))); |
392 EXPECT_EQ("C", ph); | 508 EXPECT_EQ("C", ph); |
393 | 509 |
394 int value; | 510 int value; |
395 EXPECT_TRUE((item && item->GetInteger("args.value", &value))); | 511 EXPECT_TRUE((item && item->GetInteger("args.value", &value))); |
396 EXPECT_EQ(31415, value); | 512 EXPECT_EQ(31415, value); |
397 } | 513 } |
(...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1148 Clear(); | 1264 Clear(); |
1149 | 1265 |
1150 trace_buffer_.Start(); | 1266 trace_buffer_.Start(); |
1151 trace_buffer_.AddFragment("bla1,bla2,bla3,bla4"); | 1267 trace_buffer_.AddFragment("bla1,bla2,bla3,bla4"); |
1152 trace_buffer_.Finish(); | 1268 trace_buffer_.Finish(); |
1153 EXPECT_STREQ(json_output_.json_output.c_str(), "[bla1,bla2,bla3,bla4]"); | 1269 EXPECT_STREQ(json_output_.json_output.c_str(), "[bla1,bla2,bla3,bla4]"); |
1154 } | 1270 } |
1155 | 1271 |
1156 } // namespace debug | 1272 } // namespace debug |
1157 } // namespace base | 1273 } // namespace base |
OLD | NEW |