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 |