| 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/debug/trace_event_unittest.h" | 5 #include "base/debug/trace_event_unittest.h" |
| 6 | 6 |
| 7 #include <cstdlib> | 7 #include <cstdlib> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 319 TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW call", 0x3344, "extrastring2"); | 319 TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW call", 0x3344, "extrastring2"); |
| 320 TRACE_EVENT_INSTANT_ETW("TRACE_EVENT_INSTANT_ETW call", | 320 TRACE_EVENT_INSTANT_ETW("TRACE_EVENT_INSTANT_ETW call", |
| 321 0x5566, "extrastring3"); | 321 0x5566, "extrastring3"); |
| 322 | 322 |
| 323 TRACE_EVENT0("all", "TRACE_EVENT0 call"); | 323 TRACE_EVENT0("all", "TRACE_EVENT0 call"); |
| 324 TRACE_EVENT1("all", "TRACE_EVENT1 call", "name1", "value1"); | 324 TRACE_EVENT1("all", "TRACE_EVENT1 call", "name1", "value1"); |
| 325 TRACE_EVENT2("all", "TRACE_EVENT2 call", | 325 TRACE_EVENT2("all", "TRACE_EVENT2 call", |
| 326 "name1", "\"value1\"", | 326 "name1", "\"value1\"", |
| 327 "name2", "value\\2"); | 327 "name2", "value\\2"); |
| 328 | 328 |
| 329 TRACE_EVENT_INSTANT0("all", "TRACE_EVENT_INSTANT0 call"); | 329 TRACE_EVENT_INSTANT0("all", "TRACE_EVENT_INSTANT0 call", |
| 330 TRACE_EVENT_INSTANT1("all", "TRACE_EVENT_INSTANT1 call", "name1", "value1"); | 330 TRACE_EVENT_SCOPE_GLOBAL); |
| 331 TRACE_EVENT_INSTANT1("all", "TRACE_EVENT_INSTANT1 call", |
| 332 TRACE_EVENT_SCOPE_PROCESS, "name1", "value1"); |
| 331 TRACE_EVENT_INSTANT2("all", "TRACE_EVENT_INSTANT2 call", | 333 TRACE_EVENT_INSTANT2("all", "TRACE_EVENT_INSTANT2 call", |
| 334 TRACE_EVENT_SCOPE_THREAD, |
| 332 "name1", "value1", | 335 "name1", "value1", |
| 333 "name2", "value2"); | 336 "name2", "value2"); |
| 334 | 337 |
| 335 TRACE_EVENT_BEGIN0("all", "TRACE_EVENT_BEGIN0 call"); | 338 TRACE_EVENT_BEGIN0("all", "TRACE_EVENT_BEGIN0 call"); |
| 336 TRACE_EVENT_BEGIN1("all", "TRACE_EVENT_BEGIN1 call", "name1", "value1"); | 339 TRACE_EVENT_BEGIN1("all", "TRACE_EVENT_BEGIN1 call", "name1", "value1"); |
| 337 TRACE_EVENT_BEGIN2("all", "TRACE_EVENT_BEGIN2 call", | 340 TRACE_EVENT_BEGIN2("all", "TRACE_EVENT_BEGIN2 call", |
| 338 "name1", "value1", | 341 "name1", "value1", |
| 339 "name2", "value2"); | 342 "name2", "value2"); |
| 340 | 343 |
| 341 TRACE_EVENT_END0("all", "TRACE_EVENT_END0 call"); | 344 TRACE_EVENT_END0("all", "TRACE_EVENT_END0 call"); |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 440 EXPECT_FIND_("TRACE_EVENT1 call"); | 443 EXPECT_FIND_("TRACE_EVENT1 call"); |
| 441 EXPECT_SUB_FIND_("name1"); | 444 EXPECT_SUB_FIND_("name1"); |
| 442 EXPECT_SUB_FIND_("value1"); | 445 EXPECT_SUB_FIND_("value1"); |
| 443 EXPECT_FIND_("TRACE_EVENT2 call"); | 446 EXPECT_FIND_("TRACE_EVENT2 call"); |
| 444 EXPECT_SUB_FIND_("name1"); | 447 EXPECT_SUB_FIND_("name1"); |
| 445 EXPECT_SUB_FIND_("\"value1\""); | 448 EXPECT_SUB_FIND_("\"value1\""); |
| 446 EXPECT_SUB_FIND_("name2"); | 449 EXPECT_SUB_FIND_("name2"); |
| 447 EXPECT_SUB_FIND_("value\\2"); | 450 EXPECT_SUB_FIND_("value\\2"); |
| 448 | 451 |
| 449 EXPECT_FIND_("TRACE_EVENT_INSTANT0 call"); | 452 EXPECT_FIND_("TRACE_EVENT_INSTANT0 call"); |
| 453 { |
| 454 std::string scope; |
| 455 EXPECT_TRUE((item && item->GetString("s", &scope))); |
| 456 EXPECT_EQ("g", scope); |
| 457 } |
| 450 EXPECT_FIND_("TRACE_EVENT_INSTANT1 call"); | 458 EXPECT_FIND_("TRACE_EVENT_INSTANT1 call"); |
| 459 { |
| 460 std::string scope; |
| 461 EXPECT_TRUE((item && item->GetString("s", &scope))); |
| 462 EXPECT_EQ("p", scope); |
| 463 } |
| 451 EXPECT_SUB_FIND_("name1"); | 464 EXPECT_SUB_FIND_("name1"); |
| 452 EXPECT_SUB_FIND_("value1"); | 465 EXPECT_SUB_FIND_("value1"); |
| 453 EXPECT_FIND_("TRACE_EVENT_INSTANT2 call"); | 466 EXPECT_FIND_("TRACE_EVENT_INSTANT2 call"); |
| 467 { |
| 468 std::string scope; |
| 469 EXPECT_TRUE((item && item->GetString("s", &scope))); |
| 470 EXPECT_EQ("t", scope); |
| 471 } |
| 454 EXPECT_SUB_FIND_("name1"); | 472 EXPECT_SUB_FIND_("name1"); |
| 455 EXPECT_SUB_FIND_("value1"); | 473 EXPECT_SUB_FIND_("value1"); |
| 456 EXPECT_SUB_FIND_("name2"); | 474 EXPECT_SUB_FIND_("name2"); |
| 457 EXPECT_SUB_FIND_("value2"); | 475 EXPECT_SUB_FIND_("value2"); |
| 458 | 476 |
| 459 EXPECT_FIND_("TRACE_EVENT_BEGIN0 call"); | 477 EXPECT_FIND_("TRACE_EVENT_BEGIN0 call"); |
| 460 EXPECT_FIND_("TRACE_EVENT_BEGIN1 call"); | 478 EXPECT_FIND_("TRACE_EVENT_BEGIN1 call"); |
| 461 EXPECT_SUB_FIND_("name1"); | 479 EXPECT_SUB_FIND_("name1"); |
| 462 EXPECT_SUB_FIND_("value1"); | 480 EXPECT_SUB_FIND_("value1"); |
| 463 EXPECT_FIND_("TRACE_EVENT_BEGIN2 call"); | 481 EXPECT_FIND_("TRACE_EVENT_BEGIN2 call"); |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 688 EXPECT_EQ("D", phase); | 706 EXPECT_EQ("D", phase); |
| 689 EXPECT_TRUE((item && item->GetString("id", &id))); | 707 EXPECT_TRUE((item && item->GetString("id", &id))); |
| 690 EXPECT_EQ("2128506", id); | 708 EXPECT_EQ("2128506", id); |
| 691 } | 709 } |
| 692 } | 710 } |
| 693 | 711 |
| 694 void TraceManyInstantEvents(int thread_id, int num_events, | 712 void TraceManyInstantEvents(int thread_id, int num_events, |
| 695 WaitableEvent* task_complete_event) { | 713 WaitableEvent* task_complete_event) { |
| 696 for (int i = 0; i < num_events; i++) { | 714 for (int i = 0; i < num_events; i++) { |
| 697 TRACE_EVENT_INSTANT2("all", "multi thread event", | 715 TRACE_EVENT_INSTANT2("all", "multi thread event", |
| 716 TRACE_EVENT_SCOPE_THREAD, |
| 698 "thread", thread_id, | 717 "thread", thread_id, |
| 699 "event", i); | 718 "event", i); |
| 700 } | 719 } |
| 701 | 720 |
| 702 if (task_complete_event) | 721 if (task_complete_event) |
| 703 task_complete_event->Signal(); | 722 task_complete_event->Signal(); |
| 704 } | 723 } |
| 705 | 724 |
| 706 void ValidateInstantEventPresentOnEveryThread(const ListValue& trace_parsed, | 725 void ValidateInstantEventPresentOnEveryThread(const ListValue& trace_parsed, |
| 707 int num_threads, | 726 int num_threads, |
| (...skipping 22 matching lines...) Expand all Loading... |
| 730 EXPECT_FALSE(results[-1][-1]); | 749 EXPECT_FALSE(results[-1][-1]); |
| 731 for (int thread = 0; thread < num_threads; thread++) { | 750 for (int thread = 0; thread < num_threads; thread++) { |
| 732 for (int event = 0; event < num_events; event++) { | 751 for (int event = 0; event < num_events; event++) { |
| 733 EXPECT_TRUE(results[thread][event]); | 752 EXPECT_TRUE(results[thread][event]); |
| 734 } | 753 } |
| 735 } | 754 } |
| 736 } | 755 } |
| 737 | 756 |
| 738 void TraceCallsWithCachedCategoryPointersPointers(const char* name_str) { | 757 void TraceCallsWithCachedCategoryPointersPointers(const char* name_str) { |
| 739 TRACE_EVENT0("category name1", name_str); | 758 TRACE_EVENT0("category name1", name_str); |
| 740 TRACE_EVENT_INSTANT0("category name2", name_str); | 759 TRACE_EVENT_INSTANT0("category name2", name_str, TRACE_EVENT_SCOPE_THREAD); |
| 741 TRACE_EVENT_BEGIN0("category name3", name_str); | 760 TRACE_EVENT_BEGIN0("category name3", name_str); |
| 742 TRACE_EVENT_END0("category name4", name_str); | 761 TRACE_EVENT_END0("category name4", name_str); |
| 743 } | 762 } |
| 744 | 763 |
| 745 } // namespace | 764 } // namespace |
| 746 | 765 |
| 747 void HighResSleepForTraceTest(base::TimeDelta elapsed) { | 766 void HighResSleepForTraceTest(base::TimeDelta elapsed) { |
| 748 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed; | 767 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed; |
| 749 do { | 768 do { |
| 750 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); | 769 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 844 // Cleanup. | 863 // Cleanup. |
| 845 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 864 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
| 846 } | 865 } |
| 847 | 866 |
| 848 // Test that categories work. | 867 // Test that categories work. |
| 849 TEST_F(TraceEventTestFixture, Categories) { | 868 TEST_F(TraceEventTestFixture, Categories) { |
| 850 ManualTestSetUp(); | 869 ManualTestSetUp(); |
| 851 | 870 |
| 852 // Test that categories that are used can be retrieved whether trace was | 871 // Test that categories that are used can be retrieved whether trace was |
| 853 // enabled or disabled when the trace event was encountered. | 872 // enabled or disabled when the trace event was encountered. |
| 854 TRACE_EVENT_INSTANT0("c1", "name"); | 873 TRACE_EVENT_INSTANT0("c1", "name", TRACE_EVENT_SCOPE_THREAD); |
| 855 TRACE_EVENT_INSTANT0("c2", "name"); | 874 TRACE_EVENT_INSTANT0("c2", "name", TRACE_EVENT_SCOPE_THREAD); |
| 856 BeginTrace(); | 875 BeginTrace(); |
| 857 TRACE_EVENT_INSTANT0("c3", "name"); | 876 TRACE_EVENT_INSTANT0("c3", "name", TRACE_EVENT_SCOPE_THREAD); |
| 858 TRACE_EVENT_INSTANT0("c4", "name"); | 877 TRACE_EVENT_INSTANT0("c4", "name", TRACE_EVENT_SCOPE_THREAD); |
| 859 EndTraceAndFlush(); | 878 EndTraceAndFlush(); |
| 860 std::vector<std::string> cats; | 879 std::vector<std::string> cats; |
| 861 TraceLog::GetInstance()->GetKnownCategories(&cats); | 880 TraceLog::GetInstance()->GetKnownCategories(&cats); |
| 862 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c1") != cats.end()); | 881 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c1") != cats.end()); |
| 863 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c2") != cats.end()); | 882 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c2") != cats.end()); |
| 864 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c3") != cats.end()); | 883 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c3") != cats.end()); |
| 865 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c4") != cats.end()); | 884 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c4") != cats.end()); |
| 866 | 885 |
| 867 const std::vector<std::string> empty_categories; | 886 const std::vector<std::string> empty_categories; |
| 868 std::vector<std::string> included_categories; | 887 std::vector<std::string> included_categories; |
| 869 std::vector<std::string> excluded_categories; | 888 std::vector<std::string> excluded_categories; |
| 870 | 889 |
| 871 // Test that category filtering works. | 890 // Test that category filtering works. |
| 872 | 891 |
| 873 // Include nonexistent category -> no events | 892 // Include nonexistent category -> no events |
| 874 Clear(); | 893 Clear(); |
| 875 included_categories.clear(); | 894 included_categories.clear(); |
| 876 included_categories.push_back("not_found823564786"); | 895 included_categories.push_back("not_found823564786"); |
| 877 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories, | 896 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories, |
| 878 TraceLog::RECORD_UNTIL_FULL); | 897 TraceLog::RECORD_UNTIL_FULL); |
| 879 TRACE_EVENT_INSTANT0("cat1", "name"); | 898 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD); |
| 880 TRACE_EVENT_INSTANT0("cat2", "name"); | 899 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD); |
| 881 EndTraceAndFlush(); | 900 EndTraceAndFlush(); |
| 882 EXPECT_TRUE(trace_parsed_.empty()); | 901 EXPECT_TRUE(trace_parsed_.empty()); |
| 883 | 902 |
| 884 // Include existent category -> only events of that category | 903 // Include existent category -> only events of that category |
| 885 Clear(); | 904 Clear(); |
| 886 included_categories.clear(); | 905 included_categories.clear(); |
| 887 included_categories.push_back("inc"); | 906 included_categories.push_back("inc"); |
| 888 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories, | 907 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories, |
| 889 TraceLog::RECORD_UNTIL_FULL); | 908 TraceLog::RECORD_UNTIL_FULL); |
| 890 TRACE_EVENT_INSTANT0("inc", "name"); | 909 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD); |
| 891 TRACE_EVENT_INSTANT0("inc2", "name"); | 910 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD); |
| 892 EndTraceAndFlush(); | 911 EndTraceAndFlush(); |
| 893 EXPECT_TRUE(FindMatchingValue("cat", "inc")); | 912 EXPECT_TRUE(FindMatchingValue("cat", "inc")); |
| 894 EXPECT_FALSE(FindNonMatchingValue("cat", "inc")); | 913 EXPECT_FALSE(FindNonMatchingValue("cat", "inc")); |
| 895 | 914 |
| 896 // Include existent wildcard -> all categories matching wildcard | 915 // Include existent wildcard -> all categories matching wildcard |
| 897 Clear(); | 916 Clear(); |
| 898 included_categories.clear(); | 917 included_categories.clear(); |
| 899 included_categories.push_back("inc_wildcard_*"); | 918 included_categories.push_back("inc_wildcard_*"); |
| 900 included_categories.push_back("inc_wildchar_?_end"); | 919 included_categories.push_back("inc_wildchar_?_end"); |
| 901 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories, | 920 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories, |
| 902 TraceLog::RECORD_UNTIL_FULL); | 921 TraceLog::RECORD_UNTIL_FULL); |
| 903 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included"); | 922 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included", |
| 904 TRACE_EVENT_INSTANT0("inc_wildcard_", "included"); | 923 TRACE_EVENT_SCOPE_THREAD); |
| 905 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included"); | 924 TRACE_EVENT_INSTANT0("inc_wildcard_", "included", TRACE_EVENT_SCOPE_THREAD); |
| 906 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc"); | 925 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included", |
| 907 TRACE_EVENT_INSTANT0("cat1", "not_inc"); | 926 TRACE_EVENT_SCOPE_THREAD); |
| 908 TRACE_EVENT_INSTANT0("cat2", "not_inc"); | 927 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc", |
| 928 TRACE_EVENT_SCOPE_THREAD); |
| 929 TRACE_EVENT_INSTANT0("cat1", "not_inc", TRACE_EVENT_SCOPE_THREAD); |
| 930 TRACE_EVENT_INSTANT0("cat2", "not_inc", TRACE_EVENT_SCOPE_THREAD); |
| 909 EndTraceAndFlush(); | 931 EndTraceAndFlush(); |
| 910 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc")); | 932 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc")); |
| 911 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_")); | 933 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_")); |
| 912 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end")); | 934 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end")); |
| 913 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); | 935 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); |
| 914 | 936 |
| 915 included_categories.clear(); | 937 included_categories.clear(); |
| 916 | 938 |
| 917 // Exclude nonexistent category -> all events | 939 // Exclude nonexistent category -> all events |
| 918 Clear(); | 940 Clear(); |
| 919 excluded_categories.clear(); | 941 excluded_categories.clear(); |
| 920 excluded_categories.push_back("not_found823564786"); | 942 excluded_categories.push_back("not_found823564786"); |
| 921 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories, | 943 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories, |
| 922 TraceLog::RECORD_UNTIL_FULL); | 944 TraceLog::RECORD_UNTIL_FULL); |
| 923 TRACE_EVENT_INSTANT0("cat1", "name"); | 945 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD); |
| 924 TRACE_EVENT_INSTANT0("cat2", "name"); | 946 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD); |
| 925 EndTraceAndFlush(); | 947 EndTraceAndFlush(); |
| 926 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); | 948 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); |
| 927 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); | 949 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); |
| 928 | 950 |
| 929 // Exclude existent category -> only events of other categories | 951 // Exclude existent category -> only events of other categories |
| 930 Clear(); | 952 Clear(); |
| 931 excluded_categories.clear(); | 953 excluded_categories.clear(); |
| 932 excluded_categories.push_back("inc"); | 954 excluded_categories.push_back("inc"); |
| 933 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories, | 955 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories, |
| 934 TraceLog::RECORD_UNTIL_FULL); | 956 TraceLog::RECORD_UNTIL_FULL); |
| 935 TRACE_EVENT_INSTANT0("inc", "name"); | 957 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD); |
| 936 TRACE_EVENT_INSTANT0("inc2", "name"); | 958 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD); |
| 937 EndTraceAndFlush(); | 959 EndTraceAndFlush(); |
| 938 EXPECT_TRUE(FindMatchingValue("cat", "inc2")); | 960 EXPECT_TRUE(FindMatchingValue("cat", "inc2")); |
| 939 EXPECT_FALSE(FindMatchingValue("cat", "inc")); | 961 EXPECT_FALSE(FindMatchingValue("cat", "inc")); |
| 940 | 962 |
| 941 // Exclude existent wildcard -> all categories not matching wildcard | 963 // Exclude existent wildcard -> all categories not matching wildcard |
| 942 Clear(); | 964 Clear(); |
| 943 excluded_categories.clear(); | 965 excluded_categories.clear(); |
| 944 excluded_categories.push_back("inc_wildcard_*"); | 966 excluded_categories.push_back("inc_wildcard_*"); |
| 945 excluded_categories.push_back("inc_wildchar_?_end"); | 967 excluded_categories.push_back("inc_wildchar_?_end"); |
| 946 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories, | 968 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories, |
| 947 TraceLog::RECORD_UNTIL_FULL); | 969 TraceLog::RECORD_UNTIL_FULL); |
| 948 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc"); | 970 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc", TRACE_EVENT_SCOPE_THREAD); |
| 949 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc"); | 971 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc", TRACE_EVENT_SCOPE_THREAD); |
| 950 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc"); | 972 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc", |
| 951 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included"); | 973 TRACE_EVENT_SCOPE_THREAD); |
| 952 TRACE_EVENT_INSTANT0("cat1", "included"); | 974 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included", |
| 953 TRACE_EVENT_INSTANT0("cat2", "included"); | 975 TRACE_EVENT_SCOPE_THREAD); |
| 976 TRACE_EVENT_INSTANT0("cat1", "included", TRACE_EVENT_SCOPE_THREAD); |
| 977 TRACE_EVENT_INSTANT0("cat2", "included", TRACE_EVENT_SCOPE_THREAD); |
| 954 EndTraceAndFlush(); | 978 EndTraceAndFlush(); |
| 955 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_bla_end")); | 979 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_bla_end")); |
| 956 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); | 980 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); |
| 957 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); | 981 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); |
| 958 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); | 982 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); |
| 959 } | 983 } |
| 960 | 984 |
| 961 | 985 |
| 962 // Test EVENT_WATCH_NOTIFICATION | 986 // Test EVENT_WATCH_NOTIFICATION |
| 963 TEST_F(TraceEventTestFixture, EventWatchNotification) { | 987 TEST_F(TraceEventTestFixture, EventWatchNotification) { |
| 964 ManualTestSetUp(); | 988 ManualTestSetUp(); |
| 965 | 989 |
| 966 // Basic one occurrence. | 990 // Basic one occurrence. |
| 967 BeginTrace(); | 991 BeginTrace(); |
| 968 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 992 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
| 969 TRACE_EVENT_INSTANT0("cat", "event"); | 993 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD); |
| 970 EndTraceAndFlush(); | 994 EndTraceAndFlush(); |
| 971 EXPECT_EQ(event_watch_notification_, 1); | 995 EXPECT_EQ(event_watch_notification_, 1); |
| 972 | 996 |
| 973 // Basic one occurrence before Set. | 997 // Basic one occurrence before Set. |
| 974 BeginTrace(); | 998 BeginTrace(); |
| 975 TRACE_EVENT_INSTANT0("cat", "event"); | 999 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD); |
| 976 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 1000 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
| 977 EndTraceAndFlush(); | 1001 EndTraceAndFlush(); |
| 978 EXPECT_EQ(event_watch_notification_, 1); | 1002 EXPECT_EQ(event_watch_notification_, 1); |
| 979 | 1003 |
| 980 // Auto-reset after end trace. | 1004 // Auto-reset after end trace. |
| 981 BeginTrace(); | 1005 BeginTrace(); |
| 982 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 1006 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
| 983 EndTraceAndFlush(); | 1007 EndTraceAndFlush(); |
| 984 BeginTrace(); | 1008 BeginTrace(); |
| 985 TRACE_EVENT_INSTANT0("cat", "event"); | 1009 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD); |
| 986 EndTraceAndFlush(); | 1010 EndTraceAndFlush(); |
| 987 EXPECT_EQ(event_watch_notification_, 0); | 1011 EXPECT_EQ(event_watch_notification_, 0); |
| 988 | 1012 |
| 989 // Multiple occurrence. | 1013 // Multiple occurrence. |
| 990 BeginTrace(); | 1014 BeginTrace(); |
| 991 int num_occurrences = 5; | 1015 int num_occurrences = 5; |
| 992 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 1016 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
| 993 for (int i = 0; i < num_occurrences; ++i) | 1017 for (int i = 0; i < num_occurrences; ++i) |
| 994 TRACE_EVENT_INSTANT0("cat", "event"); | 1018 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD); |
| 995 EndTraceAndFlush(); | 1019 EndTraceAndFlush(); |
| 996 EXPECT_EQ(event_watch_notification_, num_occurrences); | 1020 EXPECT_EQ(event_watch_notification_, num_occurrences); |
| 997 | 1021 |
| 998 // Wrong category. | 1022 // Wrong category. |
| 999 BeginTrace(); | 1023 BeginTrace(); |
| 1000 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 1024 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
| 1001 TRACE_EVENT_INSTANT0("wrong_cat", "event"); | 1025 TRACE_EVENT_INSTANT0("wrong_cat", "event", TRACE_EVENT_SCOPE_THREAD); |
| 1002 EndTraceAndFlush(); | 1026 EndTraceAndFlush(); |
| 1003 EXPECT_EQ(event_watch_notification_, 0); | 1027 EXPECT_EQ(event_watch_notification_, 0); |
| 1004 | 1028 |
| 1005 // Wrong name. | 1029 // Wrong name. |
| 1006 BeginTrace(); | 1030 BeginTrace(); |
| 1007 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 1031 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
| 1008 TRACE_EVENT_INSTANT0("cat", "wrong_event"); | 1032 TRACE_EVENT_INSTANT0("cat", "wrong_event", TRACE_EVENT_SCOPE_THREAD); |
| 1009 EndTraceAndFlush(); | 1033 EndTraceAndFlush(); |
| 1010 EXPECT_EQ(event_watch_notification_, 0); | 1034 EXPECT_EQ(event_watch_notification_, 0); |
| 1011 | 1035 |
| 1012 // Canceled. | 1036 // Canceled. |
| 1013 BeginTrace(); | 1037 BeginTrace(); |
| 1014 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 1038 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
| 1015 TraceLog::GetInstance()->CancelWatchEvent(); | 1039 TraceLog::GetInstance()->CancelWatchEvent(); |
| 1016 TRACE_EVENT_INSTANT0("cat", "event"); | 1040 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD); |
| 1017 EndTraceAndFlush(); | 1041 EndTraceAndFlush(); |
| 1018 EXPECT_EQ(event_watch_notification_, 0); | 1042 EXPECT_EQ(event_watch_notification_, 0); |
| 1019 } | 1043 } |
| 1020 | 1044 |
| 1021 // Test ASYNC_BEGIN/END events | 1045 // Test ASYNC_BEGIN/END events |
| 1022 TEST_F(TraceEventTestFixture, AsyncBeginEndEvents) { | 1046 TEST_F(TraceEventTestFixture, AsyncBeginEndEvents) { |
| 1023 ManualTestSetUp(); | 1047 ManualTestSetUp(); |
| 1024 BeginTrace(); | 1048 BeginTrace(); |
| 1025 | 1049 |
| 1026 unsigned long long id = 0xfeedbeeffeedbeefull; | 1050 unsigned long long id = 0xfeedbeeffeedbeefull; |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1261 } | 1285 } |
| 1262 } | 1286 } |
| 1263 } | 1287 } |
| 1264 | 1288 |
| 1265 TEST_F(TraceEventTestFixture, ThreadNameChanges) { | 1289 TEST_F(TraceEventTestFixture, ThreadNameChanges) { |
| 1266 ManualTestSetUp(); | 1290 ManualTestSetUp(); |
| 1267 | 1291 |
| 1268 BeginTrace(); | 1292 BeginTrace(); |
| 1269 | 1293 |
| 1270 PlatformThread::SetName(""); | 1294 PlatformThread::SetName(""); |
| 1271 TRACE_EVENT_INSTANT0("drink", "water"); | 1295 TRACE_EVENT_INSTANT0("drink", "water", TRACE_EVENT_SCOPE_THREAD); |
| 1272 | 1296 |
| 1273 PlatformThread::SetName("cafe"); | 1297 PlatformThread::SetName("cafe"); |
| 1274 TRACE_EVENT_INSTANT0("drink", "coffee"); | 1298 TRACE_EVENT_INSTANT0("drink", "coffee", TRACE_EVENT_SCOPE_THREAD); |
| 1275 | 1299 |
| 1276 PlatformThread::SetName("shop"); | 1300 PlatformThread::SetName("shop"); |
| 1277 // No event here, so won't appear in combined name. | 1301 // No event here, so won't appear in combined name. |
| 1278 | 1302 |
| 1279 PlatformThread::SetName("pub"); | 1303 PlatformThread::SetName("pub"); |
| 1280 TRACE_EVENT_INSTANT0("drink", "beer"); | 1304 TRACE_EVENT_INSTANT0("drink", "beer", TRACE_EVENT_SCOPE_THREAD); |
| 1281 TRACE_EVENT_INSTANT0("drink", "wine"); | 1305 TRACE_EVENT_INSTANT0("drink", "wine", TRACE_EVENT_SCOPE_THREAD); |
| 1282 | 1306 |
| 1283 PlatformThread::SetName(" bar"); | 1307 PlatformThread::SetName(" bar"); |
| 1284 TRACE_EVENT_INSTANT0("drink", "whisky"); | 1308 TRACE_EVENT_INSTANT0("drink", "whisky", TRACE_EVENT_SCOPE_THREAD); |
| 1285 | 1309 |
| 1286 EndTraceAndFlush(); | 1310 EndTraceAndFlush(); |
| 1287 | 1311 |
| 1288 std::vector<const DictionaryValue*> items = | 1312 std::vector<const DictionaryValue*> items = |
| 1289 FindTraceEntries(trace_parsed_, "thread_name"); | 1313 FindTraceEntries(trace_parsed_, "thread_name"); |
| 1290 EXPECT_EQ(1u, items.size()); | 1314 EXPECT_EQ(1u, items.size()); |
| 1291 ASSERT_GT(items.size(), 0u); | 1315 ASSERT_GT(items.size(), 0u); |
| 1292 const DictionaryValue* item = items[0]; | 1316 const DictionaryValue* item = items[0]; |
| 1293 ASSERT_TRUE(item); | 1317 ASSERT_TRUE(item); |
| 1294 int tid; | 1318 int tid; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1313 // recorded after the system is started again. | 1337 // recorded after the system is started again. |
| 1314 for (int i = 0; i < 4; i++) { | 1338 for (int i = 0; i < 4; i++) { |
| 1315 // Scope to contain the then destroy the TraceLog singleton. | 1339 // Scope to contain the then destroy the TraceLog singleton. |
| 1316 { | 1340 { |
| 1317 base::ShadowingAtExitManager exit_manager_will_destroy_singletons; | 1341 base::ShadowingAtExitManager exit_manager_will_destroy_singletons; |
| 1318 | 1342 |
| 1319 // Setup TraceLog singleton inside this test's exit manager scope | 1343 // Setup TraceLog singleton inside this test's exit manager scope |
| 1320 // so that it will be destroyed when this scope closes. | 1344 // so that it will be destroyed when this scope closes. |
| 1321 ManualTestSetUp(); | 1345 ManualTestSetUp(); |
| 1322 | 1346 |
| 1323 TRACE_EVENT_INSTANT0("all", "not recorded; system not enabled"); | 1347 TRACE_EVENT_INSTANT0("all", "not recorded; system not enabled", |
| 1348 TRACE_EVENT_SCOPE_THREAD); |
| 1324 | 1349 |
| 1325 BeginTrace(); | 1350 BeginTrace(); |
| 1326 | 1351 |
| 1327 TRACE_EVENT_INSTANT0("all", "is recorded 1; system has been enabled"); | 1352 TRACE_EVENT_INSTANT0("all", "is recorded 1; system has been enabled", |
| 1353 TRACE_EVENT_SCOPE_THREAD); |
| 1328 // Trace calls that will cache pointers to categories; they're valid here | 1354 // Trace calls that will cache pointers to categories; they're valid here |
| 1329 TraceCallsWithCachedCategoryPointersPointers( | 1355 TraceCallsWithCachedCategoryPointersPointers( |
| 1330 "is recorded 2; system has been enabled"); | 1356 "is recorded 2; system has been enabled"); |
| 1331 | 1357 |
| 1332 EndTraceAndFlush(); | 1358 EndTraceAndFlush(); |
| 1333 } // scope to destroy singleton | 1359 } // scope to destroy singleton |
| 1334 ASSERT_FALSE(TraceLog::GetInstance()); | 1360 ASSERT_FALSE(TraceLog::GetInstance()); |
| 1335 | 1361 |
| 1336 // Now that singleton is destroyed, check what trace events were recorded | 1362 // Now that singleton is destroyed, check what trace events were recorded |
| 1337 const DictionaryValue* item = NULL; | 1363 const DictionaryValue* item = NULL; |
| 1338 ListValue& trace_parsed = trace_parsed_; | 1364 ListValue& trace_parsed = trace_parsed_; |
| 1339 EXPECT_FIND_("is recorded 1"); | 1365 EXPECT_FIND_("is recorded 1"); |
| 1340 EXPECT_FIND_("is recorded 2"); | 1366 EXPECT_FIND_("is recorded 2"); |
| 1341 EXPECT_NOT_FIND_("not recorded"); | 1367 EXPECT_NOT_FIND_("not recorded"); |
| 1342 | 1368 |
| 1343 // Make additional trace event calls on the shutdown system. They should | 1369 // Make additional trace event calls on the shutdown system. They should |
| 1344 // all pass cleanly, but the data not be recorded. We'll verify that next | 1370 // all pass cleanly, but the data not be recorded. We'll verify that next |
| 1345 // time around the loop (the only way to flush the trace buffers). | 1371 // time around the loop (the only way to flush the trace buffers). |
| 1346 TRACE_EVENT_BEGIN_ETW("not recorded; system shutdown", 0, NULL); | 1372 TRACE_EVENT_BEGIN_ETW("not recorded; system shutdown", 0, NULL); |
| 1347 TRACE_EVENT_END_ETW("not recorded; system shutdown", 0, NULL); | 1373 TRACE_EVENT_END_ETW("not recorded; system shutdown", 0, NULL); |
| 1348 TRACE_EVENT_INSTANT_ETW("not recorded; system shutdown", 0, NULL); | 1374 TRACE_EVENT_INSTANT_ETW("not recorded; system shutdown", 0, NULL); |
| 1349 TRACE_EVENT0("all", "not recorded; system shutdown"); | 1375 TRACE_EVENT0("all", "not recorded; system shutdown"); |
| 1350 TRACE_EVENT_INSTANT0("all", "not recorded; system shutdown"); | 1376 TRACE_EVENT_INSTANT0("all", "not recorded; system shutdown", |
| 1377 TRACE_EVENT_SCOPE_THREAD); |
| 1351 TRACE_EVENT_BEGIN0("all", "not recorded; system shutdown"); | 1378 TRACE_EVENT_BEGIN0("all", "not recorded; system shutdown"); |
| 1352 TRACE_EVENT_END0("all", "not recorded; system shutdown"); | 1379 TRACE_EVENT_END0("all", "not recorded; system shutdown"); |
| 1353 | 1380 |
| 1354 TRACE_EVENT0("new category 0!", "not recorded; system shutdown"); | 1381 TRACE_EVENT0("new category 0!", "not recorded; system shutdown"); |
| 1355 TRACE_EVENT_INSTANT0("new category 1!", "not recorded; system shutdown"); | 1382 TRACE_EVENT_INSTANT0("new category 1!", "not recorded; system shutdown", |
| 1383 TRACE_EVENT_SCOPE_THREAD); |
| 1356 TRACE_EVENT_BEGIN0("new category 2!", "not recorded; system shutdown"); | 1384 TRACE_EVENT_BEGIN0("new category 2!", "not recorded; system shutdown"); |
| 1357 TRACE_EVENT_END0("new category 3!", "not recorded; system shutdown"); | 1385 TRACE_EVENT_END0("new category 3!", "not recorded; system shutdown"); |
| 1358 | 1386 |
| 1359 // Cached categories should be safe to check, and still disable traces | 1387 // Cached categories should be safe to check, and still disable traces |
| 1360 TraceCallsWithCachedCategoryPointersPointers( | 1388 TraceCallsWithCachedCategoryPointersPointers( |
| 1361 "not recorded; system shutdown"); | 1389 "not recorded; system shutdown"); |
| 1362 } | 1390 } |
| 1363 } | 1391 } |
| 1364 | 1392 |
| 1365 TEST_F(TraceEventTestFixture, NormallyNoDeepCopy) { | 1393 TEST_F(TraceEventTestFixture, NormallyNoDeepCopy) { |
| 1366 // Test that the TRACE_EVENT macros do not deep-copy their string. If they | 1394 // Test that the TRACE_EVENT macros do not deep-copy their string. If they |
| 1367 // do so it may indicate a performance regression, but more-over it would | 1395 // do so it may indicate a performance regression, but more-over it would |
| 1368 // make the DEEP_COPY overloads redundant. | 1396 // make the DEEP_COPY overloads redundant. |
| 1369 ManualTestSetUp(); | 1397 ManualTestSetUp(); |
| 1370 | 1398 |
| 1371 std::string name_string("event name"); | 1399 std::string name_string("event name"); |
| 1372 | 1400 |
| 1373 BeginTrace(); | 1401 BeginTrace(); |
| 1374 TRACE_EVENT_INSTANT0("category", name_string.c_str()); | 1402 TRACE_EVENT_INSTANT0("category", name_string.c_str(), |
| 1403 TRACE_EVENT_SCOPE_THREAD); |
| 1375 | 1404 |
| 1376 // Modify the string in place (a wholesale reassignment may leave the old | 1405 // Modify the string in place (a wholesale reassignment may leave the old |
| 1377 // string intact on the heap). | 1406 // string intact on the heap). |
| 1378 name_string[0] = '@'; | 1407 name_string[0] = '@'; |
| 1379 | 1408 |
| 1380 EndTraceAndFlush(); | 1409 EndTraceAndFlush(); |
| 1381 | 1410 |
| 1382 EXPECT_FALSE(FindTraceEntry(trace_parsed_, "event name")); | 1411 EXPECT_FALSE(FindTraceEntry(trace_parsed_, "event name")); |
| 1383 EXPECT_TRUE(FindTraceEntry(trace_parsed_, name_string.c_str())); | 1412 EXPECT_TRUE(FindTraceEntry(trace_parsed_, name_string.c_str())); |
| 1384 } | 1413 } |
| 1385 | 1414 |
| 1386 TEST_F(TraceEventTestFixture, DeepCopy) { | 1415 TEST_F(TraceEventTestFixture, DeepCopy) { |
| 1387 ManualTestSetUp(); | 1416 ManualTestSetUp(); |
| 1388 | 1417 |
| 1389 static const char kOriginalName1[] = "name1"; | 1418 static const char kOriginalName1[] = "name1"; |
| 1390 static const char kOriginalName2[] = "name2"; | 1419 static const char kOriginalName2[] = "name2"; |
| 1391 static const char kOriginalName3[] = "name3"; | 1420 static const char kOriginalName3[] = "name3"; |
| 1392 std::string name1(kOriginalName1); | 1421 std::string name1(kOriginalName1); |
| 1393 std::string name2(kOriginalName2); | 1422 std::string name2(kOriginalName2); |
| 1394 std::string name3(kOriginalName3); | 1423 std::string name3(kOriginalName3); |
| 1395 std::string arg1("arg1"); | 1424 std::string arg1("arg1"); |
| 1396 std::string arg2("arg2"); | 1425 std::string arg2("arg2"); |
| 1397 std::string val1("val1"); | 1426 std::string val1("val1"); |
| 1398 std::string val2("val2"); | 1427 std::string val2("val2"); |
| 1399 | 1428 |
| 1400 BeginTrace(); | 1429 BeginTrace(); |
| 1401 TRACE_EVENT_COPY_INSTANT0("category", name1.c_str()); | 1430 TRACE_EVENT_COPY_INSTANT0("category", name1.c_str(), |
| 1431 TRACE_EVENT_SCOPE_THREAD); |
| 1402 TRACE_EVENT_COPY_BEGIN1("category", name2.c_str(), | 1432 TRACE_EVENT_COPY_BEGIN1("category", name2.c_str(), |
| 1403 arg1.c_str(), 5); | 1433 arg1.c_str(), 5); |
| 1404 TRACE_EVENT_COPY_END2("category", name3.c_str(), | 1434 TRACE_EVENT_COPY_END2("category", name3.c_str(), |
| 1405 arg1.c_str(), val1, | 1435 arg1.c_str(), val1, |
| 1406 arg2.c_str(), val2); | 1436 arg2.c_str(), val2); |
| 1407 | 1437 |
| 1408 // As per NormallyNoDeepCopy, modify the strings in place. | 1438 // As per NormallyNoDeepCopy, modify the strings in place. |
| 1409 name1[0] = name2[0] = name3[0] = arg1[0] = arg2[0] = val1[0] = val2[0] = '@'; | 1439 name1[0] = name2[0] = name3[0] = arg1[0] = arg2[0] = val1[0] = val2[0] = '@'; |
| 1410 | 1440 |
| 1411 EndTraceAndFlush(); | 1441 EndTraceAndFlush(); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1455 EXPECT_STREQ(json_output_.json_output.c_str(), "[bla1,bla2,bla3,bla4]"); | 1485 EXPECT_STREQ(json_output_.json_output.c_str(), "[bla1,bla2,bla3,bla4]"); |
| 1456 } | 1486 } |
| 1457 | 1487 |
| 1458 // Test that trace_event parameters are not evaluated if the tracing | 1488 // Test that trace_event parameters are not evaluated if the tracing |
| 1459 // system is disabled. | 1489 // system is disabled. |
| 1460 TEST_F(TraceEventTestFixture, TracingIsLazy) { | 1490 TEST_F(TraceEventTestFixture, TracingIsLazy) { |
| 1461 ManualTestSetUp(); | 1491 ManualTestSetUp(); |
| 1462 BeginTrace(); | 1492 BeginTrace(); |
| 1463 | 1493 |
| 1464 int a = 0; | 1494 int a = 0; |
| 1465 TRACE_EVENT_INSTANT1("category", "test", "a", a++); | 1495 TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++); |
| 1466 EXPECT_EQ(1, a); | 1496 EXPECT_EQ(1, a); |
| 1467 | 1497 |
| 1468 TraceLog::GetInstance()->SetDisabled(); | 1498 TraceLog::GetInstance()->SetDisabled(); |
| 1469 | 1499 |
| 1470 TRACE_EVENT_INSTANT1("category", "test", "a", a++); | 1500 TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++); |
| 1471 EXPECT_EQ(1, a); | 1501 EXPECT_EQ(1, a); |
| 1472 | 1502 |
| 1473 EndTraceAndFlush(); | 1503 EndTraceAndFlush(); |
| 1474 } | 1504 } |
| 1475 | 1505 |
| 1476 TEST_F(TraceEventTestFixture, TraceEnableDisable) { | 1506 TEST_F(TraceEventTestFixture, TraceEnableDisable) { |
| 1477 ManualTestSetUp(); | 1507 ManualTestSetUp(); |
| 1478 | 1508 |
| 1479 TraceLog* trace_log = TraceLog::GetInstance(); | 1509 TraceLog* trace_log = TraceLog::GetInstance(); |
| 1480 trace_log->SetEnabled(std::string(), TraceLog::RECORD_UNTIL_FULL); | 1510 trace_log->SetEnabled(std::string(), TraceLog::RECORD_UNTIL_FULL); |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1588 const unsigned char arg_types[], | 1618 const unsigned char arg_types[], |
| 1589 const unsigned long long arg_values[], | 1619 const unsigned long long arg_values[], |
| 1590 unsigned char flags) { | 1620 unsigned char flags) { |
| 1591 s_instance->collected_events_.push_back(name); | 1621 s_instance->collected_events_.push_back(name); |
| 1592 } | 1622 } |
| 1593 }; | 1623 }; |
| 1594 | 1624 |
| 1595 TraceEventCallbackTest* TraceEventCallbackTest::s_instance; | 1625 TraceEventCallbackTest* TraceEventCallbackTest::s_instance; |
| 1596 | 1626 |
| 1597 TEST_F(TraceEventCallbackTest, TraceEventCallback) { | 1627 TEST_F(TraceEventCallbackTest, TraceEventCallback) { |
| 1598 TRACE_EVENT_INSTANT0("all", "before enable"); | 1628 TRACE_EVENT_INSTANT0("all", "before enable", TRACE_EVENT_SCOPE_GLOBAL); |
| 1599 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 1629 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); |
| 1600 TRACE_EVENT_INSTANT0("all", "before callback set"); | 1630 TRACE_EVENT_INSTANT0("all", "before callback set", TRACE_EVENT_SCOPE_GLOBAL); |
| 1601 TraceLog::GetInstance()->SetEventCallback(Callback); | 1631 TraceLog::GetInstance()->SetEventCallback(Callback); |
| 1602 TRACE_EVENT_INSTANT0("all", "event1"); | 1632 TRACE_EVENT_INSTANT0("all", "event1", TRACE_EVENT_SCOPE_GLOBAL); |
| 1603 TRACE_EVENT_INSTANT0("all", "event2"); | 1633 TRACE_EVENT_INSTANT0("all", "event2", TRACE_EVENT_SCOPE_GLOBAL); |
| 1604 TraceLog::GetInstance()->SetEventCallback(NULL); | 1634 TraceLog::GetInstance()->SetEventCallback(NULL); |
| 1605 TRACE_EVENT_INSTANT0("all", "after callback removed"); | 1635 TRACE_EVENT_INSTANT0("all", "after callback removed", |
| 1636 TRACE_EVENT_SCOPE_GLOBAL); |
| 1606 EXPECT_EQ(2u, collected_events_.size()); | 1637 EXPECT_EQ(2u, collected_events_.size()); |
| 1607 EXPECT_EQ("event1", collected_events_[0]); | 1638 EXPECT_EQ("event1", collected_events_[0]); |
| 1608 EXPECT_EQ("event2", collected_events_[1]); | 1639 EXPECT_EQ("event2", collected_events_[1]); |
| 1609 } | 1640 } |
| 1610 | 1641 |
| 1611 // TODO(dsinclair): Continuous Tracing unit test. | 1642 // TODO(dsinclair): Continuous Tracing unit test. |
| 1612 | 1643 |
| 1613 } // namespace debug | 1644 } // namespace debug |
| 1614 } // namespace base | 1645 } // namespace base |
| OLD | NEW |