| Index: base/trace_event/trace_config_unittest.cc
|
| diff --git a/base/trace_event/trace_config_unittest.cc b/base/trace_event/trace_config_unittest.cc
|
| index b6503f5e907e2c539cf487205801046e661f8e66..0fbc7f2c5037a5b2843490a53cb166df33360738 100644
|
| --- a/base/trace_event/trace_config_unittest.cc
|
| +++ b/base/trace_event/trace_config_unittest.cc
|
| @@ -21,7 +21,6 @@ const char kDefaultTraceConfigString[] =
|
| "\"enable_argument_filter\":false,"
|
| "\"enable_sampling\":false,"
|
| "\"enable_systrace\":false,"
|
| - "\"excluded_categories\":[\"*Debug\",\"*Test\"],"
|
| "\"record_mode\":\"record-until-full\""
|
| "}";
|
|
|
| @@ -48,6 +47,24 @@ const char kCustomTraceConfigString[] =
|
| "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]"
|
| "}";
|
|
|
| +void CheckDefaultTraceConfigBehavior(const TraceConfig& tc) {
|
| + EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode());
|
| + EXPECT_FALSE(tc.IsSamplingEnabled());
|
| + EXPECT_FALSE(tc.IsSystraceEnabled());
|
| + EXPECT_FALSE(tc.IsArgumentFilterEnabled());
|
| +
|
| + // Default trace config enables every category filter except the
|
| + // disabled-by-default-* ones.
|
| + EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1"));
|
| + EXPECT_TRUE(tc.IsCategoryGroupEnabled("not-excluded-category"));
|
| + EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-cc"));
|
| +
|
| + EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1,not-excluded-category"));
|
| + EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1,disabled-by-default-cc"));
|
| + EXPECT_FALSE(tc.IsCategoryGroupEnabled(
|
| + "disabled-by-default-cc,disabled-by-default-cc2"));
|
| +}
|
| +
|
| } // namespace
|
|
|
| TEST(TraceConfigTest, TraceConfigFromValidLegacyFormat) {
|
| @@ -155,9 +172,6 @@ TEST(TraceConfigTest, TraceConfigFromValidLegacyFormat) {
|
| config.ToTraceOptionsString().c_str());
|
|
|
| // From category filter strings
|
| - config = TraceConfig("-*Debug,-*Test", "");
|
| - EXPECT_STREQ("-*Debug,-*Test", config.ToCategoryFilterString().c_str());
|
| -
|
| config = TraceConfig("included,-excluded,inc_pattern*,-exc_pattern*", "");
|
| EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*",
|
| config.ToCategoryFilterString().c_str());
|
| @@ -257,38 +271,60 @@ TEST(TraceConfigTest, TraceConfigFromInvalidLegacyStrings) {
|
| }
|
|
|
| TEST(TraceConfigTest, ConstructDefaultTraceConfig) {
|
| - // Make sure that upon an empty string, we fall back to the default config.
|
| TraceConfig tc;
|
| + EXPECT_STREQ("", tc.ToCategoryFilterString().c_str());
|
| EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str());
|
| - EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode());
|
| - EXPECT_FALSE(tc.IsSamplingEnabled());
|
| - EXPECT_FALSE(tc.IsSystraceEnabled());
|
| - EXPECT_FALSE(tc.IsArgumentFilterEnabled());
|
| - EXPECT_STREQ("-*Debug,-*Test", tc.ToCategoryFilterString().c_str());
|
| + CheckDefaultTraceConfigBehavior(tc);
|
| +
|
| + // Constructors from category filter string and trace option string.
|
| + TraceConfig tc_asterisk("*", "");
|
| + EXPECT_STREQ("*", tc_asterisk.ToCategoryFilterString().c_str());
|
| + CheckDefaultTraceConfigBehavior(tc_asterisk);
|
| +
|
| + TraceConfig tc_empty_category_filter("", "");
|
| + EXPECT_STREQ("", tc_empty_category_filter.ToCategoryFilterString().c_str());
|
| + EXPECT_STREQ(kDefaultTraceConfigString,
|
| + tc_empty_category_filter.ToString().c_str());
|
| + CheckDefaultTraceConfigBehavior(tc_empty_category_filter);
|
| +
|
| + // Constructor from JSON formated config string.
|
| + TraceConfig tc_empty_json_string("");
|
| + EXPECT_STREQ("", tc_empty_json_string.ToCategoryFilterString().c_str());
|
| + EXPECT_STREQ(kDefaultTraceConfigString,
|
| + tc_empty_json_string.ToString().c_str());
|
| + CheckDefaultTraceConfigBehavior(tc_empty_json_string);
|
| +
|
| + // Constructor from dictionary value.
|
| + DictionaryValue dict;
|
| + TraceConfig tc_dict(dict);
|
| + EXPECT_STREQ("", tc_dict.ToCategoryFilterString().c_str());
|
| + EXPECT_STREQ(kDefaultTraceConfigString, tc_dict.ToString().c_str());
|
| + CheckDefaultTraceConfigBehavior(tc_dict);
|
| +}
|
|
|
| - EXPECT_FALSE(tc.IsCategoryEnabled("Category1"));
|
| - EXPECT_FALSE(tc.IsCategoryEnabled("not-excluded-category"));
|
| - EXPECT_FALSE(tc.IsCategoryEnabled("CategoryTest"));
|
| - EXPECT_FALSE(tc.IsCategoryEnabled("CategoryDebug"));
|
| - EXPECT_FALSE(tc.IsCategoryEnabled("disabled-by-default-cc"));
|
| +TEST(TraceConfigTest, EmptyAndAsteriskCategoryFilterString) {
|
| + TraceConfig tc_empty("", "");
|
| + TraceConfig tc_asterisk("*", "");
|
|
|
| - EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1"));
|
| - EXPECT_TRUE(tc.IsCategoryGroupEnabled("not-excluded-category"));
|
| - EXPECT_FALSE(tc.IsCategoryGroupEnabled("CategoryTest"));
|
| - EXPECT_FALSE(tc.IsCategoryGroupEnabled("CategoryDebug"));
|
| - EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-cc"));
|
| + EXPECT_STREQ("", tc_empty.ToCategoryFilterString().c_str());
|
| + EXPECT_STREQ("*", tc_asterisk.ToCategoryFilterString().c_str());
|
| +
|
| + // Both fall back to default config.
|
| + CheckDefaultTraceConfigBehavior(tc_empty);
|
| + CheckDefaultTraceConfigBehavior(tc_asterisk);
|
|
|
| - EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1,CategoryDebug"));
|
| - EXPECT_TRUE(tc.IsCategoryGroupEnabled("CategoryDebug,Category1"));
|
| - EXPECT_TRUE(tc.IsCategoryGroupEnabled("CategoryTest,not-excluded-category"));
|
| - EXPECT_FALSE(tc.IsCategoryGroupEnabled("CategoryDebug,CategoryTest"));
|
| + // They differ only for internal checking.
|
| + EXPECT_FALSE(tc_empty.IsCategoryEnabled("Category1"));
|
| + EXPECT_FALSE(tc_empty.IsCategoryEnabled("not-excluded-category"));
|
| + EXPECT_TRUE(tc_asterisk.IsCategoryEnabled("Category1"));
|
| + EXPECT_TRUE(tc_asterisk.IsCategoryEnabled("not-excluded-category"));
|
| }
|
|
|
| TEST(TraceConfigTest, TraceConfigFromDict) {
|
| - // Passing in empty dictionary will not result in default trace config.
|
| + // Passing in empty dictionary will result in default trace config.
|
| DictionaryValue dict;
|
| TraceConfig tc(dict);
|
| - EXPECT_STRNE(kDefaultTraceConfigString, tc.ToString().c_str());
|
| + EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str());
|
| EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode());
|
| EXPECT_FALSE(tc.IsSamplingEnabled());
|
| EXPECT_FALSE(tc.IsSystraceEnabled());
|
| @@ -307,7 +343,7 @@ TEST(TraceConfigTest, TraceConfigFromDict) {
|
| EXPECT_FALSE(default_tc.IsSamplingEnabled());
|
| EXPECT_FALSE(default_tc.IsSystraceEnabled());
|
| EXPECT_FALSE(default_tc.IsArgumentFilterEnabled());
|
| - EXPECT_STREQ("-*Debug,-*Test", default_tc.ToCategoryFilterString().c_str());
|
| + EXPECT_STREQ("", default_tc.ToCategoryFilterString().c_str());
|
|
|
| std::unique_ptr<Value> custom_value(
|
| JSONReader::Read(kCustomTraceConfigString));
|
| @@ -405,7 +441,8 @@ TEST(TraceConfigTest, TraceConfigFromInvalidString) {
|
| EXPECT_FALSE(tc.IsSamplingEnabled());
|
| EXPECT_FALSE(tc.IsSystraceEnabled());
|
| EXPECT_FALSE(tc.IsArgumentFilterEnabled());
|
| - EXPECT_STREQ("-*Debug,-*Test", tc.ToCategoryFilterString().c_str());
|
| + EXPECT_STREQ("", tc.ToCategoryFilterString().c_str());
|
| + CheckDefaultTraceConfigBehavior(tc);
|
|
|
| tc = TraceConfig("This is an invalid config string.");
|
| EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str());
|
| @@ -413,7 +450,8 @@ TEST(TraceConfigTest, TraceConfigFromInvalidString) {
|
| EXPECT_FALSE(tc.IsSamplingEnabled());
|
| EXPECT_FALSE(tc.IsSystraceEnabled());
|
| EXPECT_FALSE(tc.IsArgumentFilterEnabled());
|
| - EXPECT_STREQ("-*Debug,-*Test", tc.ToCategoryFilterString().c_str());
|
| + EXPECT_STREQ("", tc.ToCategoryFilterString().c_str());
|
| + CheckDefaultTraceConfigBehavior(tc);
|
|
|
| tc = TraceConfig("[\"This\", \"is\", \"not\", \"a\", \"dictionary\"]");
|
| EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str());
|
| @@ -421,7 +459,8 @@ TEST(TraceConfigTest, TraceConfigFromInvalidString) {
|
| EXPECT_FALSE(tc.IsSamplingEnabled());
|
| EXPECT_FALSE(tc.IsSystraceEnabled());
|
| EXPECT_FALSE(tc.IsArgumentFilterEnabled());
|
| - EXPECT_STREQ("-*Debug,-*Test", tc.ToCategoryFilterString().c_str());
|
| + EXPECT_STREQ("", tc.ToCategoryFilterString().c_str());
|
| + CheckDefaultTraceConfigBehavior(tc);
|
|
|
| tc = TraceConfig("{\"record_mode\": invalid-value-needs-double-quote}");
|
| EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str());
|
| @@ -429,7 +468,8 @@ TEST(TraceConfigTest, TraceConfigFromInvalidString) {
|
| EXPECT_FALSE(tc.IsSamplingEnabled());
|
| EXPECT_FALSE(tc.IsSystraceEnabled());
|
| EXPECT_FALSE(tc.IsArgumentFilterEnabled());
|
| - EXPECT_STREQ("-*Debug,-*Test", tc.ToCategoryFilterString().c_str());
|
| + EXPECT_STREQ("", tc.ToCategoryFilterString().c_str());
|
| + CheckDefaultTraceConfigBehavior(tc);
|
|
|
| // If the config string a dictionary formatted as a JSON string, it will
|
| // initialize TraceConfig with best effort.
|
| @@ -439,6 +479,7 @@ TEST(TraceConfigTest, TraceConfigFromInvalidString) {
|
| EXPECT_FALSE(tc.IsSystraceEnabled());
|
| EXPECT_FALSE(tc.IsArgumentFilterEnabled());
|
| EXPECT_STREQ("", tc.ToCategoryFilterString().c_str());
|
| + CheckDefaultTraceConfigBehavior(tc);
|
|
|
| tc = TraceConfig("{\"arbitrary-key\":\"arbitrary-value\"}");
|
| EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode());
|
| @@ -446,6 +487,7 @@ TEST(TraceConfigTest, TraceConfigFromInvalidString) {
|
| EXPECT_FALSE(tc.IsSystraceEnabled());
|
| EXPECT_FALSE(tc.IsArgumentFilterEnabled());
|
| EXPECT_STREQ("", tc.ToCategoryFilterString().c_str());
|
| + CheckDefaultTraceConfigBehavior(tc);
|
|
|
| const char invalid_config_string[] =
|
| "{"
|
| @@ -487,9 +529,7 @@ TEST(TraceConfigTest, MergingTraceConfigs) {
|
| "\"enable_argument_filter\":false,"
|
| "\"enable_sampling\":false,"
|
| "\"enable_systrace\":false,"
|
| - "\"excluded_categories\":["
|
| - "\"*Debug\",\"*Test\",\"excluded\",\"exc_pattern*\""
|
| - "],"
|
| + "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"],"
|
| "\"record_mode\":\"record-until-full\""
|
| "}",
|
| tc.ToString().c_str());
|
|
|