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

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 review comments + a few improvements. Created 7 years, 10 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 621 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698