| 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 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 const char* value); | 66 const char* value); |
| 67 bool FindNonMatchingValue(const char* key, | 67 bool FindNonMatchingValue(const char* key, |
| 68 const char* value); | 68 const char* value); |
| 69 void Clear() { | 69 void Clear() { |
| 70 trace_parsed_.Clear(); | 70 trace_parsed_.Clear(); |
| 71 json_output_.json_output.clear(); | 71 json_output_.json_output.clear(); |
| 72 } | 72 } |
| 73 | 73 |
| 74 void BeginTrace() { | 74 void BeginTrace() { |
| 75 event_watch_notification_ = 0; | 75 event_watch_notification_ = 0; |
| 76 TraceLog::GetInstance()->SetEnabled("*"); | 76 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*")); |
| 77 } | 77 } |
| 78 | 78 |
| 79 void EndTraceAndFlush() { | 79 void EndTraceAndFlush() { |
| 80 while (TraceLog::GetInstance()->IsEnabled()) | 80 while (TraceLog::GetInstance()->IsEnabled()) |
| 81 TraceLog::GetInstance()->SetDisabled(); | 81 TraceLog::GetInstance()->SetDisabled(); |
| 82 TraceLog::GetInstance()->Flush( | 82 TraceLog::GetInstance()->Flush( |
| 83 base::Bind(&TraceEventTestFixture::OnTraceDataCollected, | 83 base::Bind(&TraceEventTestFixture::OnTraceDataCollected, |
| 84 base::Unretained(this))); | 84 base::Unretained(this))); |
| 85 } | 85 } |
| 86 | 86 |
| (...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 707 void HighResSleepForTraceTest(base::TimeDelta elapsed) { | 707 void HighResSleepForTraceTest(base::TimeDelta elapsed) { |
| 708 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed; | 708 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed; |
| 709 do { | 709 do { |
| 710 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); | 710 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); |
| 711 } while (base::TimeTicks::HighResNow() < end_time); | 711 } while (base::TimeTicks::HighResNow() < end_time); |
| 712 } | 712 } |
| 713 | 713 |
| 714 // Simple Test for emitting data and validating it was received. | 714 // Simple Test for emitting data and validating it was received. |
| 715 TEST_F(TraceEventTestFixture, DataCaptured) { | 715 TEST_F(TraceEventTestFixture, DataCaptured) { |
| 716 ManualTestSetUp(); | 716 ManualTestSetUp(); |
| 717 TraceLog::GetInstance()->SetEnabled(true); | 717 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*")); |
| 718 | 718 |
| 719 TraceWithAllMacroVariants(NULL); | 719 TraceWithAllMacroVariants(NULL); |
| 720 | 720 |
| 721 EndTraceAndFlush(); | 721 EndTraceAndFlush(); |
| 722 | 722 |
| 723 ValidateAllTraceMacrosCreatedData(trace_parsed_); | 723 ValidateAllTraceMacrosCreatedData(trace_parsed_); |
| 724 } | 724 } |
| 725 | 725 |
| 726 class MockEnabledStateChangedObserver : | 726 class MockEnabledStateChangedObserver : |
| 727 public base::debug::TraceLog::EnabledStateChangedObserver { | 727 public base::debug::TraceLog::EnabledStateChangedObserver { |
| 728 public: | 728 public: |
| 729 MOCK_METHOD0(OnTraceLogWillEnable, void()); | 729 MOCK_METHOD0(OnTraceLogWillEnable, void()); |
| 730 MOCK_METHOD0(OnTraceLogWillDisable, void()); | 730 MOCK_METHOD0(OnTraceLogWillDisable, void()); |
| 731 }; | 731 }; |
| 732 | 732 |
| 733 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) { | 733 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) { |
| 734 ManualTestSetUp(); | 734 ManualTestSetUp(); |
| 735 | 735 |
| 736 MockEnabledStateChangedObserver observer; | 736 MockEnabledStateChangedObserver observer; |
| 737 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 737 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
| 738 | 738 |
| 739 EXPECT_CALL(observer, OnTraceLogWillEnable()) | 739 EXPECT_CALL(observer, OnTraceLogWillEnable()) |
| 740 .Times(1); | 740 .Times(1); |
| 741 TraceLog::GetInstance()->SetEnabled(true); | 741 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*")); |
| 742 testing::Mock::VerifyAndClear(&observer); | 742 testing::Mock::VerifyAndClear(&observer); |
| 743 | 743 |
| 744 // Cleanup. | 744 // Cleanup. |
| 745 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 745 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
| 746 TraceLog::GetInstance()->SetEnabled(false); | 746 TraceLog::GetInstance()->SetDisabled(); |
| 747 } | 747 } |
| 748 | 748 |
| 749 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) { | 749 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) { |
| 750 ManualTestSetUp(); | 750 ManualTestSetUp(); |
| 751 | 751 |
| 752 TraceLog::GetInstance()->SetEnabled(true); | 752 CategoryFilter cf_inc_all("*"); |
| 753 TraceLog::GetInstance()->SetEnabled(cf_inc_all); |
| 753 | 754 |
| 754 testing::StrictMock<MockEnabledStateChangedObserver> observer; | 755 testing::StrictMock<MockEnabledStateChangedObserver> observer; |
| 755 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 756 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
| 756 | 757 |
| 757 EXPECT_CALL(observer, OnTraceLogWillEnable()) | 758 EXPECT_CALL(observer, OnTraceLogWillEnable()) |
| 758 .Times(0); | 759 .Times(0); |
| 759 EXPECT_CALL(observer, OnTraceLogWillDisable()) | 760 EXPECT_CALL(observer, OnTraceLogWillDisable()) |
| 760 .Times(0); | 761 .Times(0); |
| 761 TraceLog::GetInstance()->SetEnabled(true); | 762 TraceLog::GetInstance()->SetEnabled(cf_inc_all); |
| 762 testing::Mock::VerifyAndClear(&observer); | 763 testing::Mock::VerifyAndClear(&observer); |
| 763 | 764 |
| 764 // Cleanup. | 765 // Cleanup. |
| 765 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 766 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
| 766 TraceLog::GetInstance()->SetEnabled(false); | 767 TraceLog::GetInstance()->SetDisabled(); |
| 767 TraceLog::GetInstance()->SetEnabled(false); | 768 TraceLog::GetInstance()->SetDisabled(); |
| 768 } | 769 } |
| 769 | 770 |
| 770 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnNestedDisable) { | 771 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnNestedDisable) { |
| 771 ManualTestSetUp(); | 772 ManualTestSetUp(); |
| 772 | 773 |
| 773 TraceLog::GetInstance()->SetEnabled(true); | 774 CategoryFilter cf_inc_all("*"); |
| 774 TraceLog::GetInstance()->SetEnabled(true); | 775 TraceLog::GetInstance()->SetEnabled(cf_inc_all); |
| 776 TraceLog::GetInstance()->SetEnabled(cf_inc_all); |
| 775 | 777 |
| 776 testing::StrictMock<MockEnabledStateChangedObserver> observer; | 778 testing::StrictMock<MockEnabledStateChangedObserver> observer; |
| 777 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 779 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
| 778 | 780 |
| 779 EXPECT_CALL(observer, OnTraceLogWillEnable()) | 781 EXPECT_CALL(observer, OnTraceLogWillEnable()) |
| 780 .Times(0); | 782 .Times(0); |
| 781 EXPECT_CALL(observer, OnTraceLogWillDisable()) | 783 EXPECT_CALL(observer, OnTraceLogWillDisable()) |
| 782 .Times(0); | 784 .Times(0); |
| 783 TraceLog::GetInstance()->SetEnabled(false); | 785 TraceLog::GetInstance()->SetDisabled(); |
| 784 testing::Mock::VerifyAndClear(&observer); | 786 testing::Mock::VerifyAndClear(&observer); |
| 785 | 787 |
| 786 // Cleanup. | 788 // Cleanup. |
| 787 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 789 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
| 788 TraceLog::GetInstance()->SetEnabled(false); | 790 TraceLog::GetInstance()->SetDisabled(); |
| 789 } | 791 } |
| 790 | 792 |
| 791 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) { | 793 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) { |
| 792 ManualTestSetUp(); | 794 ManualTestSetUp(); |
| 793 | 795 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*")); |
| 794 TraceLog::GetInstance()->SetEnabled(true); | |
| 795 | 796 |
| 796 MockEnabledStateChangedObserver observer; | 797 MockEnabledStateChangedObserver observer; |
| 797 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 798 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
| 798 | 799 |
| 799 EXPECT_CALL(observer, OnTraceLogWillDisable()) | 800 EXPECT_CALL(observer, OnTraceLogWillDisable()) |
| 800 .Times(1); | 801 .Times(1); |
| 801 TraceLog::GetInstance()->SetEnabled(false); | 802 TraceLog::GetInstance()->SetDisabled(); |
| 802 testing::Mock::VerifyAndClear(&observer); | 803 testing::Mock::VerifyAndClear(&observer); |
| 803 | 804 |
| 804 // Cleanup. | 805 // Cleanup. |
| 805 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 806 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
| 806 } | 807 } |
| 807 | 808 |
| 809 // Test the category filter. |
| 810 TEST_F(TraceEventTestFixture, CategoryFilter) { |
| 811 ManualTestSetUp(); |
| 812 |
| 813 // Using the default filter. |
| 814 CategoryFilter default_cf = CategoryFilter(); |
| 815 scoped_refptr<base::RefCountedString> cf_str_ptr = |
| 816 new base::RefCountedString(); |
| 817 default_cf.ToString(&(cf_str_ptr->data())); |
| 818 EXPECT_STREQ("-*Debug,-*Test,", cf_str_ptr->data().c_str()); |
| 819 EXPECT_TRUE(default_cf.IsCategoryGroupEnabled("not-excluded-category")); |
| 820 EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("Category1,CategoryDebug")); |
| 821 EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("CategoryDebug,Category1")); |
| 822 EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("CategoryTest,Category2")); |
| 823 |
| 824 // Using an arbitrary non-empty filter. |
| 825 CategoryFilter cf("included,-excluded,inc_pattern*,-exc_pattern*"); |
| 826 cf_str_ptr = new base::RefCountedString(); |
| 827 cf.ToString(&(cf_str_ptr->data())); |
| 828 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*,", |
| 829 cf_str_ptr->data().c_str()); |
| 830 EXPECT_TRUE(cf.IsCategoryGroupEnabled("included")); |
| 831 EXPECT_TRUE(cf.IsCategoryGroupEnabled("inc_pattern_category")); |
| 832 EXPECT_FALSE(cf.IsCategoryGroupEnabled("exc_pattern_category")); |
| 833 EXPECT_FALSE(cf.IsCategoryGroupEnabled("excluded")); |
| 834 EXPECT_FALSE(cf.IsCategoryGroupEnabled("not-excluded-nor-included")); |
| 835 EXPECT_FALSE(cf.IsCategoryGroupEnabled("Category1,CategoryDebug")); |
| 836 EXPECT_FALSE(cf.IsCategoryGroupEnabled("CategoryDebug,Category1")); |
| 837 EXPECT_FALSE(cf.IsCategoryGroupEnabled("CategoryTest,Category2")); |
| 838 |
| 839 cf.Merge(default_cf); |
| 840 cf_str_ptr = new base::RefCountedString(); |
| 841 cf.ToString(&(cf_str_ptr->data())); |
| 842 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*,-*Debug,-*Test,", |
| 843 cf_str_ptr->data().c_str()); |
| 844 cf.Clear(); |
| 845 EXPECT_FALSE(cf.HasIncludedCategories()); |
| 846 |
| 847 CategoryFilter reconstructed_cf(cf_str_ptr->data()); |
| 848 cf_str_ptr = new base::RefCountedString(); |
| 849 reconstructed_cf.ToString(&(cf_str_ptr->data())); |
| 850 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*,-*Debug,-*Test,", |
| 851 cf_str_ptr->data().c_str()); |
| 852 } |
| 853 |
| 808 // Test that categories work. | 854 // Test that categories work. |
| 809 TEST_F(TraceEventTestFixture, Categories) { | 855 TEST_F(TraceEventTestFixture, Categories) { |
| 810 ManualTestSetUp(); | 856 ManualTestSetUp(); |
| 811 | 857 |
| 812 // Test that categories that are used can be retrieved whether trace was | 858 // Test that categories that are used can be retrieved whether trace was |
| 813 // enabled or disabled when the trace event was encountered. | 859 // enabled or disabled when the trace event was encountered. |
| 814 TRACE_EVENT_INSTANT0("c1", "name"); | 860 TRACE_EVENT_INSTANT0("c1", "name"); |
| 815 TRACE_EVENT_INSTANT0("c2", "name"); | 861 TRACE_EVENT_INSTANT0("c2", "name"); |
| 816 BeginTrace(); | 862 BeginTrace(); |
| 817 TRACE_EVENT_INSTANT0("c3", "name"); | 863 TRACE_EVENT_INSTANT0("c3", "name"); |
| 818 TRACE_EVENT_INSTANT0("c4", "name"); | 864 TRACE_EVENT_INSTANT0("c4", "name"); |
| 865 //Category groups containing more than one category. |
| 866 TRACE_EVENT_INSTANT0("c5,c6", "name"); |
| 867 TRACE_EVENT_INSTANT0("c7,c8", "name"); |
| 819 EndTraceAndFlush(); | 868 EndTraceAndFlush(); |
| 820 std::vector<std::string> cats; | 869 std::vector<std::string> cat_groups; |
| 821 TraceLog::GetInstance()->GetKnownCategories(&cats); | 870 TraceLog::GetInstance()->GetKnownCategoryGroups(&cat_groups); |
| 822 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c1") != cats.end()); | 871 EXPECT_TRUE(std::find(cat_groups.begin(), |
| 823 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c2") != cats.end()); | 872 cat_groups.end(), "c1") != cat_groups.end()); |
| 824 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c3") != cats.end()); | 873 EXPECT_TRUE(std::find(cat_groups.begin(), |
| 825 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c4") != cats.end()); | 874 cat_groups.end(), "c2") != cat_groups.end()); |
| 826 | 875 EXPECT_TRUE(std::find(cat_groups.begin(), |
| 827 const std::vector<std::string> empty_categories; | 876 cat_groups.end(), "c3") != cat_groups.end()); |
| 828 std::vector<std::string> included_categories; | 877 EXPECT_TRUE(std::find(cat_groups.begin(), |
| 829 std::vector<std::string> excluded_categories; | 878 cat_groups.end(), "c4") != cat_groups.end()); |
| 879 EXPECT_TRUE(std::find(cat_groups.begin(), |
| 880 cat_groups.end(), "c5,c6") != cat_groups.end()); |
| 881 EXPECT_TRUE(std::find(cat_groups.begin(), |
| 882 cat_groups.end(), "c7,c8") != cat_groups.end()); |
| 830 | 883 |
| 831 // Test that category filtering works. | 884 // Test that category filtering works. |
| 832 | 885 |
| 833 // Include nonexistent category -> no events | 886 // Include nonexistent category -> no events |
| 834 Clear(); | 887 Clear(); |
| 835 included_categories.clear(); | 888 TraceLog::GetInstance()->SetEnabled(CategoryFilter("not_found823564786")); |
| 836 included_categories.push_back("not_found823564786"); | |
| 837 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories); | |
| 838 TRACE_EVENT_INSTANT0("cat1", "name"); | 889 TRACE_EVENT_INSTANT0("cat1", "name"); |
| 839 TRACE_EVENT_INSTANT0("cat2", "name"); | 890 TRACE_EVENT_INSTANT0("cat2", "name"); |
| 840 EndTraceAndFlush(); | 891 EndTraceAndFlush(); |
| 841 EXPECT_TRUE(trace_parsed_.empty()); | 892 EXPECT_TRUE(trace_parsed_.empty()); |
| 842 | 893 |
| 843 // Include existent category -> only events of that category | 894 // Include existent category -> only events of that category |
| 844 Clear(); | 895 Clear(); |
| 845 included_categories.clear(); | 896 TraceLog::GetInstance()->SetEnabled(CategoryFilter("inc")); |
| 846 included_categories.push_back("inc"); | 897 |
| 847 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories); | |
| 848 TRACE_EVENT_INSTANT0("inc", "name"); | 898 TRACE_EVENT_INSTANT0("inc", "name"); |
| 849 TRACE_EVENT_INSTANT0("inc2", "name"); | 899 TRACE_EVENT_INSTANT0("inc2", "name"); |
| 850 EndTraceAndFlush(); | 900 EndTraceAndFlush(); |
| 851 EXPECT_TRUE(FindMatchingValue("cat", "inc")); | 901 EXPECT_TRUE(FindMatchingValue("cat", "inc")); |
| 852 EXPECT_FALSE(FindNonMatchingValue("cat", "inc")); | 902 EXPECT_FALSE(FindNonMatchingValue("cat", "inc")); |
| 853 | 903 |
| 854 // Include existent wildcard -> all categories matching wildcard | 904 // Include existent wildcard -> all categories matching wildcard |
| 855 Clear(); | 905 Clear(); |
| 856 included_categories.clear(); | 906 TraceLog::GetInstance()->SetEnabled( |
| 857 included_categories.push_back("inc_wildcard_*"); | 907 CategoryFilter("inc_wildcard_*,inc_wildchar_?_end")); |
| 858 included_categories.push_back("inc_wildchar_?_end"); | |
| 859 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories); | |
| 860 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included"); | 908 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included"); |
| 909 TRACE_EVENT_INSTANT0("inc_wildcard_category,other_category", "included"); |
| 910 TRACE_EVENT_INSTANT0("non_included_category,inc_wildcard_category", |
| 911 "included"); |
| 861 TRACE_EVENT_INSTANT0("inc_wildcard_", "included"); | 912 TRACE_EVENT_INSTANT0("inc_wildcard_", "included"); |
| 862 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included"); | 913 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included"); |
| 863 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc"); | 914 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc"); |
| 864 TRACE_EVENT_INSTANT0("cat1", "not_inc"); | 915 TRACE_EVENT_INSTANT0("cat1", "not_inc"); |
| 865 TRACE_EVENT_INSTANT0("cat2", "not_inc"); | 916 TRACE_EVENT_INSTANT0("cat2", "not_inc"); |
| 866 EndTraceAndFlush(); | 917 EndTraceAndFlush(); |
| 867 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc")); | 918 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc")); |
| 919 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_category,other_category")); |
| 920 EXPECT_TRUE(FindMatchingValue("cat", |
| 921 "non_included_category,inc_wildcard_category")); |
| 868 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_")); | 922 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_")); |
| 869 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end")); | 923 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end")); |
| 870 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); | 924 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); |
| 871 | 925 |
| 872 included_categories.clear(); | |
| 873 | |
| 874 // Exclude nonexistent category -> all events | 926 // Exclude nonexistent category -> all events |
| 875 Clear(); | 927 Clear(); |
| 876 excluded_categories.clear(); | 928 TraceLog::GetInstance()->SetEnabled(CategoryFilter("-not_found823564786")); |
| 877 excluded_categories.push_back("not_found823564786"); | |
| 878 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories); | |
| 879 TRACE_EVENT_INSTANT0("cat1", "name"); | 929 TRACE_EVENT_INSTANT0("cat1", "name"); |
| 880 TRACE_EVENT_INSTANT0("cat2", "name"); | 930 TRACE_EVENT_INSTANT0("cat2", "name"); |
| 931 TRACE_EVENT_INSTANT0("category1,category2", "name"); |
| 881 EndTraceAndFlush(); | 932 EndTraceAndFlush(); |
| 882 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); | 933 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); |
| 883 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); | 934 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); |
| 935 EXPECT_TRUE(FindMatchingValue("cat", "category1,category2")); |
| 884 | 936 |
| 885 // Exclude existent category -> only events of other categories | 937 // Exclude existent category -> only events of other categories |
| 886 Clear(); | 938 Clear(); |
| 887 excluded_categories.clear(); | 939 TraceLog::GetInstance()->SetEnabled(CategoryFilter("-inc")); |
| 888 excluded_categories.push_back("inc"); | |
| 889 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories); | |
| 890 TRACE_EVENT_INSTANT0("inc", "name"); | 940 TRACE_EVENT_INSTANT0("inc", "name"); |
| 941 TRACE_EVENT_INSTANT0("inc2,inc", "name"); |
| 942 TRACE_EVENT_INSTANT0("inc,inc2", "name"); |
| 891 TRACE_EVENT_INSTANT0("inc2", "name"); | 943 TRACE_EVENT_INSTANT0("inc2", "name"); |
| 892 EndTraceAndFlush(); | 944 EndTraceAndFlush(); |
| 893 EXPECT_TRUE(FindMatchingValue("cat", "inc2")); | 945 EXPECT_TRUE(FindMatchingValue("cat", "inc2")); |
| 894 EXPECT_FALSE(FindMatchingValue("cat", "inc")); | 946 EXPECT_FALSE(FindMatchingValue("cat", "inc")); |
| 947 EXPECT_FALSE(FindMatchingValue("cat", "inc2,inc")); |
| 948 EXPECT_FALSE(FindMatchingValue("cat", "inc,inc2")); |
| 895 | 949 |
| 896 // Exclude existent wildcard -> all categories not matching wildcard | 950 // Exclude existent wildcard -> all categories not matching wildcard |
| 897 Clear(); | 951 Clear(); |
| 898 excluded_categories.clear(); | 952 TraceLog::GetInstance()->SetEnabled( |
| 899 excluded_categories.push_back("inc_wildcard_*"); | 953 CategoryFilter("-inc_wildcard_*,-inc_wildchar_?_end")); |
| 900 excluded_categories.push_back("inc_wildchar_?_end"); | |
| 901 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories); | |
| 902 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc"); | 954 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc"); |
| 903 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc"); | 955 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc"); |
| 904 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc"); | 956 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc"); |
| 905 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included"); | 957 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included"); |
| 906 TRACE_EVENT_INSTANT0("cat1", "included"); | 958 TRACE_EVENT_INSTANT0("cat1", "included"); |
| 907 TRACE_EVENT_INSTANT0("cat2", "included"); | 959 TRACE_EVENT_INSTANT0("cat2", "included"); |
| 908 EndTraceAndFlush(); | 960 EndTraceAndFlush(); |
| 909 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_bla_end")); | 961 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_bla_end")); |
| 910 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); | 962 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); |
| 911 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); | 963 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); |
| (...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1424 TRACE_EVENT_INSTANT1("category", "test", "a", a++); | 1476 TRACE_EVENT_INSTANT1("category", "test", "a", a++); |
| 1425 EXPECT_EQ(1, a); | 1477 EXPECT_EQ(1, a); |
| 1426 | 1478 |
| 1427 EndTraceAndFlush(); | 1479 EndTraceAndFlush(); |
| 1428 } | 1480 } |
| 1429 | 1481 |
| 1430 TEST_F(TraceEventTestFixture, TraceEnableDisable) { | 1482 TEST_F(TraceEventTestFixture, TraceEnableDisable) { |
| 1431 ManualTestSetUp(); | 1483 ManualTestSetUp(); |
| 1432 | 1484 |
| 1433 TraceLog* trace_log = TraceLog::GetInstance(); | 1485 TraceLog* trace_log = TraceLog::GetInstance(); |
| 1434 trace_log->SetEnabled(std::string()); | 1486 CategoryFilter cf_empty(""); |
| 1487 trace_log->SetEnabled(cf_empty); |
| 1435 EXPECT_TRUE(trace_log->IsEnabled()); | 1488 EXPECT_TRUE(trace_log->IsEnabled()); |
| 1436 trace_log->SetDisabled(); | 1489 trace_log->SetDisabled(); |
| 1437 EXPECT_FALSE(trace_log->IsEnabled()); | 1490 EXPECT_FALSE(trace_log->IsEnabled()); |
| 1438 | 1491 |
| 1439 trace_log->SetEnabled(true); | 1492 trace_log->SetEnabled(cf_empty); |
| 1440 EXPECT_TRUE(trace_log->IsEnabled()); | 1493 EXPECT_TRUE(trace_log->IsEnabled()); |
| 1441 const std::vector<std::string> empty; | 1494 trace_log->SetEnabled(cf_empty); |
| 1442 trace_log->SetEnabled(empty, empty); | |
| 1443 EXPECT_TRUE(trace_log->IsEnabled()); | 1495 EXPECT_TRUE(trace_log->IsEnabled()); |
| 1444 trace_log->SetEnabled(false); | 1496 trace_log->SetDisabled(); |
| 1445 EXPECT_TRUE(trace_log->IsEnabled()); | 1497 EXPECT_TRUE(trace_log->IsEnabled()); |
| 1446 trace_log->SetDisabled(); | 1498 trace_log->SetDisabled(); |
| 1447 EXPECT_FALSE(trace_log->IsEnabled()); | 1499 EXPECT_FALSE(trace_log->IsEnabled()); |
| 1448 } | 1500 } |
| 1449 | 1501 |
| 1450 TEST_F(TraceEventTestFixture, TraceCategoriesAfterNestedEnable) { | 1502 TEST_F(TraceEventTestFixture, TraceCategoriesAfterNestedEnable) { |
| 1451 ManualTestSetUp(); | 1503 ManualTestSetUp(); |
| 1452 | 1504 |
| 1453 TraceLog* trace_log = TraceLog::GetInstance(); | 1505 TraceLog* trace_log = TraceLog::GetInstance(); |
| 1454 trace_log->SetEnabled(std::string("foo,bar")); | 1506 trace_log->SetEnabled(CategoryFilter("foo,bar")); |
| 1455 EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo")); | 1507 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); |
| 1456 EXPECT_TRUE(*trace_log->GetCategoryEnabled("bar")); | 1508 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar")); |
| 1457 EXPECT_FALSE(*trace_log->GetCategoryEnabled("baz")); | 1509 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); |
| 1458 trace_log->SetEnabled(std::string("foo2")); | 1510 trace_log->SetEnabled(CategoryFilter("foo2")); |
| 1459 EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo2")); | 1511 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo2")); |
| 1460 EXPECT_FALSE(*trace_log->GetCategoryEnabled("baz")); | 1512 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); |
| 1461 trace_log->SetEnabled(std::string("")); | 1513 trace_log->SetEnabled(CategoryFilter("")); |
| 1462 EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo")); | 1514 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); |
| 1463 EXPECT_TRUE(*trace_log->GetCategoryEnabled("baz")); | 1515 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); |
| 1464 trace_log->SetDisabled(); | 1516 trace_log->SetDisabled(); |
| 1465 trace_log->SetDisabled(); | 1517 trace_log->SetDisabled(); |
| 1466 trace_log->SetDisabled(); | 1518 trace_log->SetDisabled(); |
| 1467 EXPECT_FALSE(*trace_log->GetCategoryEnabled("foo")); | 1519 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo")); |
| 1468 EXPECT_FALSE(*trace_log->GetCategoryEnabled("baz")); | 1520 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); |
| 1469 | 1521 |
| 1470 trace_log->SetEnabled(std::string("-foo,-bar")); | 1522 trace_log->SetEnabled(CategoryFilter("-foo,-bar")); |
| 1471 EXPECT_FALSE(*trace_log->GetCategoryEnabled("foo")); | 1523 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo")); |
| 1472 EXPECT_TRUE(*trace_log->GetCategoryEnabled("baz")); | 1524 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); |
| 1473 trace_log->SetEnabled(std::string("moo")); | 1525 trace_log->SetEnabled(CategoryFilter("moo")); |
| 1474 EXPECT_TRUE(*trace_log->GetCategoryEnabled("baz")); | 1526 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); |
| 1475 EXPECT_TRUE(*trace_log->GetCategoryEnabled("moo")); | 1527 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("moo")); |
| 1476 EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo")); | 1528 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); |
| 1477 trace_log->SetDisabled(); | 1529 trace_log->SetDisabled(); |
| 1478 trace_log->SetDisabled(); | 1530 trace_log->SetDisabled(); |
| 1479 } | 1531 } |
| 1480 | 1532 |
| 1481 } // namespace debug | 1533 } // namespace debug |
| 1482 } // namespace base | 1534 } // namespace base |
| OLD | NEW |