| 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 |