| 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 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW call", 0x3344, "extrastring2"); | 318 TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW call", 0x3344, "extrastring2"); |
| 319 TRACE_EVENT_INSTANT_ETW("TRACE_EVENT_INSTANT_ETW call", | 319 TRACE_EVENT_INSTANT_ETW("TRACE_EVENT_INSTANT_ETW call", |
| 320 0x5566, "extrastring3"); | 320 0x5566, "extrastring3"); |
| 321 | 321 |
| 322 TRACE_EVENT0("all", "TRACE_EVENT0 call"); | 322 TRACE_EVENT0("all", "TRACE_EVENT0 call"); |
| 323 TRACE_EVENT1("all", "TRACE_EVENT1 call", "name1", "value1"); | 323 TRACE_EVENT1("all", "TRACE_EVENT1 call", "name1", "value1"); |
| 324 TRACE_EVENT2("all", "TRACE_EVENT2 call", | 324 TRACE_EVENT2("all", "TRACE_EVENT2 call", |
| 325 "name1", "\"value1\"", | 325 "name1", "\"value1\"", |
| 326 "name2", "value\\2"); | 326 "name2", "value\\2"); |
| 327 | 327 |
| 328 TRACE_EVENT_INSTANT0("all", "TRACE_EVENT_INSTANT0 call"); | 328 TRACE_EVENT_INSTANT0("all", "TRACE_EVENT_INSTANT0 call", |
| 329 TRACE_EVENT_INSTANT1("all", "TRACE_EVENT_INSTANT1 call", "name1", "value1"); | 329 TRACE_EVENT_SCOPE_GLOBAL); |
| 330 TRACE_EVENT_INSTANT1("all", "TRACE_EVENT_INSTANT1 call", |
| 331 TRACE_EVENT_SCOPE_PROCESS, "name1", "value1"); |
| 330 TRACE_EVENT_INSTANT2("all", "TRACE_EVENT_INSTANT2 call", | 332 TRACE_EVENT_INSTANT2("all", "TRACE_EVENT_INSTANT2 call", |
| 333 TRACE_EVENT_SCOPE_THREAD, |
| 331 "name1", "value1", | 334 "name1", "value1", |
| 332 "name2", "value2"); | 335 "name2", "value2"); |
| 333 | 336 |
| 334 TRACE_EVENT_BEGIN0("all", "TRACE_EVENT_BEGIN0 call"); | 337 TRACE_EVENT_BEGIN0("all", "TRACE_EVENT_BEGIN0 call"); |
| 335 TRACE_EVENT_BEGIN1("all", "TRACE_EVENT_BEGIN1 call", "name1", "value1"); | 338 TRACE_EVENT_BEGIN1("all", "TRACE_EVENT_BEGIN1 call", "name1", "value1"); |
| 336 TRACE_EVENT_BEGIN2("all", "TRACE_EVENT_BEGIN2 call", | 339 TRACE_EVENT_BEGIN2("all", "TRACE_EVENT_BEGIN2 call", |
| 337 "name1", "value1", | 340 "name1", "value1", |
| 338 "name2", "value2"); | 341 "name2", "value2"); |
| 339 | 342 |
| 340 TRACE_EVENT_END0("all", "TRACE_EVENT_END0 call"); | 343 TRACE_EVENT_END0("all", "TRACE_EVENT_END0 call"); |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 434 EXPECT_FIND_("TRACE_EVENT1 call"); | 437 EXPECT_FIND_("TRACE_EVENT1 call"); |
| 435 EXPECT_SUB_FIND_("name1"); | 438 EXPECT_SUB_FIND_("name1"); |
| 436 EXPECT_SUB_FIND_("value1"); | 439 EXPECT_SUB_FIND_("value1"); |
| 437 EXPECT_FIND_("TRACE_EVENT2 call"); | 440 EXPECT_FIND_("TRACE_EVENT2 call"); |
| 438 EXPECT_SUB_FIND_("name1"); | 441 EXPECT_SUB_FIND_("name1"); |
| 439 EXPECT_SUB_FIND_("\"value1\""); | 442 EXPECT_SUB_FIND_("\"value1\""); |
| 440 EXPECT_SUB_FIND_("name2"); | 443 EXPECT_SUB_FIND_("name2"); |
| 441 EXPECT_SUB_FIND_("value\\2"); | 444 EXPECT_SUB_FIND_("value\\2"); |
| 442 | 445 |
| 443 EXPECT_FIND_("TRACE_EVENT_INSTANT0 call"); | 446 EXPECT_FIND_("TRACE_EVENT_INSTANT0 call"); |
| 447 { |
| 448 std::string scope; |
| 449 EXPECT_TRUE((item && item->GetString("s", &scope))); |
| 450 EXPECT_EQ("g", scope); |
| 451 } |
| 444 EXPECT_FIND_("TRACE_EVENT_INSTANT1 call"); | 452 EXPECT_FIND_("TRACE_EVENT_INSTANT1 call"); |
| 453 { |
| 454 std::string scope; |
| 455 EXPECT_TRUE((item && item->GetString("s", &scope))); |
| 456 EXPECT_EQ("p", scope); |
| 457 } |
| 445 EXPECT_SUB_FIND_("name1"); | 458 EXPECT_SUB_FIND_("name1"); |
| 446 EXPECT_SUB_FIND_("value1"); | 459 EXPECT_SUB_FIND_("value1"); |
| 447 EXPECT_FIND_("TRACE_EVENT_INSTANT2 call"); | 460 EXPECT_FIND_("TRACE_EVENT_INSTANT2 call"); |
| 461 { |
| 462 std::string scope; |
| 463 EXPECT_TRUE((item && item->GetString("s", &scope))); |
| 464 EXPECT_EQ("t", scope); |
| 465 } |
| 448 EXPECT_SUB_FIND_("name1"); | 466 EXPECT_SUB_FIND_("name1"); |
| 449 EXPECT_SUB_FIND_("value1"); | 467 EXPECT_SUB_FIND_("value1"); |
| 450 EXPECT_SUB_FIND_("name2"); | 468 EXPECT_SUB_FIND_("name2"); |
| 451 EXPECT_SUB_FIND_("value2"); | 469 EXPECT_SUB_FIND_("value2"); |
| 452 | 470 |
| 453 EXPECT_FIND_("TRACE_EVENT_BEGIN0 call"); | 471 EXPECT_FIND_("TRACE_EVENT_BEGIN0 call"); |
| 454 EXPECT_FIND_("TRACE_EVENT_BEGIN1 call"); | 472 EXPECT_FIND_("TRACE_EVENT_BEGIN1 call"); |
| 455 EXPECT_SUB_FIND_("name1"); | 473 EXPECT_SUB_FIND_("name1"); |
| 456 EXPECT_SUB_FIND_("value1"); | 474 EXPECT_SUB_FIND_("value1"); |
| 457 EXPECT_FIND_("TRACE_EVENT_BEGIN2 call"); | 475 EXPECT_FIND_("TRACE_EVENT_BEGIN2 call"); |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 648 std::string id; | 666 std::string id; |
| 649 EXPECT_TRUE((item && item->GetString("id", &id))); | 667 EXPECT_TRUE((item && item->GetString("id", &id))); |
| 650 EXPECT_EQ(kAsyncId + 1, atoi(id.c_str())); | 668 EXPECT_EQ(kAsyncId + 1, atoi(id.c_str())); |
| 651 } | 669 } |
| 652 } | 670 } |
| 653 | 671 |
| 654 void TraceManyInstantEvents(int thread_id, int num_events, | 672 void TraceManyInstantEvents(int thread_id, int num_events, |
| 655 WaitableEvent* task_complete_event) { | 673 WaitableEvent* task_complete_event) { |
| 656 for (int i = 0; i < num_events; i++) { | 674 for (int i = 0; i < num_events; i++) { |
| 657 TRACE_EVENT_INSTANT2("all", "multi thread event", | 675 TRACE_EVENT_INSTANT2("all", "multi thread event", |
| 676 TRACE_EVENT_SCOPE_THREAD, |
| 658 "thread", thread_id, | 677 "thread", thread_id, |
| 659 "event", i); | 678 "event", i); |
| 660 } | 679 } |
| 661 | 680 |
| 662 if (task_complete_event) | 681 if (task_complete_event) |
| 663 task_complete_event->Signal(); | 682 task_complete_event->Signal(); |
| 664 } | 683 } |
| 665 | 684 |
| 666 void ValidateInstantEventPresentOnEveryThread(const ListValue& trace_parsed, | 685 void ValidateInstantEventPresentOnEveryThread(const ListValue& trace_parsed, |
| 667 int num_threads, | 686 int num_threads, |
| (...skipping 22 matching lines...) Expand all Loading... |
| 690 EXPECT_FALSE(results[-1][-1]); | 709 EXPECT_FALSE(results[-1][-1]); |
| 691 for (int thread = 0; thread < num_threads; thread++) { | 710 for (int thread = 0; thread < num_threads; thread++) { |
| 692 for (int event = 0; event < num_events; event++) { | 711 for (int event = 0; event < num_events; event++) { |
| 693 EXPECT_TRUE(results[thread][event]); | 712 EXPECT_TRUE(results[thread][event]); |
| 694 } | 713 } |
| 695 } | 714 } |
| 696 } | 715 } |
| 697 | 716 |
| 698 void TraceCallsWithCachedCategoryPointersPointers(const char* name_str) { | 717 void TraceCallsWithCachedCategoryPointersPointers(const char* name_str) { |
| 699 TRACE_EVENT0("category name1", name_str); | 718 TRACE_EVENT0("category name1", name_str); |
| 700 TRACE_EVENT_INSTANT0("category name2", name_str); | 719 TRACE_EVENT_INSTANT0("category name2", name_str, TRACE_EVENT_SCOPE_THREAD); |
| 701 TRACE_EVENT_BEGIN0("category name3", name_str); | 720 TRACE_EVENT_BEGIN0("category name3", name_str); |
| 702 TRACE_EVENT_END0("category name4", name_str); | 721 TRACE_EVENT_END0("category name4", name_str); |
| 703 } | 722 } |
| 704 | 723 |
| 705 } // namespace | 724 } // namespace |
| 706 | 725 |
| 707 void HighResSleepForTraceTest(base::TimeDelta elapsed) { | 726 void HighResSleepForTraceTest(base::TimeDelta elapsed) { |
| 708 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed; | 727 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed; |
| 709 do { | 728 do { |
| 710 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); | 729 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 804 // Cleanup. | 823 // Cleanup. |
| 805 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 824 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
| 806 } | 825 } |
| 807 | 826 |
| 808 // Test that categories work. | 827 // Test that categories work. |
| 809 TEST_F(TraceEventTestFixture, Categories) { | 828 TEST_F(TraceEventTestFixture, Categories) { |
| 810 ManualTestSetUp(); | 829 ManualTestSetUp(); |
| 811 | 830 |
| 812 // Test that categories that are used can be retrieved whether trace was | 831 // Test that categories that are used can be retrieved whether trace was |
| 813 // enabled or disabled when the trace event was encountered. | 832 // enabled or disabled when the trace event was encountered. |
| 814 TRACE_EVENT_INSTANT0("c1", "name"); | 833 TRACE_EVENT_INSTANT0("c1", "name", TRACE_EVENT_SCOPE_THREAD); |
| 815 TRACE_EVENT_INSTANT0("c2", "name"); | 834 TRACE_EVENT_INSTANT0("c2", "name", TRACE_EVENT_SCOPE_THREAD); |
| 816 BeginTrace(); | 835 BeginTrace(); |
| 817 TRACE_EVENT_INSTANT0("c3", "name"); | 836 TRACE_EVENT_INSTANT0("c3", "name", TRACE_EVENT_SCOPE_THREAD); |
| 818 TRACE_EVENT_INSTANT0("c4", "name"); | 837 TRACE_EVENT_INSTANT0("c4", "name", TRACE_EVENT_SCOPE_THREAD); |
| 819 EndTraceAndFlush(); | 838 EndTraceAndFlush(); |
| 820 std::vector<std::string> cats; | 839 std::vector<std::string> cats; |
| 821 TraceLog::GetInstance()->GetKnownCategories(&cats); | 840 TraceLog::GetInstance()->GetKnownCategories(&cats); |
| 822 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c1") != cats.end()); | 841 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c1") != cats.end()); |
| 823 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c2") != cats.end()); | 842 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c2") != cats.end()); |
| 824 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c3") != cats.end()); | 843 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c3") != cats.end()); |
| 825 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c4") != cats.end()); | 844 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c4") != cats.end()); |
| 826 | 845 |
| 827 const std::vector<std::string> empty_categories; | 846 const std::vector<std::string> empty_categories; |
| 828 std::vector<std::string> included_categories; | 847 std::vector<std::string> included_categories; |
| 829 std::vector<std::string> excluded_categories; | 848 std::vector<std::string> excluded_categories; |
| 830 | 849 |
| 831 // Test that category filtering works. | 850 // Test that category filtering works. |
| 832 | 851 |
| 833 // Include nonexistent category -> no events | 852 // Include nonexistent category -> no events |
| 834 Clear(); | 853 Clear(); |
| 835 included_categories.clear(); | 854 included_categories.clear(); |
| 836 included_categories.push_back("not_found823564786"); | 855 included_categories.push_back("not_found823564786"); |
| 837 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories); | 856 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories); |
| 838 TRACE_EVENT_INSTANT0("cat1", "name"); | 857 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD); |
| 839 TRACE_EVENT_INSTANT0("cat2", "name"); | 858 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD); |
| 840 EndTraceAndFlush(); | 859 EndTraceAndFlush(); |
| 841 EXPECT_TRUE(trace_parsed_.empty()); | 860 EXPECT_TRUE(trace_parsed_.empty()); |
| 842 | 861 |
| 843 // Include existent category -> only events of that category | 862 // Include existent category -> only events of that category |
| 844 Clear(); | 863 Clear(); |
| 845 included_categories.clear(); | 864 included_categories.clear(); |
| 846 included_categories.push_back("inc"); | 865 included_categories.push_back("inc"); |
| 847 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories); | 866 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories); |
| 848 TRACE_EVENT_INSTANT0("inc", "name"); | 867 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD); |
| 849 TRACE_EVENT_INSTANT0("inc2", "name"); | 868 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD); |
| 850 EndTraceAndFlush(); | 869 EndTraceAndFlush(); |
| 851 EXPECT_TRUE(FindMatchingValue("cat", "inc")); | 870 EXPECT_TRUE(FindMatchingValue("cat", "inc")); |
| 852 EXPECT_FALSE(FindNonMatchingValue("cat", "inc")); | 871 EXPECT_FALSE(FindNonMatchingValue("cat", "inc")); |
| 853 | 872 |
| 854 // Include existent wildcard -> all categories matching wildcard | 873 // Include existent wildcard -> all categories matching wildcard |
| 855 Clear(); | 874 Clear(); |
| 856 included_categories.clear(); | 875 included_categories.clear(); |
| 857 included_categories.push_back("inc_wildcard_*"); | 876 included_categories.push_back("inc_wildcard_*"); |
| 858 included_categories.push_back("inc_wildchar_?_end"); | 877 included_categories.push_back("inc_wildchar_?_end"); |
| 859 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories); | 878 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories); |
| 860 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included"); | 879 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included", |
| 861 TRACE_EVENT_INSTANT0("inc_wildcard_", "included"); | 880 TRACE_EVENT_SCOPE_THREAD); |
| 862 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included"); | 881 TRACE_EVENT_INSTANT0("inc_wildcard_", "included", TRACE_EVENT_SCOPE_THREAD); |
| 863 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc"); | 882 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included", |
| 864 TRACE_EVENT_INSTANT0("cat1", "not_inc"); | 883 TRACE_EVENT_SCOPE_THREAD); |
| 865 TRACE_EVENT_INSTANT0("cat2", "not_inc"); | 884 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc", |
| 885 TRACE_EVENT_SCOPE_THREAD); |
| 886 TRACE_EVENT_INSTANT0("cat1", "not_inc", TRACE_EVENT_SCOPE_THREAD); |
| 887 TRACE_EVENT_INSTANT0("cat2", "not_inc", TRACE_EVENT_SCOPE_THREAD); |
| 866 EndTraceAndFlush(); | 888 EndTraceAndFlush(); |
| 867 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc")); | 889 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc")); |
| 868 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_")); | 890 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_")); |
| 869 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end")); | 891 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end")); |
| 870 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); | 892 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); |
| 871 | 893 |
| 872 included_categories.clear(); | 894 included_categories.clear(); |
| 873 | 895 |
| 874 // Exclude nonexistent category -> all events | 896 // Exclude nonexistent category -> all events |
| 875 Clear(); | 897 Clear(); |
| 876 excluded_categories.clear(); | 898 excluded_categories.clear(); |
| 877 excluded_categories.push_back("not_found823564786"); | 899 excluded_categories.push_back("not_found823564786"); |
| 878 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories); | 900 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories); |
| 879 TRACE_EVENT_INSTANT0("cat1", "name"); | 901 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD); |
| 880 TRACE_EVENT_INSTANT0("cat2", "name"); | 902 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD); |
| 881 EndTraceAndFlush(); | 903 EndTraceAndFlush(); |
| 882 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); | 904 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); |
| 883 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); | 905 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); |
| 884 | 906 |
| 885 // Exclude existent category -> only events of other categories | 907 // Exclude existent category -> only events of other categories |
| 886 Clear(); | 908 Clear(); |
| 887 excluded_categories.clear(); | 909 excluded_categories.clear(); |
| 888 excluded_categories.push_back("inc"); | 910 excluded_categories.push_back("inc"); |
| 889 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories); | 911 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories); |
| 890 TRACE_EVENT_INSTANT0("inc", "name"); | 912 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD); |
| 891 TRACE_EVENT_INSTANT0("inc2", "name"); | 913 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD); |
| 892 EndTraceAndFlush(); | 914 EndTraceAndFlush(); |
| 893 EXPECT_TRUE(FindMatchingValue("cat", "inc2")); | 915 EXPECT_TRUE(FindMatchingValue("cat", "inc2")); |
| 894 EXPECT_FALSE(FindMatchingValue("cat", "inc")); | 916 EXPECT_FALSE(FindMatchingValue("cat", "inc")); |
| 895 | 917 |
| 896 // Exclude existent wildcard -> all categories not matching wildcard | 918 // Exclude existent wildcard -> all categories not matching wildcard |
| 897 Clear(); | 919 Clear(); |
| 898 excluded_categories.clear(); | 920 excluded_categories.clear(); |
| 899 excluded_categories.push_back("inc_wildcard_*"); | 921 excluded_categories.push_back("inc_wildcard_*"); |
| 900 excluded_categories.push_back("inc_wildchar_?_end"); | 922 excluded_categories.push_back("inc_wildchar_?_end"); |
| 901 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories); | 923 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories); |
| 902 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc"); | 924 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc", TRACE_EVENT_SCOPE_THREAD); |
| 903 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc"); | 925 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc", TRACE_EVENT_SCOPE_THREAD); |
| 904 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc"); | 926 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc", |
| 905 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included"); | 927 TRACE_EVENT_SCOPE_THREAD); |
| 906 TRACE_EVENT_INSTANT0("cat1", "included"); | 928 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included", |
| 907 TRACE_EVENT_INSTANT0("cat2", "included"); | 929 TRACE_EVENT_SCOPE_THREAD); |
| 930 TRACE_EVENT_INSTANT0("cat1", "included", TRACE_EVENT_SCOPE_THREAD); |
| 931 TRACE_EVENT_INSTANT0("cat2", "included", TRACE_EVENT_SCOPE_THREAD); |
| 908 EndTraceAndFlush(); | 932 EndTraceAndFlush(); |
| 909 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_bla_end")); | 933 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_bla_end")); |
| 910 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); | 934 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); |
| 911 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); | 935 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); |
| 912 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); | 936 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); |
| 913 } | 937 } |
| 914 | 938 |
| 915 | 939 |
| 916 // Test EVENT_WATCH_NOTIFICATION | 940 // Test EVENT_WATCH_NOTIFICATION |
| 917 TEST_F(TraceEventTestFixture, EventWatchNotification) { | 941 TEST_F(TraceEventTestFixture, EventWatchNotification) { |
| 918 ManualTestSetUp(); | 942 ManualTestSetUp(); |
| 919 | 943 |
| 920 // Basic one occurrence. | 944 // Basic one occurrence. |
| 921 BeginTrace(); | 945 BeginTrace(); |
| 922 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 946 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
| 923 TRACE_EVENT_INSTANT0("cat", "event"); | 947 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD); |
| 924 EndTraceAndFlush(); | 948 EndTraceAndFlush(); |
| 925 EXPECT_EQ(event_watch_notification_, 1); | 949 EXPECT_EQ(event_watch_notification_, 1); |
| 926 | 950 |
| 927 // Basic one occurrence before Set. | 951 // Basic one occurrence before Set. |
| 928 BeginTrace(); | 952 BeginTrace(); |
| 929 TRACE_EVENT_INSTANT0("cat", "event"); | 953 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD); |
| 930 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 954 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
| 931 EndTraceAndFlush(); | 955 EndTraceAndFlush(); |
| 932 EXPECT_EQ(event_watch_notification_, 1); | 956 EXPECT_EQ(event_watch_notification_, 1); |
| 933 | 957 |
| 934 // Auto-reset after end trace. | 958 // Auto-reset after end trace. |
| 935 BeginTrace(); | 959 BeginTrace(); |
| 936 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 960 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
| 937 EndTraceAndFlush(); | 961 EndTraceAndFlush(); |
| 938 BeginTrace(); | 962 BeginTrace(); |
| 939 TRACE_EVENT_INSTANT0("cat", "event"); | 963 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD); |
| 940 EndTraceAndFlush(); | 964 EndTraceAndFlush(); |
| 941 EXPECT_EQ(event_watch_notification_, 0); | 965 EXPECT_EQ(event_watch_notification_, 0); |
| 942 | 966 |
| 943 // Multiple occurrence. | 967 // Multiple occurrence. |
| 944 BeginTrace(); | 968 BeginTrace(); |
| 945 int num_occurrences = 5; | 969 int num_occurrences = 5; |
| 946 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 970 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
| 947 for (int i = 0; i < num_occurrences; ++i) | 971 for (int i = 0; i < num_occurrences; ++i) |
| 948 TRACE_EVENT_INSTANT0("cat", "event"); | 972 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD); |
| 949 EndTraceAndFlush(); | 973 EndTraceAndFlush(); |
| 950 EXPECT_EQ(event_watch_notification_, num_occurrences); | 974 EXPECT_EQ(event_watch_notification_, num_occurrences); |
| 951 | 975 |
| 952 // Wrong category. | 976 // Wrong category. |
| 953 BeginTrace(); | 977 BeginTrace(); |
| 954 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 978 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
| 955 TRACE_EVENT_INSTANT0("wrong_cat", "event"); | 979 TRACE_EVENT_INSTANT0("wrong_cat", "event", TRACE_EVENT_SCOPE_THREAD); |
| 956 EndTraceAndFlush(); | 980 EndTraceAndFlush(); |
| 957 EXPECT_EQ(event_watch_notification_, 0); | 981 EXPECT_EQ(event_watch_notification_, 0); |
| 958 | 982 |
| 959 // Wrong name. | 983 // Wrong name. |
| 960 BeginTrace(); | 984 BeginTrace(); |
| 961 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 985 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
| 962 TRACE_EVENT_INSTANT0("cat", "wrong_event"); | 986 TRACE_EVENT_INSTANT0("cat", "wrong_event", TRACE_EVENT_SCOPE_THREAD); |
| 963 EndTraceAndFlush(); | 987 EndTraceAndFlush(); |
| 964 EXPECT_EQ(event_watch_notification_, 0); | 988 EXPECT_EQ(event_watch_notification_, 0); |
| 965 | 989 |
| 966 // Canceled. | 990 // Canceled. |
| 967 BeginTrace(); | 991 BeginTrace(); |
| 968 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 992 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
| 969 TraceLog::GetInstance()->CancelWatchEvent(); | 993 TraceLog::GetInstance()->CancelWatchEvent(); |
| 970 TRACE_EVENT_INSTANT0("cat", "event"); | 994 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD); |
| 971 EndTraceAndFlush(); | 995 EndTraceAndFlush(); |
| 972 EXPECT_EQ(event_watch_notification_, 0); | 996 EXPECT_EQ(event_watch_notification_, 0); |
| 973 } | 997 } |
| 974 | 998 |
| 975 // Test ASYNC_BEGIN/END events | 999 // Test ASYNC_BEGIN/END events |
| 976 TEST_F(TraceEventTestFixture, AsyncBeginEndEvents) { | 1000 TEST_F(TraceEventTestFixture, AsyncBeginEndEvents) { |
| 977 ManualTestSetUp(); | 1001 ManualTestSetUp(); |
| 978 BeginTrace(); | 1002 BeginTrace(); |
| 979 | 1003 |
| 980 unsigned long long id = 0xfeedbeeffeedbeefull; | 1004 unsigned long long id = 0xfeedbeeffeedbeefull; |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1215 } | 1239 } |
| 1216 } | 1240 } |
| 1217 } | 1241 } |
| 1218 | 1242 |
| 1219 TEST_F(TraceEventTestFixture, ThreadNameChanges) { | 1243 TEST_F(TraceEventTestFixture, ThreadNameChanges) { |
| 1220 ManualTestSetUp(); | 1244 ManualTestSetUp(); |
| 1221 | 1245 |
| 1222 BeginTrace(); | 1246 BeginTrace(); |
| 1223 | 1247 |
| 1224 PlatformThread::SetName(""); | 1248 PlatformThread::SetName(""); |
| 1225 TRACE_EVENT_INSTANT0("drink", "water"); | 1249 TRACE_EVENT_INSTANT0("drink", "water", TRACE_EVENT_SCOPE_THREAD); |
| 1226 | 1250 |
| 1227 PlatformThread::SetName("cafe"); | 1251 PlatformThread::SetName("cafe"); |
| 1228 TRACE_EVENT_INSTANT0("drink", "coffee"); | 1252 TRACE_EVENT_INSTANT0("drink", "coffee", TRACE_EVENT_SCOPE_THREAD); |
| 1229 | 1253 |
| 1230 PlatformThread::SetName("shop"); | 1254 PlatformThread::SetName("shop"); |
| 1231 // No event here, so won't appear in combined name. | 1255 // No event here, so won't appear in combined name. |
| 1232 | 1256 |
| 1233 PlatformThread::SetName("pub"); | 1257 PlatformThread::SetName("pub"); |
| 1234 TRACE_EVENT_INSTANT0("drink", "beer"); | 1258 TRACE_EVENT_INSTANT0("drink", "beer", TRACE_EVENT_SCOPE_THREAD); |
| 1235 TRACE_EVENT_INSTANT0("drink", "wine"); | 1259 TRACE_EVENT_INSTANT0("drink", "wine", TRACE_EVENT_SCOPE_THREAD); |
| 1236 | 1260 |
| 1237 PlatformThread::SetName(" bar"); | 1261 PlatformThread::SetName(" bar"); |
| 1238 TRACE_EVENT_INSTANT0("drink", "whisky"); | 1262 TRACE_EVENT_INSTANT0("drink", "whisky", TRACE_EVENT_SCOPE_THREAD); |
| 1239 | 1263 |
| 1240 EndTraceAndFlush(); | 1264 EndTraceAndFlush(); |
| 1241 | 1265 |
| 1242 std::vector<const DictionaryValue*> items = | 1266 std::vector<const DictionaryValue*> items = |
| 1243 FindTraceEntries(trace_parsed_, "thread_name"); | 1267 FindTraceEntries(trace_parsed_, "thread_name"); |
| 1244 EXPECT_EQ(1u, items.size()); | 1268 EXPECT_EQ(1u, items.size()); |
| 1245 ASSERT_GT(items.size(), 0u); | 1269 ASSERT_GT(items.size(), 0u); |
| 1246 const DictionaryValue* item = items[0]; | 1270 const DictionaryValue* item = items[0]; |
| 1247 ASSERT_TRUE(item); | 1271 ASSERT_TRUE(item); |
| 1248 int tid; | 1272 int tid; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1267 // recorded after the system is started again. | 1291 // recorded after the system is started again. |
| 1268 for (int i = 0; i < 4; i++) { | 1292 for (int i = 0; i < 4; i++) { |
| 1269 // Scope to contain the then destroy the TraceLog singleton. | 1293 // Scope to contain the then destroy the TraceLog singleton. |
| 1270 { | 1294 { |
| 1271 base::ShadowingAtExitManager exit_manager_will_destroy_singletons; | 1295 base::ShadowingAtExitManager exit_manager_will_destroy_singletons; |
| 1272 | 1296 |
| 1273 // Setup TraceLog singleton inside this test's exit manager scope | 1297 // Setup TraceLog singleton inside this test's exit manager scope |
| 1274 // so that it will be destroyed when this scope closes. | 1298 // so that it will be destroyed when this scope closes. |
| 1275 ManualTestSetUp(); | 1299 ManualTestSetUp(); |
| 1276 | 1300 |
| 1277 TRACE_EVENT_INSTANT0("all", "not recorded; system not enabled"); | 1301 TRACE_EVENT_INSTANT0("all", "not recorded; system not enabled", |
| 1302 TRACE_EVENT_SCOPE_THREAD); |
| 1278 | 1303 |
| 1279 BeginTrace(); | 1304 BeginTrace(); |
| 1280 | 1305 |
| 1281 TRACE_EVENT_INSTANT0("all", "is recorded 1; system has been enabled"); | 1306 TRACE_EVENT_INSTANT0("all", "is recorded 1; system has been enabled", |
| 1307 TRACE_EVENT_SCOPE_THREAD); |
| 1282 // Trace calls that will cache pointers to categories; they're valid here | 1308 // Trace calls that will cache pointers to categories; they're valid here |
| 1283 TraceCallsWithCachedCategoryPointersPointers( | 1309 TraceCallsWithCachedCategoryPointersPointers( |
| 1284 "is recorded 2; system has been enabled"); | 1310 "is recorded 2; system has been enabled"); |
| 1285 | 1311 |
| 1286 EndTraceAndFlush(); | 1312 EndTraceAndFlush(); |
| 1287 } // scope to destroy singleton | 1313 } // scope to destroy singleton |
| 1288 ASSERT_FALSE(TraceLog::GetInstance()); | 1314 ASSERT_FALSE(TraceLog::GetInstance()); |
| 1289 | 1315 |
| 1290 // Now that singleton is destroyed, check what trace events were recorded | 1316 // Now that singleton is destroyed, check what trace events were recorded |
| 1291 const DictionaryValue* item = NULL; | 1317 const DictionaryValue* item = NULL; |
| 1292 ListValue& trace_parsed = trace_parsed_; | 1318 ListValue& trace_parsed = trace_parsed_; |
| 1293 EXPECT_FIND_("is recorded 1"); | 1319 EXPECT_FIND_("is recorded 1"); |
| 1294 EXPECT_FIND_("is recorded 2"); | 1320 EXPECT_FIND_("is recorded 2"); |
| 1295 EXPECT_NOT_FIND_("not recorded"); | 1321 EXPECT_NOT_FIND_("not recorded"); |
| 1296 | 1322 |
| 1297 // Make additional trace event calls on the shutdown system. They should | 1323 // Make additional trace event calls on the shutdown system. They should |
| 1298 // all pass cleanly, but the data not be recorded. We'll verify that next | 1324 // all pass cleanly, but the data not be recorded. We'll verify that next |
| 1299 // time around the loop (the only way to flush the trace buffers). | 1325 // time around the loop (the only way to flush the trace buffers). |
| 1300 TRACE_EVENT_BEGIN_ETW("not recorded; system shutdown", 0, NULL); | 1326 TRACE_EVENT_BEGIN_ETW("not recorded; system shutdown", 0, NULL); |
| 1301 TRACE_EVENT_END_ETW("not recorded; system shutdown", 0, NULL); | 1327 TRACE_EVENT_END_ETW("not recorded; system shutdown", 0, NULL); |
| 1302 TRACE_EVENT_INSTANT_ETW("not recorded; system shutdown", 0, NULL); | 1328 TRACE_EVENT_INSTANT_ETW("not recorded; system shutdown", 0, NULL); |
| 1303 TRACE_EVENT0("all", "not recorded; system shutdown"); | 1329 TRACE_EVENT0("all", "not recorded; system shutdown"); |
| 1304 TRACE_EVENT_INSTANT0("all", "not recorded; system shutdown"); | 1330 TRACE_EVENT_INSTANT0("all", "not recorded; system shutdown", |
| 1331 TRACE_EVENT_SCOPE_THREAD); |
| 1305 TRACE_EVENT_BEGIN0("all", "not recorded; system shutdown"); | 1332 TRACE_EVENT_BEGIN0("all", "not recorded; system shutdown"); |
| 1306 TRACE_EVENT_END0("all", "not recorded; system shutdown"); | 1333 TRACE_EVENT_END0("all", "not recorded; system shutdown"); |
| 1307 | 1334 |
| 1308 TRACE_EVENT0("new category 0!", "not recorded; system shutdown"); | 1335 TRACE_EVENT0("new category 0!", "not recorded; system shutdown"); |
| 1309 TRACE_EVENT_INSTANT0("new category 1!", "not recorded; system shutdown"); | 1336 TRACE_EVENT_INSTANT0("new category 1!", "not recorded; system shutdown", |
| 1337 TRACE_EVENT_SCOPE_THREAD); |
| 1310 TRACE_EVENT_BEGIN0("new category 2!", "not recorded; system shutdown"); | 1338 TRACE_EVENT_BEGIN0("new category 2!", "not recorded; system shutdown"); |
| 1311 TRACE_EVENT_END0("new category 3!", "not recorded; system shutdown"); | 1339 TRACE_EVENT_END0("new category 3!", "not recorded; system shutdown"); |
| 1312 | 1340 |
| 1313 // Cached categories should be safe to check, and still disable traces | 1341 // Cached categories should be safe to check, and still disable traces |
| 1314 TraceCallsWithCachedCategoryPointersPointers( | 1342 TraceCallsWithCachedCategoryPointersPointers( |
| 1315 "not recorded; system shutdown"); | 1343 "not recorded; system shutdown"); |
| 1316 } | 1344 } |
| 1317 } | 1345 } |
| 1318 | 1346 |
| 1319 TEST_F(TraceEventTestFixture, NormallyNoDeepCopy) { | 1347 TEST_F(TraceEventTestFixture, NormallyNoDeepCopy) { |
| 1320 // Test that the TRACE_EVENT macros do not deep-copy their string. If they | 1348 // Test that the TRACE_EVENT macros do not deep-copy their string. If they |
| 1321 // do so it may indicate a performance regression, but more-over it would | 1349 // do so it may indicate a performance regression, but more-over it would |
| 1322 // make the DEEP_COPY overloads redundant. | 1350 // make the DEEP_COPY overloads redundant. |
| 1323 ManualTestSetUp(); | 1351 ManualTestSetUp(); |
| 1324 | 1352 |
| 1325 std::string name_string("event name"); | 1353 std::string name_string("event name"); |
| 1326 | 1354 |
| 1327 BeginTrace(); | 1355 BeginTrace(); |
| 1328 TRACE_EVENT_INSTANT0("category", name_string.c_str()); | 1356 TRACE_EVENT_INSTANT0("category", name_string.c_str(), |
| 1357 TRACE_EVENT_SCOPE_THREAD); |
| 1329 | 1358 |
| 1330 // Modify the string in place (a wholesale reassignment may leave the old | 1359 // Modify the string in place (a wholesale reassignment may leave the old |
| 1331 // string intact on the heap). | 1360 // string intact on the heap). |
| 1332 name_string[0] = '@'; | 1361 name_string[0] = '@'; |
| 1333 | 1362 |
| 1334 EndTraceAndFlush(); | 1363 EndTraceAndFlush(); |
| 1335 | 1364 |
| 1336 EXPECT_FALSE(FindTraceEntry(trace_parsed_, "event name")); | 1365 EXPECT_FALSE(FindTraceEntry(trace_parsed_, "event name")); |
| 1337 EXPECT_TRUE(FindTraceEntry(trace_parsed_, name_string.c_str())); | 1366 EXPECT_TRUE(FindTraceEntry(trace_parsed_, name_string.c_str())); |
| 1338 } | 1367 } |
| 1339 | 1368 |
| 1340 TEST_F(TraceEventTestFixture, DeepCopy) { | 1369 TEST_F(TraceEventTestFixture, DeepCopy) { |
| 1341 ManualTestSetUp(); | 1370 ManualTestSetUp(); |
| 1342 | 1371 |
| 1343 static const char kOriginalName1[] = "name1"; | 1372 static const char kOriginalName1[] = "name1"; |
| 1344 static const char kOriginalName2[] = "name2"; | 1373 static const char kOriginalName2[] = "name2"; |
| 1345 static const char kOriginalName3[] = "name3"; | 1374 static const char kOriginalName3[] = "name3"; |
| 1346 std::string name1(kOriginalName1); | 1375 std::string name1(kOriginalName1); |
| 1347 std::string name2(kOriginalName2); | 1376 std::string name2(kOriginalName2); |
| 1348 std::string name3(kOriginalName3); | 1377 std::string name3(kOriginalName3); |
| 1349 std::string arg1("arg1"); | 1378 std::string arg1("arg1"); |
| 1350 std::string arg2("arg2"); | 1379 std::string arg2("arg2"); |
| 1351 std::string val1("val1"); | 1380 std::string val1("val1"); |
| 1352 std::string val2("val2"); | 1381 std::string val2("val2"); |
| 1353 | 1382 |
| 1354 BeginTrace(); | 1383 BeginTrace(); |
| 1355 TRACE_EVENT_COPY_INSTANT0("category", name1.c_str()); | 1384 TRACE_EVENT_COPY_INSTANT0("category", name1.c_str(), |
| 1385 TRACE_EVENT_SCOPE_THREAD); |
| 1356 TRACE_EVENT_COPY_BEGIN1("category", name2.c_str(), | 1386 TRACE_EVENT_COPY_BEGIN1("category", name2.c_str(), |
| 1357 arg1.c_str(), 5); | 1387 arg1.c_str(), 5); |
| 1358 TRACE_EVENT_COPY_END2("category", name3.c_str(), | 1388 TRACE_EVENT_COPY_END2("category", name3.c_str(), |
| 1359 arg1.c_str(), val1, | 1389 arg1.c_str(), val1, |
| 1360 arg2.c_str(), val2); | 1390 arg2.c_str(), val2); |
| 1361 | 1391 |
| 1362 // As per NormallyNoDeepCopy, modify the strings in place. | 1392 // As per NormallyNoDeepCopy, modify the strings in place. |
| 1363 name1[0] = name2[0] = name3[0] = arg1[0] = arg2[0] = val1[0] = val2[0] = '@'; | 1393 name1[0] = name2[0] = name3[0] = arg1[0] = arg2[0] = val1[0] = val2[0] = '@'; |
| 1364 | 1394 |
| 1365 EndTraceAndFlush(); | 1395 EndTraceAndFlush(); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1409 EXPECT_STREQ(json_output_.json_output.c_str(), "[bla1,bla2,bla3,bla4]"); | 1439 EXPECT_STREQ(json_output_.json_output.c_str(), "[bla1,bla2,bla3,bla4]"); |
| 1410 } | 1440 } |
| 1411 | 1441 |
| 1412 // Test that trace_event parameters are not evaluated if the tracing | 1442 // Test that trace_event parameters are not evaluated if the tracing |
| 1413 // system is disabled. | 1443 // system is disabled. |
| 1414 TEST_F(TraceEventTestFixture, TracingIsLazy) { | 1444 TEST_F(TraceEventTestFixture, TracingIsLazy) { |
| 1415 ManualTestSetUp(); | 1445 ManualTestSetUp(); |
| 1416 BeginTrace(); | 1446 BeginTrace(); |
| 1417 | 1447 |
| 1418 int a = 0; | 1448 int a = 0; |
| 1419 TRACE_EVENT_INSTANT1("category", "test", "a", a++); | 1449 TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++); |
| 1420 EXPECT_EQ(1, a); | 1450 EXPECT_EQ(1, a); |
| 1421 | 1451 |
| 1422 TraceLog::GetInstance()->SetDisabled(); | 1452 TraceLog::GetInstance()->SetDisabled(); |
| 1423 | 1453 |
| 1424 TRACE_EVENT_INSTANT1("category", "test", "a", a++); | 1454 TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++); |
| 1425 EXPECT_EQ(1, a); | 1455 EXPECT_EQ(1, a); |
| 1426 | 1456 |
| 1427 EndTraceAndFlush(); | 1457 EndTraceAndFlush(); |
| 1428 } | 1458 } |
| 1429 | 1459 |
| 1430 TEST_F(TraceEventTestFixture, TraceEnableDisable) { | 1460 TEST_F(TraceEventTestFixture, TraceEnableDisable) { |
| 1431 ManualTestSetUp(); | 1461 ManualTestSetUp(); |
| 1432 | 1462 |
| 1433 TraceLog* trace_log = TraceLog::GetInstance(); | 1463 TraceLog* trace_log = TraceLog::GetInstance(); |
| 1434 trace_log->SetEnabled(std::string()); | 1464 trace_log->SetEnabled(std::string()); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1473 trace_log->SetEnabled(std::string("moo")); | 1503 trace_log->SetEnabled(std::string("moo")); |
| 1474 EXPECT_TRUE(*trace_log->GetCategoryEnabled("baz")); | 1504 EXPECT_TRUE(*trace_log->GetCategoryEnabled("baz")); |
| 1475 EXPECT_TRUE(*trace_log->GetCategoryEnabled("moo")); | 1505 EXPECT_TRUE(*trace_log->GetCategoryEnabled("moo")); |
| 1476 EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo")); | 1506 EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo")); |
| 1477 trace_log->SetDisabled(); | 1507 trace_log->SetDisabled(); |
| 1478 trace_log->SetDisabled(); | 1508 trace_log->SetDisabled(); |
| 1479 } | 1509 } |
| 1480 | 1510 |
| 1481 } // namespace debug | 1511 } // namespace debug |
| 1482 } // namespace base | 1512 } // namespace base |
| OLD | NEW |