Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(450)

Side by Side Diff: base/debug/trace_event_unittest.cc

Issue 12150004: Category group support/Renamings. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fixed comment, added better support for default filtering, fixed merge issues. Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698