| 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(std::string("*"), | 76 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
| 77 TraceLog::RECORD_UNTIL_FULL); | 77 TraceLog::RECORD_UNTIL_FULL); |
| 78 } | 78 } |
| 79 | 79 |
| 80 void EndTraceAndFlush() { | 80 void EndTraceAndFlush() { |
| 81 while (TraceLog::GetInstance()->IsEnabled()) | 81 while (TraceLog::GetInstance()->IsEnabled()) |
| 82 TraceLog::GetInstance()->SetDisabled(); | 82 TraceLog::GetInstance()->SetDisabled(); |
| 83 TraceLog::GetInstance()->Flush( | 83 TraceLog::GetInstance()->Flush( |
| 84 base::Bind(&TraceEventTestFixture::OnTraceDataCollected, | 84 base::Bind(&TraceEventTestFixture::OnTraceDataCollected, |
| 85 base::Unretained(this))); | 85 base::Unretained(this))); |
| 86 } | 86 } |
| (...skipping 679 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 766 void HighResSleepForTraceTest(base::TimeDelta elapsed) { | 766 void HighResSleepForTraceTest(base::TimeDelta elapsed) { |
| 767 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed; | 767 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed; |
| 768 do { | 768 do { |
| 769 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); | 769 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); |
| 770 } while (base::TimeTicks::HighResNow() < end_time); | 770 } while (base::TimeTicks::HighResNow() < end_time); |
| 771 } | 771 } |
| 772 | 772 |
| 773 // Simple Test for emitting data and validating it was received. | 773 // Simple Test for emitting data and validating it was received. |
| 774 TEST_F(TraceEventTestFixture, DataCaptured) { | 774 TEST_F(TraceEventTestFixture, DataCaptured) { |
| 775 ManualTestSetUp(); | 775 ManualTestSetUp(); |
| 776 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 776 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
| 777 TraceLog::RECORD_UNTIL_FULL); |
| 777 | 778 |
| 778 TraceWithAllMacroVariants(NULL); | 779 TraceWithAllMacroVariants(NULL); |
| 779 | 780 |
| 780 EndTraceAndFlush(); | 781 EndTraceAndFlush(); |
| 781 | 782 |
| 782 ValidateAllTraceMacrosCreatedData(trace_parsed_); | 783 ValidateAllTraceMacrosCreatedData(trace_parsed_); |
| 783 } | 784 } |
| 784 | 785 |
| 785 class MockEnabledStateChangedObserver : | 786 class MockEnabledStateChangedObserver : |
| 786 public base::debug::TraceLog::EnabledStateChangedObserver { | 787 public base::debug::TraceLog::EnabledStateChangedObserver { |
| 787 public: | 788 public: |
| 788 MOCK_METHOD0(OnTraceLogWillEnable, void()); | 789 MOCK_METHOD0(OnTraceLogWillEnable, void()); |
| 789 MOCK_METHOD0(OnTraceLogWillDisable, void()); | 790 MOCK_METHOD0(OnTraceLogWillDisable, void()); |
| 790 }; | 791 }; |
| 791 | 792 |
| 792 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) { | 793 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) { |
| 793 ManualTestSetUp(); | 794 ManualTestSetUp(); |
| 794 | 795 |
| 795 MockEnabledStateChangedObserver observer; | 796 MockEnabledStateChangedObserver observer; |
| 796 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 797 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
| 797 | 798 |
| 798 EXPECT_CALL(observer, OnTraceLogWillEnable()) | 799 EXPECT_CALL(observer, OnTraceLogWillEnable()) |
| 799 .Times(1); | 800 .Times(1); |
| 800 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 801 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
| 802 TraceLog::RECORD_UNTIL_FULL); |
| 801 testing::Mock::VerifyAndClear(&observer); | 803 testing::Mock::VerifyAndClear(&observer); |
| 802 | 804 |
| 803 // Cleanup. | 805 // Cleanup. |
| 804 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 806 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
| 805 TraceLog::GetInstance()->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL); | 807 TraceLog::GetInstance()->SetDisabled(); |
| 806 } | 808 } |
| 807 | 809 |
| 808 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) { | 810 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) { |
| 809 ManualTestSetUp(); | 811 ManualTestSetUp(); |
| 810 | 812 |
| 811 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 813 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
| 814 TraceLog::RECORD_UNTIL_FULL); |
| 812 | 815 |
| 813 testing::StrictMock<MockEnabledStateChangedObserver> observer; | 816 testing::StrictMock<MockEnabledStateChangedObserver> observer; |
| 814 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 817 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
| 815 | 818 |
| 816 EXPECT_CALL(observer, OnTraceLogWillEnable()) | 819 EXPECT_CALL(observer, OnTraceLogWillEnable()) |
| 817 .Times(0); | 820 .Times(0); |
| 818 EXPECT_CALL(observer, OnTraceLogWillDisable()) | 821 EXPECT_CALL(observer, OnTraceLogWillDisable()) |
| 819 .Times(0); | 822 .Times(0); |
| 820 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 823 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
| 824 TraceLog::RECORD_UNTIL_FULL); |
| 821 testing::Mock::VerifyAndClear(&observer); | 825 testing::Mock::VerifyAndClear(&observer); |
| 822 | 826 |
| 823 // Cleanup. | 827 // Cleanup. |
| 824 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 828 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
| 825 TraceLog::GetInstance()->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL); | 829 TraceLog::GetInstance()->SetDisabled(); |
| 826 TraceLog::GetInstance()->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL); | 830 TraceLog::GetInstance()->SetDisabled(); |
| 827 } | 831 } |
| 828 | 832 |
| 829 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnNestedDisable) { | 833 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnNestedDisable) { |
| 830 ManualTestSetUp(); | 834 ManualTestSetUp(); |
| 831 | 835 |
| 832 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 836 CategoryFilter cf_inc_all("*"); |
| 833 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 837 TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); |
| 838 TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); |
| 834 | 839 |
| 835 testing::StrictMock<MockEnabledStateChangedObserver> observer; | 840 testing::StrictMock<MockEnabledStateChangedObserver> observer; |
| 836 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 841 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
| 837 | 842 |
| 838 EXPECT_CALL(observer, OnTraceLogWillEnable()) | 843 EXPECT_CALL(observer, OnTraceLogWillEnable()) |
| 839 .Times(0); | 844 .Times(0); |
| 840 EXPECT_CALL(observer, OnTraceLogWillDisable()) | 845 EXPECT_CALL(observer, OnTraceLogWillDisable()) |
| 841 .Times(0); | 846 .Times(0); |
| 842 TraceLog::GetInstance()->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL); | 847 TraceLog::GetInstance()->SetDisabled(); |
| 843 testing::Mock::VerifyAndClear(&observer); | 848 testing::Mock::VerifyAndClear(&observer); |
| 844 | 849 |
| 845 // Cleanup. | 850 // Cleanup. |
| 846 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 851 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
| 847 TraceLog::GetInstance()->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL); | 852 TraceLog::GetInstance()->SetDisabled(); |
| 848 } | 853 } |
| 849 | 854 |
| 850 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) { | 855 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) { |
| 851 ManualTestSetUp(); | 856 ManualTestSetUp(); |
| 852 | 857 |
| 853 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 858 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
| 859 TraceLog::RECORD_UNTIL_FULL); |
| 854 | 860 |
| 855 MockEnabledStateChangedObserver observer; | 861 MockEnabledStateChangedObserver observer; |
| 856 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 862 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
| 857 | 863 |
| 858 EXPECT_CALL(observer, OnTraceLogWillDisable()) | 864 EXPECT_CALL(observer, OnTraceLogWillDisable()) |
| 859 .Times(1); | 865 .Times(1); |
| 860 TraceLog::GetInstance()->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL); | 866 TraceLog::GetInstance()->SetDisabled(); |
| 861 testing::Mock::VerifyAndClear(&observer); | 867 testing::Mock::VerifyAndClear(&observer); |
| 862 | 868 |
| 863 // Cleanup. | 869 // Cleanup. |
| 864 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 870 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
| 865 } | 871 } |
| 866 | 872 |
| 867 // Test that categories work. | 873 // Test that categories work. |
| 868 TEST_F(TraceEventTestFixture, Categories) { | 874 TEST_F(TraceEventTestFixture, Categories) { |
| 869 ManualTestSetUp(); | 875 ManualTestSetUp(); |
| 870 | 876 |
| 871 // Test that categories that are used can be retrieved whether trace was | 877 // Test that categories that are used can be retrieved whether trace was |
| 872 // enabled or disabled when the trace event was encountered. | 878 // enabled or disabled when the trace event was encountered. |
| 873 TRACE_EVENT_INSTANT0("c1", "name", TRACE_EVENT_SCOPE_THREAD); | 879 TRACE_EVENT_INSTANT0("c1", "name", TRACE_EVENT_SCOPE_THREAD); |
| 874 TRACE_EVENT_INSTANT0("c2", "name", TRACE_EVENT_SCOPE_THREAD); | 880 TRACE_EVENT_INSTANT0("c2", "name", TRACE_EVENT_SCOPE_THREAD); |
| 875 BeginTrace(); | 881 BeginTrace(); |
| 876 TRACE_EVENT_INSTANT0("c3", "name", TRACE_EVENT_SCOPE_THREAD); | 882 TRACE_EVENT_INSTANT0("c3", "name", TRACE_EVENT_SCOPE_THREAD); |
| 877 TRACE_EVENT_INSTANT0("c4", "name", TRACE_EVENT_SCOPE_THREAD); | 883 TRACE_EVENT_INSTANT0("c4", "name", TRACE_EVENT_SCOPE_THREAD); |
| 884 // Category groups containing more than one category. |
| 885 TRACE_EVENT_INSTANT0("c5,c6", "name", TRACE_EVENT_SCOPE_THREAD); |
| 886 TRACE_EVENT_INSTANT0("c7,c8", "name", TRACE_EVENT_SCOPE_THREAD); |
| 887 |
| 878 EndTraceAndFlush(); | 888 EndTraceAndFlush(); |
| 879 std::vector<std::string> cats; | 889 std::vector<std::string> cat_groups; |
| 880 TraceLog::GetInstance()->GetKnownCategories(&cats); | 890 TraceLog::GetInstance()->GetKnownCategoryGroups(&cat_groups); |
| 881 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c1") != cats.end()); | 891 EXPECT_TRUE(std::find(cat_groups.begin(), |
| 882 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c2") != cats.end()); | 892 cat_groups.end(), "c1") != cat_groups.end()); |
| 883 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c3") != cats.end()); | 893 EXPECT_TRUE(std::find(cat_groups.begin(), |
| 884 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c4") != cats.end()); | 894 cat_groups.end(), "c2") != cat_groups.end()); |
| 885 // Make sure metadata isn't returned. | 895 EXPECT_TRUE(std::find(cat_groups.begin(), |
| 886 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "__metadata") == cats.end()); | 896 cat_groups.end(), "c3") != cat_groups.end()); |
| 897 EXPECT_TRUE(std::find(cat_groups.begin(), |
| 898 cat_groups.end(), "c4") != cat_groups.end()); |
| 899 EXPECT_TRUE(std::find(cat_groups.begin(), |
| 900 cat_groups.end(), "c5,c6") != cat_groups.end()); |
| 901 EXPECT_TRUE(std::find(cat_groups.begin(), |
| 902 cat_groups.end(), "c7,c8") != cat_groups.end()); |
| 903 |
| 887 const std::vector<std::string> empty_categories; | 904 const std::vector<std::string> empty_categories; |
| 888 std::vector<std::string> included_categories; | 905 std::vector<std::string> included_categories; |
| 889 std::vector<std::string> excluded_categories; | 906 std::vector<std::string> excluded_categories; |
| 890 | 907 |
| 891 // Test that category filtering works. | 908 // Test that category filtering works. |
| 892 | 909 |
| 893 // Include nonexistent category -> no events | 910 // Include nonexistent category -> no events |
| 894 Clear(); | 911 Clear(); |
| 895 included_categories.clear(); | 912 included_categories.clear(); |
| 896 included_categories.push_back("not_found823564786"); | 913 TraceLog::GetInstance()->SetEnabled(CategoryFilter("not_found823564786"), |
| 897 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories, | |
| 898 TraceLog::RECORD_UNTIL_FULL); | 914 TraceLog::RECORD_UNTIL_FULL); |
| 899 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD); | 915 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD); |
| 900 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD); | 916 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD); |
| 901 EndTraceAndFlush(); | 917 EndTraceAndFlush(); |
| 902 EXPECT_TRUE(trace_parsed_.empty()); | 918 EXPECT_TRUE(trace_parsed_.empty()); |
| 903 | 919 |
| 904 // Include existent category -> only events of that category | 920 // Include existent category -> only events of that category |
| 905 Clear(); | 921 Clear(); |
| 906 included_categories.clear(); | 922 included_categories.clear(); |
| 907 included_categories.push_back("inc"); | 923 TraceLog::GetInstance()->SetEnabled(CategoryFilter("inc"), |
| 908 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories, | |
| 909 TraceLog::RECORD_UNTIL_FULL); | 924 TraceLog::RECORD_UNTIL_FULL); |
| 910 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD); | 925 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD); |
| 911 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD); | 926 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD); |
| 912 EndTraceAndFlush(); | 927 EndTraceAndFlush(); |
| 913 EXPECT_TRUE(FindMatchingValue("cat", "inc")); | 928 EXPECT_TRUE(FindMatchingValue("cat", "inc")); |
| 914 EXPECT_FALSE(FindNonMatchingValue("cat", "inc")); | 929 EXPECT_FALSE(FindNonMatchingValue("cat", "inc")); |
| 915 | 930 |
| 916 // Include existent wildcard -> all categories matching wildcard | 931 // Include existent wildcard -> all categories matching wildcard |
| 917 Clear(); | 932 Clear(); |
| 918 included_categories.clear(); | 933 included_categories.clear(); |
| 919 included_categories.push_back("inc_wildcard_*"); | 934 TraceLog::GetInstance()->SetEnabled( |
| 920 included_categories.push_back("inc_wildchar_?_end"); | 935 CategoryFilter("inc_wildcard_*,inc_wildchar_?_end"), |
| 921 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories, | 936 TraceLog::RECORD_UNTIL_FULL); |
| 922 TraceLog::RECORD_UNTIL_FULL); | |
| 923 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included", | 937 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included", |
| 924 TRACE_EVENT_SCOPE_THREAD); | 938 TRACE_EVENT_SCOPE_THREAD); |
| 925 TRACE_EVENT_INSTANT0("inc_wildcard_", "included", TRACE_EVENT_SCOPE_THREAD); | 939 TRACE_EVENT_INSTANT0("inc_wildcard_", "included", TRACE_EVENT_SCOPE_THREAD); |
| 926 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included", | 940 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included", |
| 927 TRACE_EVENT_SCOPE_THREAD); | 941 TRACE_EVENT_SCOPE_THREAD); |
| 928 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc", | 942 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc", |
| 929 TRACE_EVENT_SCOPE_THREAD); | 943 TRACE_EVENT_SCOPE_THREAD); |
| 930 TRACE_EVENT_INSTANT0("cat1", "not_inc", TRACE_EVENT_SCOPE_THREAD); | 944 TRACE_EVENT_INSTANT0("cat1", "not_inc", TRACE_EVENT_SCOPE_THREAD); |
| 931 TRACE_EVENT_INSTANT0("cat2", "not_inc", TRACE_EVENT_SCOPE_THREAD); | 945 TRACE_EVENT_INSTANT0("cat2", "not_inc", TRACE_EVENT_SCOPE_THREAD); |
| 946 TRACE_EVENT_INSTANT0("inc_wildcard_category,other_category", "included", |
| 947 TRACE_EVENT_SCOPE_THREAD); |
| 948 TRACE_EVENT_INSTANT0( |
| 949 "non_included_category,inc_wildcard_category", "included", |
| 950 TRACE_EVENT_SCOPE_THREAD); |
| 932 EndTraceAndFlush(); | 951 EndTraceAndFlush(); |
| 933 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc")); | 952 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc")); |
| 934 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_")); | 953 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_")); |
| 935 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end")); | 954 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end")); |
| 936 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); | 955 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); |
| 956 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_category,other_category")); |
| 957 EXPECT_TRUE(FindMatchingValue("cat", |
| 958 "non_included_category,inc_wildcard_category")); |
| 937 | 959 |
| 938 included_categories.clear(); | 960 included_categories.clear(); |
| 939 | 961 |
| 940 // Exclude nonexistent category -> all events | 962 // Exclude nonexistent category -> all events |
| 941 Clear(); | 963 Clear(); |
| 942 excluded_categories.clear(); | 964 TraceLog::GetInstance()->SetEnabled(CategoryFilter("-not_found823564786"), |
| 943 excluded_categories.push_back("not_found823564786"); | |
| 944 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories, | |
| 945 TraceLog::RECORD_UNTIL_FULL); | 965 TraceLog::RECORD_UNTIL_FULL); |
| 946 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD); | 966 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD); |
| 947 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD); | 967 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD); |
| 968 TRACE_EVENT_INSTANT0("category1,category2", "name", TRACE_EVENT_SCOPE_THREAD); |
| 948 EndTraceAndFlush(); | 969 EndTraceAndFlush(); |
| 949 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); | 970 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); |
| 950 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); | 971 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); |
| 972 EXPECT_TRUE(FindMatchingValue("cat", "category1,category2")); |
| 951 | 973 |
| 952 // Exclude existent category -> only events of other categories | 974 // Exclude existent category -> only events of other categories |
| 953 Clear(); | 975 Clear(); |
| 954 excluded_categories.clear(); | 976 TraceLog::GetInstance()->SetEnabled(CategoryFilter("-inc"), |
| 955 excluded_categories.push_back("inc"); | |
| 956 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories, | |
| 957 TraceLog::RECORD_UNTIL_FULL); | 977 TraceLog::RECORD_UNTIL_FULL); |
| 958 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD); | 978 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD); |
| 959 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD); | 979 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD); |
| 980 TRACE_EVENT_INSTANT0("inc2,inc", "name", TRACE_EVENT_SCOPE_THREAD); |
| 981 TRACE_EVENT_INSTANT0("inc,inc2", "name", TRACE_EVENT_SCOPE_THREAD); |
| 960 EndTraceAndFlush(); | 982 EndTraceAndFlush(); |
| 961 EXPECT_TRUE(FindMatchingValue("cat", "inc2")); | 983 EXPECT_TRUE(FindMatchingValue("cat", "inc2")); |
| 962 EXPECT_FALSE(FindMatchingValue("cat", "inc")); | 984 EXPECT_FALSE(FindMatchingValue("cat", "inc")); |
| 985 EXPECT_FALSE(FindMatchingValue("cat", "inc2,inc")); |
| 986 EXPECT_FALSE(FindMatchingValue("cat", "inc,inc2")); |
| 963 | 987 |
| 964 // Exclude existent wildcard -> all categories not matching wildcard | 988 // Exclude existent wildcard -> all categories not matching wildcard |
| 965 Clear(); | 989 Clear(); |
| 966 excluded_categories.clear(); | 990 TraceLog::GetInstance()->SetEnabled( |
| 967 excluded_categories.push_back("inc_wildcard_*"); | 991 CategoryFilter("-inc_wildcard_*,-inc_wildchar_?_end"), |
| 968 excluded_categories.push_back("inc_wildchar_?_end"); | 992 TraceLog::RECORD_UNTIL_FULL); |
| 969 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories, | 993 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc", |
| 970 TraceLog::RECORD_UNTIL_FULL); | 994 TRACE_EVENT_SCOPE_THREAD); |
| 971 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc", TRACE_EVENT_SCOPE_THREAD); | 995 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc", |
| 972 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc", TRACE_EVENT_SCOPE_THREAD); | 996 TRACE_EVENT_SCOPE_THREAD); |
| 973 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc", | 997 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc", |
| 974 TRACE_EVENT_SCOPE_THREAD); | 998 TRACE_EVENT_SCOPE_THREAD); |
| 975 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included", | 999 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included", |
| 976 TRACE_EVENT_SCOPE_THREAD); | 1000 TRACE_EVENT_SCOPE_THREAD); |
| 977 TRACE_EVENT_INSTANT0("cat1", "included", TRACE_EVENT_SCOPE_THREAD); | 1001 TRACE_EVENT_INSTANT0("cat1", "included", TRACE_EVENT_SCOPE_THREAD); |
| 978 TRACE_EVENT_INSTANT0("cat2", "included", TRACE_EVENT_SCOPE_THREAD); | 1002 TRACE_EVENT_INSTANT0("cat2", "included", TRACE_EVENT_SCOPE_THREAD); |
| 979 EndTraceAndFlush(); | 1003 EndTraceAndFlush(); |
| 980 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_bla_end")); | 1004 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_bla_end")); |
| 981 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); | 1005 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); |
| 982 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); | 1006 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); |
| 983 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); | 1007 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); |
| 984 } | 1008 } |
| 985 | 1009 |
| 986 | 1010 |
| (...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1501 TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++); | 1525 TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++); |
| 1502 EXPECT_EQ(1, a); | 1526 EXPECT_EQ(1, a); |
| 1503 | 1527 |
| 1504 EndTraceAndFlush(); | 1528 EndTraceAndFlush(); |
| 1505 } | 1529 } |
| 1506 | 1530 |
| 1507 TEST_F(TraceEventTestFixture, TraceEnableDisable) { | 1531 TEST_F(TraceEventTestFixture, TraceEnableDisable) { |
| 1508 ManualTestSetUp(); | 1532 ManualTestSetUp(); |
| 1509 | 1533 |
| 1510 TraceLog* trace_log = TraceLog::GetInstance(); | 1534 TraceLog* trace_log = TraceLog::GetInstance(); |
| 1511 trace_log->SetEnabled(std::string(), TraceLog::RECORD_UNTIL_FULL); | 1535 CategoryFilter cf_inc_all("*"); |
| 1536 trace_log->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); |
| 1512 EXPECT_TRUE(trace_log->IsEnabled()); | 1537 EXPECT_TRUE(trace_log->IsEnabled()); |
| 1513 trace_log->SetDisabled(); | 1538 trace_log->SetDisabled(); |
| 1514 EXPECT_FALSE(trace_log->IsEnabled()); | 1539 EXPECT_FALSE(trace_log->IsEnabled()); |
| 1515 | 1540 |
| 1516 trace_log->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 1541 trace_log->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); |
| 1517 EXPECT_TRUE(trace_log->IsEnabled()); | 1542 EXPECT_TRUE(trace_log->IsEnabled()); |
| 1518 const std::vector<std::string> empty; | 1543 const std::vector<std::string> empty; |
| 1519 trace_log->SetEnabled(empty, empty, TraceLog::RECORD_UNTIL_FULL); | 1544 trace_log->SetEnabled(CategoryFilter(""), TraceLog::RECORD_UNTIL_FULL); |
| 1520 EXPECT_TRUE(trace_log->IsEnabled()); | 1545 EXPECT_TRUE(trace_log->IsEnabled()); |
| 1521 trace_log->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL); | 1546 trace_log->SetDisabled(); |
| 1522 EXPECT_TRUE(trace_log->IsEnabled()); | 1547 EXPECT_TRUE(trace_log->IsEnabled()); |
| 1523 trace_log->SetDisabled(); | 1548 trace_log->SetDisabled(); |
| 1524 EXPECT_FALSE(trace_log->IsEnabled()); | 1549 EXPECT_FALSE(trace_log->IsEnabled()); |
| 1525 } | 1550 } |
| 1526 | 1551 |
| 1527 TEST_F(TraceEventTestFixture, TraceCategoriesAfterNestedEnable) { | 1552 TEST_F(TraceEventTestFixture, TraceCategoriesAfterNestedEnable) { |
| 1528 ManualTestSetUp(); | 1553 ManualTestSetUp(); |
| 1529 | 1554 |
| 1530 TraceLog* trace_log = TraceLog::GetInstance(); | 1555 TraceLog* trace_log = TraceLog::GetInstance(); |
| 1531 trace_log->SetEnabled(std::string("foo,bar"), TraceLog::RECORD_UNTIL_FULL); | 1556 trace_log->SetEnabled(CategoryFilter("foo,bar"), TraceLog::RECORD_UNTIL_FULL); |
| 1532 EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo")); | 1557 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); |
| 1533 EXPECT_TRUE(*trace_log->GetCategoryEnabled("bar")); | 1558 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar")); |
| 1534 EXPECT_FALSE(*trace_log->GetCategoryEnabled("baz")); | 1559 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); |
| 1535 trace_log->SetEnabled(std::string("foo2"), TraceLog::RECORD_UNTIL_FULL); | 1560 trace_log->SetEnabled(CategoryFilter("foo2"), TraceLog::RECORD_UNTIL_FULL); |
| 1536 EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo2")); | 1561 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo2")); |
| 1537 EXPECT_FALSE(*trace_log->GetCategoryEnabled("baz")); | 1562 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); |
| 1538 trace_log->SetEnabled(std::string(), TraceLog::RECORD_UNTIL_FULL); | 1563 trace_log->SetEnabled(CategoryFilter(""), TraceLog::RECORD_UNTIL_FULL); |
| 1539 EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo")); | 1564 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); |
| 1540 EXPECT_TRUE(*trace_log->GetCategoryEnabled("baz")); | 1565 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); |
| 1541 trace_log->SetDisabled(); | 1566 trace_log->SetDisabled(); |
| 1542 trace_log->SetDisabled(); | 1567 trace_log->SetDisabled(); |
| 1543 trace_log->SetDisabled(); | 1568 trace_log->SetDisabled(); |
| 1544 EXPECT_FALSE(*trace_log->GetCategoryEnabled("foo")); | 1569 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo")); |
| 1545 EXPECT_FALSE(*trace_log->GetCategoryEnabled("baz")); | 1570 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); |
| 1546 | 1571 |
| 1547 trace_log->SetEnabled(std::string("-foo,-bar"), TraceLog::RECORD_UNTIL_FULL); | 1572 trace_log->SetEnabled(CategoryFilter("-foo,-bar"), |
| 1548 EXPECT_FALSE(*trace_log->GetCategoryEnabled("foo")); | 1573 TraceLog::RECORD_UNTIL_FULL); |
| 1549 EXPECT_TRUE(*trace_log->GetCategoryEnabled("baz")); | 1574 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo")); |
| 1550 trace_log->SetEnabled(std::string("moo"), TraceLog::RECORD_UNTIL_FULL); | 1575 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); |
| 1551 EXPECT_TRUE(*trace_log->GetCategoryEnabled("baz")); | 1576 trace_log->SetEnabled(CategoryFilter("moo"), TraceLog::RECORD_UNTIL_FULL); |
| 1552 EXPECT_TRUE(*trace_log->GetCategoryEnabled("moo")); | 1577 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); |
| 1553 EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo")); | 1578 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("moo")); |
| 1579 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); |
| 1554 trace_log->SetDisabled(); | 1580 trace_log->SetDisabled(); |
| 1555 trace_log->SetDisabled(); | 1581 trace_log->SetDisabled(); |
| 1556 } | 1582 } |
| 1557 | 1583 |
| 1558 TEST_F(TraceEventTestFixture, TraceOptionsParsing) { | 1584 TEST_F(TraceEventTestFixture, TraceOptionsParsing) { |
| 1559 ManualTestSetUp(); | 1585 ManualTestSetUp(); |
| 1560 | 1586 |
| 1561 EXPECT_EQ(TraceLog::RECORD_UNTIL_FULL, | 1587 EXPECT_EQ(TraceLog::RECORD_UNTIL_FULL, |
| 1562 TraceLog::TraceOptionsFromString(std::string())); | 1588 TraceLog::TraceOptionsFromString(std::string())); |
| 1563 | 1589 |
| 1564 EXPECT_EQ(TraceLog::RECORD_UNTIL_FULL, | 1590 EXPECT_EQ(TraceLog::RECORD_UNTIL_FULL, |
| 1565 TraceLog::TraceOptionsFromString("record-until-full")); | 1591 TraceLog::TraceOptionsFromString("record-until-full")); |
| 1566 EXPECT_EQ(TraceLog::RECORD_CONTINUOUSLY, | 1592 EXPECT_EQ(TraceLog::RECORD_CONTINUOUSLY, |
| 1567 TraceLog::TraceOptionsFromString("record-continuously")); | 1593 TraceLog::TraceOptionsFromString("record-continuously")); |
| 1568 } | 1594 } |
| 1569 | 1595 |
| 1570 TEST_F(TraceEventTestFixture, TraceSampling) { | 1596 TEST_F(TraceEventTestFixture, TraceSampling) { |
| 1571 ManualTestSetUp(); | 1597 ManualTestSetUp(); |
| 1572 | 1598 |
| 1573 event_watch_notification_ = 0; | 1599 event_watch_notification_ = 0; |
| 1574 TraceLog::GetInstance()->SetEnabled( | 1600 TraceLog::GetInstance()->SetEnabled( |
| 1575 std::string("*"), | 1601 CategoryFilter("*"), |
| 1576 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL | | 1602 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL | |
| 1577 TraceLog::ENABLE_SAMPLING)); | 1603 TraceLog::ENABLE_SAMPLING)); |
| 1578 | 1604 |
| 1579 WaitableEvent* sampled = new WaitableEvent(false, false); | 1605 WaitableEvent* sampled = new WaitableEvent(false, false); |
| 1580 TraceLog::GetInstance()->InstallWaitableEventForSamplingTesting(sampled); | 1606 TraceLog::GetInstance()->InstallWaitableEventForSamplingTesting(sampled); |
| 1581 | 1607 |
| 1582 TRACE_EVENT_SAMPLE_STATE(1, "cc", "Stuff"); | 1608 TRACE_EVENT_SAMPLE_STATE(1, "cc", "Stuff"); |
| 1583 sampled->Wait(); | 1609 sampled->Wait(); |
| 1584 TRACE_EVENT_SAMPLE_STATE(1, "cc", "Things"); | 1610 TRACE_EVENT_SAMPLE_STATE(1, "cc", "Things"); |
| 1585 sampled->Wait(); | 1611 sampled->Wait(); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1599 virtual void AppendAsTraceFormat(std::string* out) const OVERRIDE { | 1625 virtual void AppendAsTraceFormat(std::string* out) const OVERRIDE { |
| 1600 out->append("{\"foo\":1}"); | 1626 out->append("{\"foo\":1}"); |
| 1601 } | 1627 } |
| 1602 | 1628 |
| 1603 private: | 1629 private: |
| 1604 DISALLOW_COPY_AND_ASSIGN(MyData); | 1630 DISALLOW_COPY_AND_ASSIGN(MyData); |
| 1605 }; | 1631 }; |
| 1606 | 1632 |
| 1607 TEST_F(TraceEventTestFixture, ConvertableTypes) { | 1633 TEST_F(TraceEventTestFixture, ConvertableTypes) { |
| 1608 ManualTestSetUp(); | 1634 ManualTestSetUp(); |
| 1609 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 1635 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
| 1636 TraceLog::RECORD_UNTIL_FULL); |
| 1610 | 1637 |
| 1611 scoped_ptr<MyData> data(new MyData()); | 1638 scoped_ptr<MyData> data(new MyData()); |
| 1612 TRACE_EVENT1("foo", "bar", "data", | 1639 TRACE_EVENT1("foo", "bar", "data", |
| 1613 data.PassAs<base::debug::ConvertableToTraceFormat>()); | 1640 data.PassAs<base::debug::ConvertableToTraceFormat>()); |
| 1614 EndTraceAndFlush(); | 1641 EndTraceAndFlush(); |
| 1615 | 1642 |
| 1616 DictionaryValue* dict = FindNamePhase("bar", "B"); | 1643 DictionaryValue* dict = FindNamePhase("bar", "B"); |
| 1617 ASSERT_TRUE(dict); | 1644 ASSERT_TRUE(dict); |
| 1618 | 1645 |
| 1619 const DictionaryValue* args_dict = NULL; | 1646 const DictionaryValue* args_dict = NULL; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1660 const unsigned char arg_types[], | 1687 const unsigned char arg_types[], |
| 1661 const unsigned long long arg_values[], | 1688 const unsigned long long arg_values[], |
| 1662 unsigned char flags) { | 1689 unsigned char flags) { |
| 1663 s_instance->collected_events_.push_back(name); | 1690 s_instance->collected_events_.push_back(name); |
| 1664 } | 1691 } |
| 1665 }; | 1692 }; |
| 1666 | 1693 |
| 1667 TraceEventCallbackTest* TraceEventCallbackTest::s_instance; | 1694 TraceEventCallbackTest* TraceEventCallbackTest::s_instance; |
| 1668 | 1695 |
| 1669 TEST_F(TraceEventCallbackTest, TraceEventCallback) { | 1696 TEST_F(TraceEventCallbackTest, TraceEventCallback) { |
| 1670 TRACE_EVENT_INSTANT0("all", "before enable", TRACE_EVENT_SCOPE_GLOBAL); | 1697 TRACE_EVENT_INSTANT0("all", "before enable", TRACE_EVENT_SCOPE_THREAD); |
| 1671 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 1698 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
| 1672 TRACE_EVENT_INSTANT0("all", "before callback set", TRACE_EVENT_SCOPE_GLOBAL); | 1699 TraceLog::RECORD_UNTIL_FULL); |
| 1700 TRACE_EVENT_INSTANT0("all", "before callback set", TRACE_EVENT_SCOPE_THREAD); |
| 1673 TraceLog::GetInstance()->SetEventCallback(Callback); | 1701 TraceLog::GetInstance()->SetEventCallback(Callback); |
| 1674 TRACE_EVENT_INSTANT0("all", "event1", TRACE_EVENT_SCOPE_GLOBAL); | 1702 TRACE_EVENT_INSTANT0("all", "event1", TRACE_EVENT_SCOPE_GLOBAL); |
| 1675 TRACE_EVENT_INSTANT0("all", "event2", TRACE_EVENT_SCOPE_GLOBAL); | 1703 TRACE_EVENT_INSTANT0("all", "event2", TRACE_EVENT_SCOPE_GLOBAL); |
| 1676 TraceLog::GetInstance()->SetEventCallback(NULL); | 1704 TraceLog::GetInstance()->SetEventCallback(NULL); |
| 1677 TRACE_EVENT_INSTANT0("all", "after callback removed", | 1705 TRACE_EVENT_INSTANT0("all", "after callback removed", |
| 1678 TRACE_EVENT_SCOPE_GLOBAL); | 1706 TRACE_EVENT_SCOPE_GLOBAL); |
| 1679 EXPECT_EQ(2u, collected_events_.size()); | 1707 EXPECT_EQ(2u, collected_events_.size()); |
| 1680 EXPECT_EQ("event1", collected_events_[0]); | 1708 EXPECT_EQ("event1", collected_events_[0]); |
| 1681 EXPECT_EQ("event2", collected_events_[1]); | 1709 EXPECT_EQ("event2", collected_events_[1]); |
| 1682 } | 1710 } |
| 1683 | 1711 |
| 1684 // TODO(dsinclair): Continuous Tracing unit test. | 1712 // TODO(dsinclair): Continuous Tracing unit test. |
| 1685 | 1713 |
| 1714 // Test the category filter. |
| 1715 TEST_F(TraceEventTestFixture, CategoryFilter) { |
| 1716 ManualTestSetUp(); |
| 1717 |
| 1718 // Using the default filter. |
| 1719 CategoryFilter default_cf = CategoryFilter( |
| 1720 CategoryFilter::kDefaultCategoryFilterString); |
| 1721 std::string category_filter_str = default_cf.ToString(); |
| 1722 EXPECT_STREQ("-*Debug,-*Test", category_filter_str.c_str()); |
| 1723 EXPECT_TRUE(default_cf.IsCategoryGroupEnabled("not-excluded-category")); |
| 1724 EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("Category1,CategoryDebug")); |
| 1725 EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("CategoryDebug,Category1")); |
| 1726 EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("CategoryTest,Category2")); |
| 1727 |
| 1728 // Make sure that upon an empty string, we fall back to the default filter. |
| 1729 default_cf = CategoryFilter(""); |
| 1730 category_filter_str = default_cf.ToString(); |
| 1731 EXPECT_STREQ("-*Debug,-*Test", category_filter_str.c_str()); |
| 1732 EXPECT_TRUE(default_cf.IsCategoryGroupEnabled("not-excluded-category")); |
| 1733 EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("Category1,CategoryDebug")); |
| 1734 EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("CategoryDebug,Category1")); |
| 1735 EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("CategoryTest,Category2")); |
| 1736 |
| 1737 // Using an arbitrary non-empty filter. |
| 1738 CategoryFilter cf("included,-excluded,inc_pattern*,-exc_pattern*"); |
| 1739 category_filter_str = cf.ToString(); |
| 1740 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", |
| 1741 category_filter_str.c_str()); |
| 1742 EXPECT_TRUE(cf.IsCategoryGroupEnabled("included")); |
| 1743 EXPECT_TRUE(cf.IsCategoryGroupEnabled("inc_pattern_category")); |
| 1744 EXPECT_FALSE(cf.IsCategoryGroupEnabled("exc_pattern_category")); |
| 1745 EXPECT_FALSE(cf.IsCategoryGroupEnabled("excluded")); |
| 1746 EXPECT_FALSE(cf.IsCategoryGroupEnabled("not-excluded-nor-included")); |
| 1747 EXPECT_FALSE(cf.IsCategoryGroupEnabled("Category1,CategoryDebug")); |
| 1748 EXPECT_FALSE(cf.IsCategoryGroupEnabled("CategoryDebug,Category1")); |
| 1749 EXPECT_FALSE(cf.IsCategoryGroupEnabled("CategoryTest,Category2")); |
| 1750 |
| 1751 cf.Merge(default_cf); |
| 1752 category_filter_str = cf.ToString(); |
| 1753 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*,-*Debug,-*Test", |
| 1754 category_filter_str.c_str()); |
| 1755 cf.Clear(); |
| 1756 EXPECT_FALSE(cf.HasIncludedPatterns()); |
| 1757 |
| 1758 CategoryFilter reconstructed_cf(category_filter_str); |
| 1759 category_filter_str = reconstructed_cf.ToString(); |
| 1760 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*,-*Debug,-*Test", |
| 1761 category_filter_str.c_str()); |
| 1762 |
| 1763 // One included category. |
| 1764 CategoryFilter one_inc_cf("only_inc_cat"); |
| 1765 category_filter_str = one_inc_cf.ToString(); |
| 1766 EXPECT_STREQ("only_inc_cat", category_filter_str.c_str()); |
| 1767 |
| 1768 // One excluded category. |
| 1769 CategoryFilter one_exc_cf("-only_exc_cat"); |
| 1770 category_filter_str = one_exc_cf.ToString(); |
| 1771 EXPECT_STREQ("-only_exc_cat", category_filter_str.c_str()); |
| 1772 |
| 1773 // Test that IsEmptyOrContainsLeadingOrTrailingWhitespace actually catches |
| 1774 // categories that are explicitly forbiden. |
| 1775 // This method is called in a DCHECK to assert that we don't have these types |
| 1776 // of strings as categories. |
| 1777 EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace( |
| 1778 " bad_category ")); |
| 1779 EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace( |
| 1780 " bad_category")); |
| 1781 EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace( |
| 1782 "bad_category ")); |
| 1783 EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace( |
| 1784 " bad_category")); |
| 1785 EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace( |
| 1786 "bad_category ")); |
| 1787 EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace( |
| 1788 " bad_category ")); |
| 1789 EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace( |
| 1790 "")); |
| 1791 EXPECT_FALSE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace( |
| 1792 "good_category")); |
| 1793 } |
| 1794 |
| 1686 } // namespace debug | 1795 } // namespace debug |
| 1687 } // namespace base | 1796 } // namespace base |
| OLD | NEW |