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 4b46b2fefdd102ae94af0e553901a0f512a51139..fa4fa7c3e05e5845c893018320a29caba2ec4605 100644 |
--- a/base/trace_event/trace_config_unittest.cc |
+++ b/base/trace_event/trace_config_unittest.cc |
@@ -5,6 +5,7 @@ |
#include <stddef.h> |
#include "base/json/json_reader.h" |
+#include "base/json/json_writer.h" |
#include "base/macros.h" |
#include "base/trace_event/memory_dump_manager.h" |
#include "base/trace_event/trace_config.h" |
@@ -25,28 +26,36 @@ const char kDefaultTraceConfigString[] = |
"}"; |
const char kCustomTraceConfigString[] = |
- "{" |
+ "{" |
"\"enable_argument_filter\":true," |
"\"enable_sampling\":true," |
"\"enable_systrace\":true," |
+ "\"event_filters\":[" |
+ "{" |
+ "\"excluded_categories\":[\"unfiltered_cat\"]," |
+ "\"filter_args\":{\"event_name_whitelist\":[\"a snake\",\"a dog\"]}," |
+ "\"filter_predicate\":\"event_whitelist_predicate\"," |
+ "\"included_categories\":[\"*\"]" |
+ "}" |
+ "]," |
"\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," |
"\"included_categories\":[\"included\"," |
- "\"inc_pattern*\"," |
- "\"disabled-by-default-cc\"," |
- "\"disabled-by-default-memory-infra\"]," |
+ "\"inc_pattern*\"," |
+ "\"disabled-by-default-cc\"," |
+ "\"disabled-by-default-memory-infra\"]," |
"\"memory_dump_config\":{" |
- "\"allowed_dump_modes\":[\"background\",\"light\",\"detailed\"]," |
- "\"heap_profiler_options\":{" |
- "\"breakdown_threshold_bytes\":10240" |
- "}," |
- "\"triggers\":[" |
- "{\"mode\":\"light\",\"periodic_interval_ms\":50}," |
- "{\"mode\":\"detailed\",\"periodic_interval_ms\":1000}" |
- "]" |
+ "\"allowed_dump_modes\":[\"background\",\"light\",\"detailed\"]," |
+ "\"heap_profiler_options\":{" |
+ "\"breakdown_threshold_bytes\":10240" |
+ "}," |
+ "\"triggers\":[" |
+ "{\"mode\":\"light\",\"periodic_interval_ms\":50}," |
+ "{\"mode\":\"detailed\",\"periodic_interval_ms\":1000}" |
+ "]" |
"}," |
"\"record_mode\":\"record-continuously\"," |
"\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]" |
- "}"; |
+ "}"; |
void CheckDefaultTraceConfigBehavior(const TraceConfig& tc) { |
EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
@@ -330,6 +339,7 @@ TEST(TraceConfigTest, DisabledByDefaultCategoryFilterString) { |
EXPECT_FALSE(tc.IsCategoryGroupEnabled("bar")); |
EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-bar")); |
+ EXPECT_TRUE(tc.event_filters().empty()); |
// Enabling only the disabled-by-default-* category means the default ones |
// are also enabled. |
tc = TraceConfig("disabled-by-default-foo", ""); |
@@ -387,17 +397,25 @@ TEST(TraceConfigTest, TraceConfigFromDict) { |
TEST(TraceConfigTest, TraceConfigFromValidString) { |
// Using some non-empty config string. |
const char config_string[] = |
- "{" |
+ "{" |
"\"enable_argument_filter\":true," |
"\"enable_sampling\":true," |
"\"enable_systrace\":true," |
+ "\"event_filters\":[" |
+ "{" |
+ "\"excluded_categories\":[\"unfiltered_cat\"]," |
+ "\"filter_args\":{\"event_name_whitelist\":[\"a snake\",\"a dog\"]}," |
+ "\"filter_predicate\":\"event_whitelist_predicate\"," |
+ "\"included_categories\":[\"*\"]" |
+ "}" |
+ "]," |
"\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," |
"\"included_categories\":[\"included\"," |
- "\"inc_pattern*\"," |
- "\"disabled-by-default-cc\"]," |
+ "\"inc_pattern*\"," |
+ "\"disabled-by-default-cc\"]," |
"\"record_mode\":\"record-continuously\"," |
"\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]" |
- "}"; |
+ "}"; |
TraceConfig tc(config_string); |
EXPECT_STREQ(config_string, tc.ToString().c_str()); |
@@ -434,6 +452,21 @@ TEST(TraceConfigTest, TraceConfigFromValidString) { |
EXPECT_STREQ("test.Delay1;16", tc.GetSyntheticDelayValues()[0].c_str()); |
EXPECT_STREQ("test.Delay2;32", tc.GetSyntheticDelayValues()[1].c_str()); |
+ EXPECT_EQ(tc.event_filters().size(), 1u); |
+ const TraceConfig::EventFilterConfig& event_filter = tc.event_filters()[0]; |
+ EXPECT_STREQ("event_whitelist_predicate", |
+ event_filter.predicate_name().c_str()); |
+ EXPECT_EQ(1u, event_filter.included_categories().size()); |
+ EXPECT_STREQ("*", event_filter.included_categories()[0].c_str()); |
+ EXPECT_EQ(1u, event_filter.excluded_categories().size()); |
+ EXPECT_STREQ("unfiltered_cat", event_filter.excluded_categories()[0].c_str()); |
+ EXPECT_TRUE(event_filter.filter_args()); |
+ |
+ std::string json_out; |
+ base::JSONWriter::Write(*event_filter.filter_args(), &json_out); |
+ EXPECT_STREQ(json_out.c_str(), |
+ "{\"event_name_whitelist\":[\"a snake\",\"a dog\"]}"); |
+ |
const char config_string_2[] = "{\"included_categories\":[\"*\"]}"; |
TraceConfig tc2(config_string_2); |
EXPECT_TRUE(tc2.IsCategoryEnabled("non-disabled-by-default-pattern")); |