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