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

Side by Side Diff: base/debug/trace_event_unittest.cc

Issue 9522010: Add ASYNC_STEP support to trace_event and change START to ASYNC_BEGIN. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: just a merge Created 8 years, 9 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/debug/trace_event.h ('k') | base/test/trace_event_analyzer.h » ('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/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 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 "name1", "value1", 316 "name1", "value1",
317 "name2", "value2"); 317 "name2", "value2");
318 318
319 TRACE_EVENT_IF_LONGER_THAN0(0, "all", "TRACE_EVENT_IF_LONGER_THAN0 call"); 319 TRACE_EVENT_IF_LONGER_THAN0(0, "all", "TRACE_EVENT_IF_LONGER_THAN0 call");
320 TRACE_EVENT_IF_LONGER_THAN1(0, "all", "TRACE_EVENT_IF_LONGER_THAN1 call", 320 TRACE_EVENT_IF_LONGER_THAN1(0, "all", "TRACE_EVENT_IF_LONGER_THAN1 call",
321 "name1", "value1"); 321 "name1", "value1");
322 TRACE_EVENT_IF_LONGER_THAN2(0, "all", "TRACE_EVENT_IF_LONGER_THAN2 call", 322 TRACE_EVENT_IF_LONGER_THAN2(0, "all", "TRACE_EVENT_IF_LONGER_THAN2 call",
323 "name1", "value1", 323 "name1", "value1",
324 "name2", "value2"); 324 "name2", "value2");
325 325
326 TRACE_EVENT_START0("all", "TRACE_EVENT_START0 call", 5); 326 TRACE_EVENT_ASYNC_BEGIN0("all", "TRACE_EVENT_ASYNC_BEGIN0 call", 5);
327 TRACE_EVENT_START1("all", "TRACE_EVENT_START1 call", 5, 327 TRACE_EVENT_ASYNC_BEGIN1("all", "TRACE_EVENT_ASYNC_BEGIN1 call", 5,
328 "name1", "value1"); 328 "name1", "value1");
329 TRACE_EVENT_START2("all", "TRACE_EVENT_START2 call", 5, 329 TRACE_EVENT_ASYNC_BEGIN2("all", "TRACE_EVENT_ASYNC_BEGIN2 call", 5,
330 "name1", "value1", 330 "name1", "value1",
331 "name2", "value2"); 331 "name2", "value2");
332 332
333 TRACE_EVENT_FINISH0("all", "TRACE_EVENT_FINISH0 call", 5); 333 TRACE_EVENT_ASYNC_STEP0("all", "TRACE_EVENT_ASYNC_STEP0 call", 5);
334 TRACE_EVENT_FINISH1("all", "TRACE_EVENT_FINISH1 call", 5, 334 TRACE_EVENT_ASYNC_STEP1("all", "TRACE_EVENT_ASYNC_STEP1 call", 5,
335 "name1", "value1"); 335 "name1", "value1");
336 TRACE_EVENT_FINISH2("all", "TRACE_EVENT_FINISH2 call", 5, 336 TRACE_EVENT_ASYNC_STEP2("all", "TRACE_EVENT_ASYNC_STEP2 call", 5,
337 "name1", "value1", 337 "name1", "value1",
338 "name2", "value2"); 338 "name2", "value2");
339
340 TRACE_EVENT_ASYNC_END0("all", "TRACE_EVENT_ASYNC_END0 call", 5);
341 TRACE_EVENT_ASYNC_END1("all", "TRACE_EVENT_ASYNC_END1 call", 5,
342 "name1", "value1");
343 TRACE_EVENT_ASYNC_END2("all", "TRACE_EVENT_ASYNC_END2 call", 5,
344 "name1", "value1",
345 "name2", "value2");
339 346
340 TRACE_EVENT_BEGIN_ETW("TRACE_EVENT_BEGIN_ETW0 call", 5, NULL); 347 TRACE_EVENT_BEGIN_ETW("TRACE_EVENT_BEGIN_ETW0 call", 5, NULL);
341 TRACE_EVENT_BEGIN_ETW("TRACE_EVENT_BEGIN_ETW1 call", 5, "value"); 348 TRACE_EVENT_BEGIN_ETW("TRACE_EVENT_BEGIN_ETW1 call", 5, "value");
342 TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW0 call", 5, NULL); 349 TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW0 call", 5, NULL);
343 TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW1 call", 5, "value"); 350 TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW1 call", 5, "value");
344 TRACE_EVENT_INSTANT_ETW("TRACE_EVENT_INSTANT_ETW0 call", 5, NULL); 351 TRACE_EVENT_INSTANT_ETW("TRACE_EVENT_INSTANT_ETW0 call", 5, NULL);
345 TRACE_EVENT_INSTANT_ETW("TRACE_EVENT_INSTANT_ETW1 call", 5, "value"); 352 TRACE_EVENT_INSTANT_ETW("TRACE_EVENT_INSTANT_ETW1 call", 5, "value");
346 353
347 TRACE_COUNTER1("all", "TRACE_COUNTER1 call", 31415); 354 TRACE_COUNTER1("all", "TRACE_COUNTER1 call", 31415);
348 TRACE_COUNTER2("all", "TRACE_COUNTER2 call", 355 TRACE_COUNTER2("all", "TRACE_COUNTER2 call",
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 EXPECT_FIND_("TRACE_EVENT_IF_LONGER_THAN0 call"); 440 EXPECT_FIND_("TRACE_EVENT_IF_LONGER_THAN0 call");
434 EXPECT_FIND_("TRACE_EVENT_IF_LONGER_THAN1 call"); 441 EXPECT_FIND_("TRACE_EVENT_IF_LONGER_THAN1 call");
435 EXPECT_SUB_FIND_("name1"); 442 EXPECT_SUB_FIND_("name1");
436 EXPECT_SUB_FIND_("value1"); 443 EXPECT_SUB_FIND_("value1");
437 EXPECT_FIND_("TRACE_EVENT_IF_LONGER_THAN2 call"); 444 EXPECT_FIND_("TRACE_EVENT_IF_LONGER_THAN2 call");
438 EXPECT_SUB_FIND_("name1"); 445 EXPECT_SUB_FIND_("name1");
439 EXPECT_SUB_FIND_("value1"); 446 EXPECT_SUB_FIND_("value1");
440 EXPECT_SUB_FIND_("name2"); 447 EXPECT_SUB_FIND_("name2");
441 EXPECT_SUB_FIND_("value2"); 448 EXPECT_SUB_FIND_("value2");
442 449
443 EXPECT_FIND_("TRACE_EVENT_START0 call"); 450 EXPECT_FIND_("TRACE_EVENT_ASYNC_BEGIN0 call");
444 EXPECT_SUB_FIND_("id"); 451 EXPECT_SUB_FIND_("id");
445 EXPECT_SUB_FIND_("5"); 452 EXPECT_SUB_FIND_("5");
446 EXPECT_FIND_("TRACE_EVENT_START1 call"); 453 EXPECT_FIND_("TRACE_EVENT_ASYNC_BEGIN1 call");
447 EXPECT_SUB_FIND_("id"); 454 EXPECT_SUB_FIND_("id");
448 EXPECT_SUB_FIND_("5"); 455 EXPECT_SUB_FIND_("5");
449 EXPECT_SUB_FIND_("name1"); 456 EXPECT_SUB_FIND_("name1");
450 EXPECT_SUB_FIND_("value1"); 457 EXPECT_SUB_FIND_("value1");
451 EXPECT_FIND_("TRACE_EVENT_START2 call"); 458 EXPECT_FIND_("TRACE_EVENT_ASYNC_BEGIN2 call");
452 EXPECT_SUB_FIND_("id"); 459 EXPECT_SUB_FIND_("id");
453 EXPECT_SUB_FIND_("5"); 460 EXPECT_SUB_FIND_("5");
454 EXPECT_SUB_FIND_("name1"); 461 EXPECT_SUB_FIND_("name1");
462 EXPECT_SUB_FIND_("value1");
463 EXPECT_SUB_FIND_("name2");
464 EXPECT_SUB_FIND_("value2");
465
466 EXPECT_FIND_("TRACE_EVENT_ASYNC_STEP0 call");
467 EXPECT_SUB_FIND_("id");
468 EXPECT_SUB_FIND_("5");
469 EXPECT_FIND_("TRACE_EVENT_ASYNC_STEP1 call");
470 EXPECT_SUB_FIND_("id");
471 EXPECT_SUB_FIND_("5");
472 EXPECT_SUB_FIND_("name1");
473 EXPECT_SUB_FIND_("value1");
474 EXPECT_FIND_("TRACE_EVENT_ASYNC_STEP2 call");
475 EXPECT_SUB_FIND_("id");
476 EXPECT_SUB_FIND_("5");
477 EXPECT_SUB_FIND_("name1");
455 EXPECT_SUB_FIND_("value1"); 478 EXPECT_SUB_FIND_("value1");
456 EXPECT_SUB_FIND_("name2"); 479 EXPECT_SUB_FIND_("name2");
457 EXPECT_SUB_FIND_("value2"); 480 EXPECT_SUB_FIND_("value2");
458 481
459 EXPECT_FIND_("TRACE_EVENT_FINISH0 call"); 482 EXPECT_FIND_("TRACE_EVENT_ASYNC_END0 call");
460 EXPECT_SUB_FIND_("id"); 483 EXPECT_SUB_FIND_("id");
461 EXPECT_SUB_FIND_("5"); 484 EXPECT_SUB_FIND_("5");
462 EXPECT_FIND_("TRACE_EVENT_FINISH1 call"); 485 EXPECT_FIND_("TRACE_EVENT_ASYNC_END1 call");
463 EXPECT_SUB_FIND_("id"); 486 EXPECT_SUB_FIND_("id");
464 EXPECT_SUB_FIND_("5"); 487 EXPECT_SUB_FIND_("5");
465 EXPECT_SUB_FIND_("name1"); 488 EXPECT_SUB_FIND_("name1");
466 EXPECT_SUB_FIND_("value1"); 489 EXPECT_SUB_FIND_("value1");
467 EXPECT_FIND_("TRACE_EVENT_FINISH2 call"); 490 EXPECT_FIND_("TRACE_EVENT_ASYNC_END2 call");
468 EXPECT_SUB_FIND_("id"); 491 EXPECT_SUB_FIND_("id");
469 EXPECT_SUB_FIND_("5"); 492 EXPECT_SUB_FIND_("5");
470 EXPECT_SUB_FIND_("name1"); 493 EXPECT_SUB_FIND_("name1");
471 EXPECT_SUB_FIND_("value1"); 494 EXPECT_SUB_FIND_("value1");
472 EXPECT_SUB_FIND_("name2"); 495 EXPECT_SUB_FIND_("name2");
473 EXPECT_SUB_FIND_("value2"); 496 EXPECT_SUB_FIND_("value2");
474 497
475 EXPECT_FIND_("TRACE_EVENT_BEGIN_ETW0 call"); 498 EXPECT_FIND_("TRACE_EVENT_BEGIN_ETW0 call");
476 EXPECT_SUB_FIND_("id"); 499 EXPECT_SUB_FIND_("id");
477 EXPECT_SUB_FIND_("5"); 500 EXPECT_SUB_FIND_("5");
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after
910 EXPECT_NOT_FIND_BE_("3thresholdlong2"); 933 EXPECT_NOT_FIND_BE_("3thresholdlong2");
911 934
912 EXPECT_FIND_BE_("nonthreshold4"); 935 EXPECT_FIND_BE_("nonthreshold4");
913 EXPECT_FIND_BE_("4threshold100"); 936 EXPECT_FIND_BE_("4threshold100");
914 EXPECT_FIND_BE_("4threshold1000"); 937 EXPECT_FIND_BE_("4threshold1000");
915 EXPECT_FIND_BE_("4threshold10000"); 938 EXPECT_FIND_BE_("4threshold10000");
916 EXPECT_NOT_FIND_BE_("4thresholdlong1"); 939 EXPECT_NOT_FIND_BE_("4thresholdlong1");
917 EXPECT_NOT_FIND_BE_("4thresholdlong2"); 940 EXPECT_NOT_FIND_BE_("4thresholdlong2");
918 } 941 }
919 942
920 // Test Start/Finish events 943 // Test ASYNC_BEGIN/END events
921 TEST_F(TraceEventTestFixture, StartFinishEvents) { 944 TEST_F(TraceEventTestFixture, AsyncBeginEndEvents) {
922 ManualTestSetUp(); 945 ManualTestSetUp();
923 TraceLog::GetInstance()->SetEnabled(true); 946 TraceLog::GetInstance()->SetEnabled(true);
924 947
925 unsigned long long id = 0xfeedbeeffeedbeefull; 948 unsigned long long id = 0xfeedbeeffeedbeefull;
926 TRACE_EVENT_START0( "cat", "name1", id); 949 TRACE_EVENT_ASYNC_BEGIN0( "cat", "name1", id);
927 TRACE_EVENT_FINISH0("cat", "name1", id); 950 TRACE_EVENT_ASYNC_STEP0( "cat", "name1", id);
951 TRACE_EVENT_ASYNC_END0("cat", "name1", id);
928 TRACE_EVENT_BEGIN0( "cat", "name2"); 952 TRACE_EVENT_BEGIN0( "cat", "name2");
929 TRACE_EVENT_START0( "cat", "name3", 0); 953 TRACE_EVENT_ASYNC_BEGIN0( "cat", "name3", 0);
930 954
931 TraceLog::GetInstance()->SetEnabled(false); 955 TraceLog::GetInstance()->SetEnabled(false);
932 956
933 EXPECT_TRUE(FindNamePhase("name1", "S")); 957 EXPECT_TRUE(FindNamePhase("name1", "S"));
958 EXPECT_TRUE(FindNamePhase("name1", "T"));
934 EXPECT_TRUE(FindNamePhase("name1", "F")); 959 EXPECT_TRUE(FindNamePhase("name1", "F"));
935 960
936 std::string id_str; 961 std::string id_str;
937 StringAppendF(&id_str, "%llx", id); 962 StringAppendF(&id_str, "%llx", id);
938 963
939 EXPECT_TRUE(FindNamePhaseKeyValue("name1", "S", "id", id_str.c_str())); 964 EXPECT_TRUE(FindNamePhaseKeyValue("name1", "S", "id", id_str.c_str()));
965 EXPECT_TRUE(FindNamePhaseKeyValue("name1", "T", "id", id_str.c_str()));
940 EXPECT_TRUE(FindNamePhaseKeyValue("name1", "F", "id", id_str.c_str())); 966 EXPECT_TRUE(FindNamePhaseKeyValue("name1", "F", "id", id_str.c_str()));
941 EXPECT_TRUE(FindNamePhaseKeyValue("name3", "S", "id", "0")); 967 EXPECT_TRUE(FindNamePhaseKeyValue("name3", "S", "id", "0"));
942 968
943 // BEGIN events should not have id 969 // BEGIN events should not have id
944 EXPECT_FALSE(FindNamePhaseKeyValue("name2", "B", "id", "0")); 970 EXPECT_FALSE(FindNamePhaseKeyValue("name2", "B", "id", "0"));
945 } 971 }
946 972
947 // Test Start/Finish events 973 // Test ASYNC_BEGIN/END events
948 TEST_F(TraceEventTestFixture, StartFinishPointerMangling) { 974 TEST_F(TraceEventTestFixture, AsyncBeginEndPointerMangling) {
949 ManualTestSetUp(); 975 ManualTestSetUp();
950 976
951 void* ptr = this; 977 void* ptr = this;
952 978
953 TraceLog::GetInstance()->SetProcessID(100); 979 TraceLog::GetInstance()->SetProcessID(100);
954 TraceLog::GetInstance()->SetEnabled(true); 980 TraceLog::GetInstance()->SetEnabled(true);
955 TRACE_EVENT_START0( "cat", "name1", ptr); 981 TRACE_EVENT_ASYNC_BEGIN0( "cat", "name1", ptr);
956 TRACE_EVENT_START0( "cat", "name2", ptr); 982 TRACE_EVENT_ASYNC_BEGIN0( "cat", "name2", ptr);
957 TraceLog::GetInstance()->SetEnabled(false); 983 TraceLog::GetInstance()->SetEnabled(false);
958 984
959 TraceLog::GetInstance()->SetProcessID(200); 985 TraceLog::GetInstance()->SetProcessID(200);
960 TraceLog::GetInstance()->SetEnabled(true); 986 TraceLog::GetInstance()->SetEnabled(true);
961 TRACE_EVENT_FINISH0( "cat", "name1", ptr); 987 TRACE_EVENT_ASYNC_END0( "cat", "name1", ptr);
962 TraceLog::GetInstance()->SetEnabled(false); 988 TraceLog::GetInstance()->SetEnabled(false);
963 989
964 DictionaryValue* start = FindNamePhase("name1", "S"); 990 DictionaryValue* async_begin = FindNamePhase("name1", "S");
965 DictionaryValue* start2 = FindNamePhase("name2", "S"); 991 DictionaryValue* async_begin2 = FindNamePhase("name2", "S");
966 DictionaryValue* finish = FindNamePhase("name1", "F"); 992 DictionaryValue* async_end = FindNamePhase("name1", "F");
967 EXPECT_TRUE(start); 993 EXPECT_TRUE(async_begin);
968 EXPECT_TRUE(start2); 994 EXPECT_TRUE(async_begin2);
969 EXPECT_TRUE(finish); 995 EXPECT_TRUE(async_end);
970 996
971 Value* value = NULL; 997 Value* value = NULL;
972 std::string start_id_str; 998 std::string async_begin_id_str;
973 std::string start2_id_str; 999 std::string async_begin2_id_str;
974 std::string finish_id_str; 1000 std::string async_end_id_str;
975 ASSERT_TRUE(start->Get("id", &value)); 1001 ASSERT_TRUE(async_begin->Get("id", &value));
976 ASSERT_TRUE(value->GetAsString(&start_id_str)); 1002 ASSERT_TRUE(value->GetAsString(&async_begin_id_str));
977 ASSERT_TRUE(start2->Get("id", &value)); 1003 ASSERT_TRUE(async_begin2->Get("id", &value));
978 ASSERT_TRUE(value->GetAsString(&start2_id_str)); 1004 ASSERT_TRUE(value->GetAsString(&async_begin2_id_str));
979 ASSERT_TRUE(finish->Get("id", &value)); 1005 ASSERT_TRUE(async_end->Get("id", &value));
980 ASSERT_TRUE(value->GetAsString(&finish_id_str)); 1006 ASSERT_TRUE(value->GetAsString(&async_end_id_str));
981 1007
982 EXPECT_STREQ(start_id_str.c_str(), start2_id_str.c_str()); 1008 EXPECT_STREQ(async_begin_id_str.c_str(), async_begin2_id_str.c_str());
983 EXPECT_STRNE(start_id_str.c_str(), finish_id_str.c_str()); 1009 EXPECT_STRNE(async_begin_id_str.c_str(), async_end_id_str.c_str());
984 } 1010 }
985 1011
986 // Test that static strings are not copied. 1012 // Test that static strings are not copied.
987 TEST_F(TraceEventTestFixture, StaticStringVsString) { 1013 TEST_F(TraceEventTestFixture, StaticStringVsString) {
988 ManualTestSetUp(); 1014 ManualTestSetUp();
989 TraceLog* tracer = TraceLog::GetInstance(); 1015 TraceLog* tracer = TraceLog::GetInstance();
990 // Make sure old events are flushed: 1016 // Make sure old events are flushed:
991 tracer->SetEnabled(false); 1017 tracer->SetEnabled(false);
992 EXPECT_EQ(0u, tracer->GetEventsSize()); 1018 EXPECT_EQ(0u, tracer->GetEventsSize());
993 1019
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
1346 Clear(); 1372 Clear();
1347 1373
1348 trace_buffer_.Start(); 1374 trace_buffer_.Start();
1349 trace_buffer_.AddFragment("bla1,bla2,bla3,bla4"); 1375 trace_buffer_.AddFragment("bla1,bla2,bla3,bla4");
1350 trace_buffer_.Finish(); 1376 trace_buffer_.Finish();
1351 EXPECT_STREQ(json_output_.json_output.c_str(), "[bla1,bla2,bla3,bla4]"); 1377 EXPECT_STREQ(json_output_.json_output.c_str(), "[bla1,bla2,bla3,bla4]");
1352 } 1378 }
1353 1379
1354 } // namespace debug 1380 } // namespace debug
1355 } // namespace base 1381 } // namespace base
OLDNEW
« no previous file with comments | « base/debug/trace_event.h ('k') | base/test/trace_event_analyzer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698