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 660 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
747 void HighResSleepForTraceTest(base::TimeDelta elapsed) { | 747 void HighResSleepForTraceTest(base::TimeDelta elapsed) { |
748 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed; | 748 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed; |
749 do { | 749 do { |
750 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); | 750 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); |
751 } while (base::TimeTicks::HighResNow() < end_time); | 751 } while (base::TimeTicks::HighResNow() < end_time); |
752 } | 752 } |
753 | 753 |
754 // Simple Test for emitting data and validating it was received. | 754 // Simple Test for emitting data and validating it was received. |
755 TEST_F(TraceEventTestFixture, DataCaptured) { | 755 TEST_F(TraceEventTestFixture, DataCaptured) { |
756 ManualTestSetUp(); | 756 ManualTestSetUp(); |
757 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 757 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
758 TraceLog::RECORD_UNTIL_FULL); | |
758 | 759 |
759 TraceWithAllMacroVariants(NULL); | 760 TraceWithAllMacroVariants(NULL); |
760 | 761 |
761 EndTraceAndFlush(); | 762 EndTraceAndFlush(); |
762 | 763 |
763 ValidateAllTraceMacrosCreatedData(trace_parsed_); | 764 ValidateAllTraceMacrosCreatedData(trace_parsed_); |
764 } | 765 } |
765 | 766 |
766 class MockEnabledStateChangedObserver : | 767 class MockEnabledStateChangedObserver : |
767 public base::debug::TraceLog::EnabledStateChangedObserver { | 768 public base::debug::TraceLog::EnabledStateChangedObserver { |
768 public: | 769 public: |
769 MOCK_METHOD0(OnTraceLogWillEnable, void()); | 770 MOCK_METHOD0(OnTraceLogWillEnable, void()); |
770 MOCK_METHOD0(OnTraceLogWillDisable, void()); | 771 MOCK_METHOD0(OnTraceLogWillDisable, void()); |
771 }; | 772 }; |
772 | 773 |
773 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) { | 774 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) { |
774 ManualTestSetUp(); | 775 ManualTestSetUp(); |
775 | 776 |
776 MockEnabledStateChangedObserver observer; | 777 MockEnabledStateChangedObserver observer; |
777 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 778 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
778 | 779 |
779 EXPECT_CALL(observer, OnTraceLogWillEnable()) | 780 EXPECT_CALL(observer, OnTraceLogWillEnable()) |
780 .Times(1); | 781 .Times(1); |
781 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 782 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
783 TraceLog::RECORD_UNTIL_FULL); | |
782 testing::Mock::VerifyAndClear(&observer); | 784 testing::Mock::VerifyAndClear(&observer); |
783 | 785 |
784 // Cleanup. | 786 // Cleanup. |
785 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 787 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
786 TraceLog::GetInstance()->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL); | 788 TraceLog::GetInstance()->SetDisabled(); |
787 } | 789 } |
788 | 790 |
789 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) { | 791 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) { |
790 ManualTestSetUp(); | 792 ManualTestSetUp(); |
791 | 793 |
792 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 794 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
795 TraceLog::RECORD_UNTIL_FULL); | |
793 | 796 |
794 testing::StrictMock<MockEnabledStateChangedObserver> observer; | 797 testing::StrictMock<MockEnabledStateChangedObserver> observer; |
795 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 798 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
796 | 799 |
797 EXPECT_CALL(observer, OnTraceLogWillEnable()) | 800 EXPECT_CALL(observer, OnTraceLogWillEnable()) |
798 .Times(0); | 801 .Times(0); |
799 EXPECT_CALL(observer, OnTraceLogWillDisable()) | 802 EXPECT_CALL(observer, OnTraceLogWillDisable()) |
800 .Times(0); | 803 .Times(0); |
801 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 804 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
805 TraceLog::RECORD_UNTIL_FULL); | |
802 testing::Mock::VerifyAndClear(&observer); | 806 testing::Mock::VerifyAndClear(&observer); |
803 | 807 |
804 // Cleanup. | 808 // Cleanup. |
805 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 809 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
806 TraceLog::GetInstance()->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL); | 810 TraceLog::GetInstance()->SetDisabled(); |
807 TraceLog::GetInstance()->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL); | 811 TraceLog::GetInstance()->SetDisabled(); |
808 } | 812 } |
809 | 813 |
810 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnNestedDisable) { | 814 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnNestedDisable) { |
811 ManualTestSetUp(); | 815 ManualTestSetUp(); |
812 | 816 |
813 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 817 CategoryFilter cf_inc_all("*"); |
814 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 818 TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); |
819 TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); | |
815 | 820 |
816 testing::StrictMock<MockEnabledStateChangedObserver> observer; | 821 testing::StrictMock<MockEnabledStateChangedObserver> observer; |
817 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 822 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
818 | 823 |
819 EXPECT_CALL(observer, OnTraceLogWillEnable()) | 824 EXPECT_CALL(observer, OnTraceLogWillEnable()) |
820 .Times(0); | 825 .Times(0); |
821 EXPECT_CALL(observer, OnTraceLogWillDisable()) | 826 EXPECT_CALL(observer, OnTraceLogWillDisable()) |
822 .Times(0); | 827 .Times(0); |
823 TraceLog::GetInstance()->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL); | 828 TraceLog::GetInstance()->SetDisabled(); |
824 testing::Mock::VerifyAndClear(&observer); | 829 testing::Mock::VerifyAndClear(&observer); |
825 | 830 |
826 // Cleanup. | 831 // Cleanup. |
827 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 832 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
828 TraceLog::GetInstance()->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL); | 833 TraceLog::GetInstance()->SetDisabled(); |
829 } | 834 } |
830 | 835 |
831 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) { | 836 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) { |
832 ManualTestSetUp(); | 837 ManualTestSetUp(); |
833 | 838 |
834 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 839 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
840 TraceLog::RECORD_UNTIL_FULL); | |
835 | 841 |
836 MockEnabledStateChangedObserver observer; | 842 MockEnabledStateChangedObserver observer; |
837 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 843 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
838 | 844 |
839 EXPECT_CALL(observer, OnTraceLogWillDisable()) | 845 EXPECT_CALL(observer, OnTraceLogWillDisable()) |
840 .Times(1); | 846 .Times(1); |
841 TraceLog::GetInstance()->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL); | 847 TraceLog::GetInstance()->SetDisabled(); |
842 testing::Mock::VerifyAndClear(&observer); | 848 testing::Mock::VerifyAndClear(&observer); |
843 | 849 |
844 // Cleanup. | 850 // Cleanup. |
845 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 851 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
846 } | 852 } |
847 | 853 |
848 // Test that categories work. | 854 // Test that categories work. |
849 TEST_F(TraceEventTestFixture, Categories) { | 855 TEST_F(TraceEventTestFixture, Categories) { |
850 ManualTestSetUp(); | 856 ManualTestSetUp(); |
851 | 857 |
852 // 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 |
853 // enabled or disabled when the trace event was encountered. | 859 // enabled or disabled when the trace event was encountered. |
854 TRACE_EVENT_INSTANT0("c1", "name"); | 860 TRACE_EVENT_INSTANT0("c1", "name"); |
855 TRACE_EVENT_INSTANT0("c2", "name"); | 861 TRACE_EVENT_INSTANT0("c2", "name"); |
856 BeginTrace(); | 862 BeginTrace(); |
857 TRACE_EVENT_INSTANT0("c3", "name"); | 863 TRACE_EVENT_INSTANT0("c3", "name"); |
858 TRACE_EVENT_INSTANT0("c4", "name"); | 864 TRACE_EVENT_INSTANT0("c4", "name"); |
865 //Category groups containing more than one category. | |
dsinclair
2013/03/12 21:27:24
nit: space after //
rterrazas
2013/03/20 08:48:49
Done.
| |
866 TRACE_EVENT_INSTANT0("c5,c6", "name"); | |
867 TRACE_EVENT_INSTANT0("c7,c8", "name"); | |
868 | |
859 EndTraceAndFlush(); | 869 EndTraceAndFlush(); |
860 std::vector<std::string> cats; | 870 std::vector<std::string> cat_groups; |
861 TraceLog::GetInstance()->GetKnownCategories(&cats); | 871 TraceLog::GetInstance()->GetKnownCategoryGroups(&cat_groups); |
862 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c1") != cats.end()); | 872 EXPECT_TRUE(std::find(cat_groups.begin(), |
863 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c2") != cats.end()); | 873 cat_groups.end(), "c1") != cat_groups.end()); |
864 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c3") != cats.end()); | 874 EXPECT_TRUE(std::find(cat_groups.begin(), |
865 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c4") != cats.end()); | 875 cat_groups.end(), "c2") != cat_groups.end()); |
876 EXPECT_TRUE(std::find(cat_groups.begin(), | |
877 cat_groups.end(), "c3") != cat_groups.end()); | |
878 EXPECT_TRUE(std::find(cat_groups.begin(), | |
879 cat_groups.end(), "c4") != cat_groups.end()); | |
880 EXPECT_TRUE(std::find(cat_groups.begin(), | |
881 cat_groups.end(), "c5,c6") != cat_groups.end()); | |
882 EXPECT_TRUE(std::find(cat_groups.begin(), | |
883 cat_groups.end(), "c7,c8") != cat_groups.end()); | |
866 | 884 |
867 const std::vector<std::string> empty_categories; | 885 const std::vector<std::string> empty_categories; |
868 std::vector<std::string> included_categories; | 886 std::vector<std::string> included_categories; |
869 std::vector<std::string> excluded_categories; | 887 std::vector<std::string> excluded_categories; |
870 | 888 |
871 // Test that category filtering works. | 889 // Test that category filtering works. |
872 | 890 |
873 // Include nonexistent category -> no events | 891 // Include nonexistent category -> no events |
874 Clear(); | 892 Clear(); |
875 included_categories.clear(); | 893 included_categories.clear(); |
876 included_categories.push_back("not_found823564786"); | 894 TraceLog::GetInstance()->SetEnabled(CategoryFilter("not_found823564786"), |
877 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories, | |
878 TraceLog::RECORD_UNTIL_FULL); | 895 TraceLog::RECORD_UNTIL_FULL); |
879 TRACE_EVENT_INSTANT0("cat1", "name"); | 896 TRACE_EVENT_INSTANT0("cat1", "name"); |
880 TRACE_EVENT_INSTANT0("cat2", "name"); | 897 TRACE_EVENT_INSTANT0("cat2", "name"); |
881 EndTraceAndFlush(); | 898 EndTraceAndFlush(); |
882 EXPECT_TRUE(trace_parsed_.empty()); | 899 EXPECT_TRUE(trace_parsed_.empty()); |
883 | 900 |
884 // Include existent category -> only events of that category | 901 // Include existent category -> only events of that category |
885 Clear(); | 902 Clear(); |
886 included_categories.clear(); | 903 included_categories.clear(); |
887 included_categories.push_back("inc"); | 904 TraceLog::GetInstance()->SetEnabled(CategoryFilter("inc"), |
888 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories, | |
889 TraceLog::RECORD_UNTIL_FULL); | 905 TraceLog::RECORD_UNTIL_FULL); |
890 TRACE_EVENT_INSTANT0("inc", "name"); | 906 TRACE_EVENT_INSTANT0("inc", "name"); |
891 TRACE_EVENT_INSTANT0("inc2", "name"); | 907 TRACE_EVENT_INSTANT0("inc2", "name"); |
892 EndTraceAndFlush(); | 908 EndTraceAndFlush(); |
893 EXPECT_TRUE(FindMatchingValue("cat", "inc")); | 909 EXPECT_TRUE(FindMatchingValue("cat", "inc")); |
894 EXPECT_FALSE(FindNonMatchingValue("cat", "inc")); | 910 EXPECT_FALSE(FindNonMatchingValue("cat", "inc")); |
895 | 911 |
896 // Include existent wildcard -> all categories matching wildcard | 912 // Include existent wildcard -> all categories matching wildcard |
897 Clear(); | 913 Clear(); |
898 included_categories.clear(); | 914 included_categories.clear(); |
899 included_categories.push_back("inc_wildcard_*"); | 915 TraceLog::GetInstance()->SetEnabled( |
900 included_categories.push_back("inc_wildchar_?_end"); | 916 CategoryFilter("inc_wildcard_*,inc_wildchar_?_end"), |
901 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories, | 917 TraceLog::RECORD_UNTIL_FULL); |
902 TraceLog::RECORD_UNTIL_FULL); | |
903 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included"); | 918 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included"); |
904 TRACE_EVENT_INSTANT0("inc_wildcard_", "included"); | 919 TRACE_EVENT_INSTANT0("inc_wildcard_", "included"); |
905 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included"); | 920 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included"); |
906 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc"); | 921 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc"); |
907 TRACE_EVENT_INSTANT0("cat1", "not_inc"); | 922 TRACE_EVENT_INSTANT0("cat1", "not_inc"); |
908 TRACE_EVENT_INSTANT0("cat2", "not_inc"); | 923 TRACE_EVENT_INSTANT0("cat2", "not_inc"); |
924 TRACE_EVENT_INSTANT0("inc_wildcard_category,other_category", "included"); | |
925 TRACE_EVENT_INSTANT0( | |
926 "non_included_category,inc_wildcard_category","included"); | |
909 EndTraceAndFlush(); | 927 EndTraceAndFlush(); |
910 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc")); | 928 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc")); |
911 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_")); | 929 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_")); |
912 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end")); | 930 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end")); |
913 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); | 931 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); |
932 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_category,other_category")); | |
933 EXPECT_TRUE(FindMatchingValue("cat", | |
934 "non_included_category,inc_wildcard_category")); | |
914 | 935 |
915 included_categories.clear(); | 936 included_categories.clear(); |
916 | 937 |
917 // Exclude nonexistent category -> all events | 938 // Exclude nonexistent category -> all events |
918 Clear(); | 939 Clear(); |
919 excluded_categories.clear(); | 940 TraceLog::GetInstance()->SetEnabled(CategoryFilter("-not_found823564786"), |
920 excluded_categories.push_back("not_found823564786"); | |
921 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories, | |
922 TraceLog::RECORD_UNTIL_FULL); | 941 TraceLog::RECORD_UNTIL_FULL); |
923 TRACE_EVENT_INSTANT0("cat1", "name"); | 942 TRACE_EVENT_INSTANT0("cat1", "name"); |
924 TRACE_EVENT_INSTANT0("cat2", "name"); | 943 TRACE_EVENT_INSTANT0("cat2", "name"); |
944 TRACE_EVENT_INSTANT0("category1,category2", "name"); | |
925 EndTraceAndFlush(); | 945 EndTraceAndFlush(); |
926 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); | 946 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); |
927 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); | 947 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); |
948 EXPECT_TRUE(FindMatchingValue("cat", "category1,category2")); | |
928 | 949 |
929 // Exclude existent category -> only events of other categories | 950 // Exclude existent category -> only events of other categories |
930 Clear(); | 951 Clear(); |
931 excluded_categories.clear(); | 952 TraceLog::GetInstance()->SetEnabled(CategoryFilter("-inc"), |
932 excluded_categories.push_back("inc"); | |
933 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories, | |
934 TraceLog::RECORD_UNTIL_FULL); | 953 TraceLog::RECORD_UNTIL_FULL); |
935 TRACE_EVENT_INSTANT0("inc", "name"); | 954 TRACE_EVENT_INSTANT0("inc", "name"); |
936 TRACE_EVENT_INSTANT0("inc2", "name"); | 955 TRACE_EVENT_INSTANT0("inc2", "name"); |
956 TRACE_EVENT_INSTANT0("inc2,inc", "name"); | |
957 TRACE_EVENT_INSTANT0("inc,inc2", "name"); | |
937 EndTraceAndFlush(); | 958 EndTraceAndFlush(); |
938 EXPECT_TRUE(FindMatchingValue("cat", "inc2")); | 959 EXPECT_TRUE(FindMatchingValue("cat", "inc2")); |
939 EXPECT_FALSE(FindMatchingValue("cat", "inc")); | 960 EXPECT_FALSE(FindMatchingValue("cat", "inc")); |
961 EXPECT_FALSE(FindMatchingValue("cat", "inc2,inc")); | |
962 EXPECT_FALSE(FindMatchingValue("cat", "inc,inc2")); | |
940 | 963 |
941 // Exclude existent wildcard -> all categories not matching wildcard | 964 // Exclude existent wildcard -> all categories not matching wildcard |
942 Clear(); | 965 Clear(); |
943 excluded_categories.clear(); | 966 TraceLog::GetInstance()->SetEnabled( |
944 excluded_categories.push_back("inc_wildcard_*"); | 967 CategoryFilter("-inc_wildcard_*,-inc_wildchar_?_end"), |
945 excluded_categories.push_back("inc_wildchar_?_end"); | 968 TraceLog::RECORD_UNTIL_FULL); |
946 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories, | |
947 TraceLog::RECORD_UNTIL_FULL); | |
948 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc"); | 969 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc"); |
949 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc"); | 970 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc"); |
950 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc"); | 971 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc"); |
951 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included"); | 972 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included"); |
952 TRACE_EVENT_INSTANT0("cat1", "included"); | 973 TRACE_EVENT_INSTANT0("cat1", "included"); |
953 TRACE_EVENT_INSTANT0("cat2", "included"); | 974 TRACE_EVENT_INSTANT0("cat2", "included"); |
954 EndTraceAndFlush(); | 975 EndTraceAndFlush(); |
955 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_bla_end")); | 976 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_bla_end")); |
956 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); | 977 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); |
957 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); | 978 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); |
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1470 TRACE_EVENT_INSTANT1("category", "test", "a", a++); | 1491 TRACE_EVENT_INSTANT1("category", "test", "a", a++); |
1471 EXPECT_EQ(1, a); | 1492 EXPECT_EQ(1, a); |
1472 | 1493 |
1473 EndTraceAndFlush(); | 1494 EndTraceAndFlush(); |
1474 } | 1495 } |
1475 | 1496 |
1476 TEST_F(TraceEventTestFixture, TraceEnableDisable) { | 1497 TEST_F(TraceEventTestFixture, TraceEnableDisable) { |
1477 ManualTestSetUp(); | 1498 ManualTestSetUp(); |
1478 | 1499 |
1479 TraceLog* trace_log = TraceLog::GetInstance(); | 1500 TraceLog* trace_log = TraceLog::GetInstance(); |
1480 trace_log->SetEnabled(std::string(), TraceLog::RECORD_UNTIL_FULL); | 1501 CategoryFilter cf_inc_all("*"); |
1502 trace_log->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); | |
1481 EXPECT_TRUE(trace_log->IsEnabled()); | 1503 EXPECT_TRUE(trace_log->IsEnabled()); |
1482 trace_log->SetDisabled(); | 1504 trace_log->SetDisabled(); |
1483 EXPECT_FALSE(trace_log->IsEnabled()); | 1505 EXPECT_FALSE(trace_log->IsEnabled()); |
1484 | 1506 |
1485 trace_log->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 1507 trace_log->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); |
1486 EXPECT_TRUE(trace_log->IsEnabled()); | 1508 EXPECT_TRUE(trace_log->IsEnabled()); |
1487 const std::vector<std::string> empty; | 1509 const std::vector<std::string> empty; |
1488 trace_log->SetEnabled(empty, empty, TraceLog::RECORD_UNTIL_FULL); | 1510 trace_log->SetEnabled(CategoryFilter(""), TraceLog::RECORD_UNTIL_FULL); |
1489 EXPECT_TRUE(trace_log->IsEnabled()); | 1511 EXPECT_TRUE(trace_log->IsEnabled()); |
1490 trace_log->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL); | 1512 trace_log->SetDisabled(); |
1491 EXPECT_TRUE(trace_log->IsEnabled()); | 1513 EXPECT_TRUE(trace_log->IsEnabled()); |
1492 trace_log->SetDisabled(); | 1514 trace_log->SetDisabled(); |
1493 EXPECT_FALSE(trace_log->IsEnabled()); | 1515 EXPECT_FALSE(trace_log->IsEnabled()); |
1494 } | 1516 } |
1495 | 1517 |
1496 TEST_F(TraceEventTestFixture, TraceCategoriesAfterNestedEnable) { | 1518 TEST_F(TraceEventTestFixture, TraceCategoriesAfterNestedEnable) { |
1497 ManualTestSetUp(); | 1519 ManualTestSetUp(); |
1498 | 1520 |
1499 TraceLog* trace_log = TraceLog::GetInstance(); | 1521 TraceLog* trace_log = TraceLog::GetInstance(); |
1500 trace_log->SetEnabled(std::string("foo,bar"), TraceLog::RECORD_UNTIL_FULL); | 1522 trace_log->SetEnabled(CategoryFilter("foo,bar"), TraceLog::RECORD_UNTIL_FULL); |
1501 EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo")); | 1523 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); |
1502 EXPECT_TRUE(*trace_log->GetCategoryEnabled("bar")); | 1524 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar")); |
1503 EXPECT_FALSE(*trace_log->GetCategoryEnabled("baz")); | 1525 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); |
1504 trace_log->SetEnabled(std::string("foo2"), TraceLog::RECORD_UNTIL_FULL); | 1526 trace_log->SetEnabled(CategoryFilter("foo2"), TraceLog::RECORD_UNTIL_FULL); |
1505 EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo2")); | 1527 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo2")); |
1506 EXPECT_FALSE(*trace_log->GetCategoryEnabled("baz")); | 1528 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); |
1507 trace_log->SetEnabled(std::string(""), TraceLog::RECORD_UNTIL_FULL); | 1529 trace_log->SetEnabled(CategoryFilter(""), TraceLog::RECORD_UNTIL_FULL); |
1508 EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo")); | 1530 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); |
1509 EXPECT_TRUE(*trace_log->GetCategoryEnabled("baz")); | 1531 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); |
1510 trace_log->SetDisabled(); | 1532 trace_log->SetDisabled(); |
1511 trace_log->SetDisabled(); | 1533 trace_log->SetDisabled(); |
1512 trace_log->SetDisabled(); | 1534 trace_log->SetDisabled(); |
1513 EXPECT_FALSE(*trace_log->GetCategoryEnabled("foo")); | 1535 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo")); |
1514 EXPECT_FALSE(*trace_log->GetCategoryEnabled("baz")); | 1536 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); |
1515 | 1537 |
1516 trace_log->SetEnabled(std::string("-foo,-bar"), TraceLog::RECORD_UNTIL_FULL); | 1538 trace_log->SetEnabled(CategoryFilter("-foo,-bar"), |
1517 EXPECT_FALSE(*trace_log->GetCategoryEnabled("foo")); | 1539 TraceLog::RECORD_UNTIL_FULL); |
1518 EXPECT_TRUE(*trace_log->GetCategoryEnabled("baz")); | 1540 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo")); |
1519 trace_log->SetEnabled(std::string("moo"), TraceLog::RECORD_UNTIL_FULL); | 1541 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); |
1520 EXPECT_TRUE(*trace_log->GetCategoryEnabled("baz")); | 1542 trace_log->SetEnabled(CategoryFilter("moo"), TraceLog::RECORD_UNTIL_FULL); |
1521 EXPECT_TRUE(*trace_log->GetCategoryEnabled("moo")); | 1543 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); |
1522 EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo")); | 1544 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("moo")); |
1545 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); | |
1523 trace_log->SetDisabled(); | 1546 trace_log->SetDisabled(); |
1524 trace_log->SetDisabled(); | 1547 trace_log->SetDisabled(); |
1525 } | 1548 } |
1526 | 1549 |
1527 TEST_F(TraceEventTestFixture, TraceOptionsParsing) { | 1550 TEST_F(TraceEventTestFixture, TraceOptionsParsing) { |
1528 ManualTestSetUp(); | 1551 ManualTestSetUp(); |
1529 | 1552 |
1530 EXPECT_EQ(TraceLog::RECORD_UNTIL_FULL, TraceLog::TraceOptionsFromString("")); | 1553 EXPECT_EQ(TraceLog::RECORD_UNTIL_FULL, TraceLog::TraceOptionsFromString("")); |
1531 | 1554 |
1532 EXPECT_EQ(TraceLog::RECORD_UNTIL_FULL, | 1555 EXPECT_EQ(TraceLog::RECORD_UNTIL_FULL, |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1587 const unsigned long long arg_values[], | 1610 const unsigned long long arg_values[], |
1588 unsigned char flags) { | 1611 unsigned char flags) { |
1589 s_instance->collected_events_.push_back(name); | 1612 s_instance->collected_events_.push_back(name); |
1590 } | 1613 } |
1591 }; | 1614 }; |
1592 | 1615 |
1593 TraceEventCallbackTest* TraceEventCallbackTest::s_instance; | 1616 TraceEventCallbackTest* TraceEventCallbackTest::s_instance; |
1594 | 1617 |
1595 TEST_F(TraceEventCallbackTest, TraceEventCallback) { | 1618 TEST_F(TraceEventCallbackTest, TraceEventCallback) { |
1596 TRACE_EVENT_INSTANT0("all", "before enable"); | 1619 TRACE_EVENT_INSTANT0("all", "before enable"); |
1597 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 1620 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
1621 TraceLog::RECORD_UNTIL_FULL); | |
1598 TRACE_EVENT_INSTANT0("all", "before callback set"); | 1622 TRACE_EVENT_INSTANT0("all", "before callback set"); |
1599 TraceLog::GetInstance()->SetEventCallback(Callback); | 1623 TraceLog::GetInstance()->SetEventCallback(Callback); |
1600 TRACE_EVENT_INSTANT0("all", "event1"); | 1624 TRACE_EVENT_INSTANT0("all", "event1"); |
1601 TRACE_EVENT_INSTANT0("all", "event2"); | 1625 TRACE_EVENT_INSTANT0("all", "event2"); |
1602 TraceLog::GetInstance()->SetEventCallback(NULL); | 1626 TraceLog::GetInstance()->SetEventCallback(NULL); |
1603 TRACE_EVENT_INSTANT0("all", "after callback removed"); | 1627 TRACE_EVENT_INSTANT0("all", "after callback removed"); |
1604 EXPECT_EQ(2u, collected_events_.size()); | 1628 EXPECT_EQ(2u, collected_events_.size()); |
1605 EXPECT_EQ("event1", collected_events_[0]); | 1629 EXPECT_EQ("event1", collected_events_[0]); |
1606 EXPECT_EQ("event2", collected_events_[1]); | 1630 EXPECT_EQ("event2", collected_events_[1]); |
1607 } | 1631 } |
1608 | 1632 |
1633 // Test the category filter. | |
1634 TEST_F(TraceEventTestFixture, CategoryFilter) { | |
1635 ManualTestSetUp(); | |
1636 | |
1637 | |
dsinclair
2013/03/12 21:27:24
Nit: extra blank line.
rterrazas
2013/03/20 08:48:49
Done.
| |
1638 // Using the default filter. | |
1639 CategoryFilter default_cf = CategoryFilter(); | |
1640 std::string category_filter_str = default_cf.ToString(); | |
1641 EXPECT_STREQ("-*Debug,-*Test", category_filter_str.c_str()); | |
1642 EXPECT_TRUE(default_cf.IsCategoryGroupEnabled("not-excluded-category")); | |
1643 EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("Category1,CategoryDebug")); | |
1644 EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("CategoryDebug,Category1")); | |
1645 EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("CategoryTest,Category2")); | |
1646 | |
1647 // Make sure that upon an empty string, we fall back to the default filter. | |
1648 default_cf = CategoryFilter(""); | |
1649 category_filter_str = default_cf.ToString(); | |
1650 EXPECT_STREQ("-*Debug,-*Test", category_filter_str.c_str()); | |
1651 EXPECT_TRUE(default_cf.IsCategoryGroupEnabled("not-excluded-category")); | |
1652 EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("Category1,CategoryDebug")); | |
1653 EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("CategoryDebug,Category1")); | |
1654 EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("CategoryTest,Category2")); | |
1655 | |
1656 // Using an arbitrary non-empty filter. | |
1657 CategoryFilter cf("included,-excluded,inc_pattern*,-exc_pattern*"); | |
dsinclair
2013/03/12 21:27:24
Can you add some spacing in here to make sure the
rterrazas
2013/03/20 08:48:49
Actually, I had whitespace trimming in another cha
| |
1658 category_filter_str = cf.ToString(); | |
1659 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", | |
1660 category_filter_str.c_str()); | |
1661 EXPECT_TRUE(cf.IsCategoryGroupEnabled("included")); | |
1662 EXPECT_TRUE(cf.IsCategoryGroupEnabled("inc_pattern_category")); | |
1663 EXPECT_FALSE(cf.IsCategoryGroupEnabled("exc_pattern_category")); | |
1664 EXPECT_FALSE(cf.IsCategoryGroupEnabled("excluded")); | |
1665 EXPECT_FALSE(cf.IsCategoryGroupEnabled("not-excluded-nor-included")); | |
1666 EXPECT_FALSE(cf.IsCategoryGroupEnabled("Category1,CategoryDebug")); | |
1667 EXPECT_FALSE(cf.IsCategoryGroupEnabled("CategoryDebug,Category1")); | |
1668 EXPECT_FALSE(cf.IsCategoryGroupEnabled("CategoryTest,Category2")); | |
1669 | |
1670 cf.Merge(default_cf); | |
1671 category_filter_str = cf.ToString(); | |
1672 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*,-*Debug,-*Test", | |
1673 category_filter_str.c_str()); | |
1674 cf.Clear(); | |
1675 EXPECT_FALSE(cf.HasAllowedPatterns()); | |
1676 | |
1677 CategoryFilter reconstructed_cf(category_filter_str); | |
1678 category_filter_str = reconstructed_cf.ToString(); | |
1679 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*,-*Debug,-*Test", | |
1680 category_filter_str.c_str()); | |
1681 | |
1682 // One included category. | |
1683 CategoryFilter one_inc_cf("only_inc_cat"); | |
1684 category_filter_str = one_inc_cf.ToString(); | |
1685 EXPECT_STREQ("only_inc_cat", category_filter_str.c_str()); | |
1686 | |
1687 // One excluded category. | |
1688 CategoryFilter one_exc_cf("-only_exc_cat"); | |
1689 category_filter_str = one_exc_cf.ToString(); | |
1690 EXPECT_STREQ("-only_exc_cat", category_filter_str.c_str()); | |
1691 } | |
1692 | |
1609 } // namespace debug | 1693 } // namespace debug |
1610 } // namespace base | 1694 } // namespace base |
OLD | NEW |