| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include "base/json/json_reader.h" | 7 #include "base/json/json_reader.h" |
| 8 #include "base/json/json_writer.h" | 8 #include "base/json/json_writer.h" |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/trace_event/memory_dump_manager.h" | 10 #include "base/trace_event/memory_dump_manager.h" |
| 11 #include "base/trace_event/trace_config.h" | 11 #include "base/trace_event/trace_config.h" |
| 12 #include "base/trace_event/trace_config_memory_test_util.h" | 12 #include "base/trace_event/trace_config_memory_test_util.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
| 14 | 14 |
| 15 namespace base { | 15 namespace base { |
| 16 namespace trace_event { | 16 namespace trace_event { |
| 17 | 17 |
| 18 namespace { | 18 namespace { |
| 19 | 19 |
| 20 const char kDefaultTraceConfigString[] = | 20 const char kDefaultTraceConfigString[] = |
| 21 "{" | 21 "{" |
| 22 "\"enable_argument_filter\":false," | 22 "\"enable_argument_filter\":false," |
| 23 "\"enable_sampling\":false," | |
| 24 "\"enable_systrace\":false," | 23 "\"enable_systrace\":false," |
| 25 "\"record_mode\":\"record-until-full\"" | 24 "\"record_mode\":\"record-until-full\"" |
| 26 "}"; | 25 "}"; |
| 27 | 26 |
| 28 const char kCustomTraceConfigString[] = | 27 const char kCustomTraceConfigString[] = |
| 29 "{" | 28 "{" |
| 30 "\"enable_argument_filter\":true," | 29 "\"enable_argument_filter\":true," |
| 31 "\"enable_sampling\":true," | |
| 32 "\"enable_systrace\":true," | 30 "\"enable_systrace\":true," |
| 33 "\"event_filters\":[" | 31 "\"event_filters\":[" |
| 34 "{" | 32 "{" |
| 35 "\"excluded_categories\":[\"unfiltered_cat\"]," | 33 "\"excluded_categories\":[\"unfiltered_cat\"]," |
| 36 "\"filter_args\":{\"event_name_whitelist\":[\"a snake\",\"a dog\"]}," | 34 "\"filter_args\":{\"event_name_whitelist\":[\"a snake\",\"a dog\"]}," |
| 37 "\"filter_predicate\":\"event_whitelist_predicate\"," | 35 "\"filter_predicate\":\"event_whitelist_predicate\"," |
| 38 "\"included_categories\":[\"*\"]" | 36 "\"included_categories\":[\"*\"]" |
| 39 "}" | 37 "}" |
| 40 "]," | 38 "]," |
| 41 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," | 39 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," |
| (...skipping 10 matching lines...) Expand all Loading... |
| 52 "{\"mode\":\"light\",\"periodic_interval_ms\":50}," | 50 "{\"mode\":\"light\",\"periodic_interval_ms\":50}," |
| 53 "{\"mode\":\"detailed\",\"periodic_interval_ms\":1000}" | 51 "{\"mode\":\"detailed\",\"periodic_interval_ms\":1000}" |
| 54 "]" | 52 "]" |
| 55 "}," | 53 "}," |
| 56 "\"record_mode\":\"record-continuously\"," | 54 "\"record_mode\":\"record-continuously\"," |
| 57 "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]" | 55 "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]" |
| 58 "}"; | 56 "}"; |
| 59 | 57 |
| 60 void CheckDefaultTraceConfigBehavior(const TraceConfig& tc) { | 58 void CheckDefaultTraceConfigBehavior(const TraceConfig& tc) { |
| 61 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 59 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
| 62 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
| 63 EXPECT_FALSE(tc.IsSystraceEnabled()); | 60 EXPECT_FALSE(tc.IsSystraceEnabled()); |
| 64 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 61 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
| 65 | 62 |
| 66 // Default trace config enables every category filter except the | 63 // Default trace config enables every category filter except the |
| 67 // disabled-by-default-* ones. | 64 // disabled-by-default-* ones. |
| 68 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1")); | 65 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1")); |
| 69 EXPECT_TRUE(tc.IsCategoryGroupEnabled("not-excluded-category")); | 66 EXPECT_TRUE(tc.IsCategoryGroupEnabled("not-excluded-category")); |
| 70 EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-cc")); | 67 EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-cc")); |
| 71 | 68 |
| 72 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1,not-excluded-category")); | 69 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1,not-excluded-category")); |
| 73 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1,disabled-by-default-cc")); | 70 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1,disabled-by-default-cc")); |
| 74 EXPECT_FALSE(tc.IsCategoryGroupEnabled( | 71 EXPECT_FALSE(tc.IsCategoryGroupEnabled( |
| 75 "disabled-by-default-cc,disabled-by-default-cc2")); | 72 "disabled-by-default-cc,disabled-by-default-cc2")); |
| 76 } | 73 } |
| 77 | 74 |
| 78 } // namespace | 75 } // namespace |
| 79 | 76 |
| 80 TEST(TraceConfigTest, TraceConfigFromValidLegacyFormat) { | 77 TEST(TraceConfigTest, TraceConfigFromValidLegacyFormat) { |
| 81 // From trace options strings | 78 // From trace options strings |
| 82 TraceConfig config("", "record-until-full"); | 79 TraceConfig config("", "record-until-full"); |
| 83 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); | 80 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); |
| 84 EXPECT_FALSE(config.IsSamplingEnabled()); | |
| 85 EXPECT_FALSE(config.IsSystraceEnabled()); | 81 EXPECT_FALSE(config.IsSystraceEnabled()); |
| 86 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 82 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
| 87 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); | 83 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); |
| 88 | 84 |
| 89 config = TraceConfig("", "record-continuously"); | 85 config = TraceConfig("", "record-continuously"); |
| 90 EXPECT_EQ(RECORD_CONTINUOUSLY, config.GetTraceRecordMode()); | 86 EXPECT_EQ(RECORD_CONTINUOUSLY, config.GetTraceRecordMode()); |
| 91 EXPECT_FALSE(config.IsSamplingEnabled()); | |
| 92 EXPECT_FALSE(config.IsSystraceEnabled()); | 87 EXPECT_FALSE(config.IsSystraceEnabled()); |
| 93 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 88 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
| 94 EXPECT_STREQ("record-continuously", config.ToTraceOptionsString().c_str()); | 89 EXPECT_STREQ("record-continuously", config.ToTraceOptionsString().c_str()); |
| 95 | 90 |
| 96 config = TraceConfig("", "trace-to-console"); | 91 config = TraceConfig("", "trace-to-console"); |
| 97 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); | 92 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); |
| 98 EXPECT_FALSE(config.IsSamplingEnabled()); | |
| 99 EXPECT_FALSE(config.IsSystraceEnabled()); | 93 EXPECT_FALSE(config.IsSystraceEnabled()); |
| 100 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 94 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
| 101 EXPECT_STREQ("trace-to-console", config.ToTraceOptionsString().c_str()); | 95 EXPECT_STREQ("trace-to-console", config.ToTraceOptionsString().c_str()); |
| 102 | 96 |
| 103 config = TraceConfig("", "record-as-much-as-possible"); | 97 config = TraceConfig("", "record-as-much-as-possible"); |
| 104 EXPECT_EQ(RECORD_AS_MUCH_AS_POSSIBLE, config.GetTraceRecordMode()); | 98 EXPECT_EQ(RECORD_AS_MUCH_AS_POSSIBLE, config.GetTraceRecordMode()); |
| 105 EXPECT_FALSE(config.IsSamplingEnabled()); | |
| 106 EXPECT_FALSE(config.IsSystraceEnabled()); | 99 EXPECT_FALSE(config.IsSystraceEnabled()); |
| 107 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 100 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
| 108 EXPECT_STREQ("record-as-much-as-possible", | 101 EXPECT_STREQ("record-as-much-as-possible", |
| 109 config.ToTraceOptionsString().c_str()); | 102 config.ToTraceOptionsString().c_str()); |
| 110 | 103 |
| 111 config = TraceConfig("", "record-until-full, enable-sampling"); | |
| 112 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); | |
| 113 EXPECT_TRUE(config.IsSamplingEnabled()); | |
| 114 EXPECT_FALSE(config.IsSystraceEnabled()); | |
| 115 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | |
| 116 EXPECT_STREQ("record-until-full,enable-sampling", | |
| 117 config.ToTraceOptionsString().c_str()); | |
| 118 | |
| 119 config = TraceConfig("", "enable-systrace, record-continuously"); | 104 config = TraceConfig("", "enable-systrace, record-continuously"); |
| 120 EXPECT_EQ(RECORD_CONTINUOUSLY, config.GetTraceRecordMode()); | 105 EXPECT_EQ(RECORD_CONTINUOUSLY, config.GetTraceRecordMode()); |
| 121 EXPECT_FALSE(config.IsSamplingEnabled()); | |
| 122 EXPECT_TRUE(config.IsSystraceEnabled()); | 106 EXPECT_TRUE(config.IsSystraceEnabled()); |
| 123 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 107 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
| 124 EXPECT_STREQ("record-continuously,enable-systrace", | 108 EXPECT_STREQ("record-continuously,enable-systrace", |
| 125 config.ToTraceOptionsString().c_str()); | 109 config.ToTraceOptionsString().c_str()); |
| 126 | 110 |
| 127 config = TraceConfig("", "enable-argument-filter,record-as-much-as-possible"); | 111 config = TraceConfig("", "enable-argument-filter,record-as-much-as-possible"); |
| 128 EXPECT_EQ(RECORD_AS_MUCH_AS_POSSIBLE, config.GetTraceRecordMode()); | 112 EXPECT_EQ(RECORD_AS_MUCH_AS_POSSIBLE, config.GetTraceRecordMode()); |
| 129 EXPECT_FALSE(config.IsSamplingEnabled()); | |
| 130 EXPECT_FALSE(config.IsSystraceEnabled()); | 113 EXPECT_FALSE(config.IsSystraceEnabled()); |
| 131 EXPECT_TRUE(config.IsArgumentFilterEnabled()); | 114 EXPECT_TRUE(config.IsArgumentFilterEnabled()); |
| 132 EXPECT_STREQ("record-as-much-as-possible,enable-argument-filter", | 115 EXPECT_STREQ("record-as-much-as-possible,enable-argument-filter", |
| 133 config.ToTraceOptionsString().c_str()); | 116 config.ToTraceOptionsString().c_str()); |
| 134 | 117 |
| 135 config = TraceConfig( | 118 config = TraceConfig( |
| 136 "", | 119 "", |
| 137 "enable-systrace,trace-to-console,enable-sampling,enable-argument-filter"); | 120 "enable-systrace,trace-to-console,enable-argument-filter"); |
| 138 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); | 121 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); |
| 139 EXPECT_TRUE(config.IsSamplingEnabled()); | |
| 140 EXPECT_TRUE(config.IsSystraceEnabled()); | 122 EXPECT_TRUE(config.IsSystraceEnabled()); |
| 141 EXPECT_TRUE(config.IsArgumentFilterEnabled()); | 123 EXPECT_TRUE(config.IsArgumentFilterEnabled()); |
| 142 EXPECT_STREQ( | 124 EXPECT_STREQ( |
| 143 "trace-to-console,enable-sampling,enable-systrace,enable-argument-filter", | 125 "trace-to-console,enable-systrace,enable-argument-filter", |
| 144 config.ToTraceOptionsString().c_str()); | 126 config.ToTraceOptionsString().c_str()); |
| 145 | 127 |
| 146 config = TraceConfig( | 128 config = TraceConfig( |
| 147 "", "record-continuously, record-until-full, trace-to-console"); | 129 "", "record-continuously, record-until-full, trace-to-console"); |
| 148 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); | 130 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); |
| 149 EXPECT_FALSE(config.IsSamplingEnabled()); | |
| 150 EXPECT_FALSE(config.IsSystraceEnabled()); | 131 EXPECT_FALSE(config.IsSystraceEnabled()); |
| 151 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 132 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
| 152 EXPECT_STREQ("trace-to-console", config.ToTraceOptionsString().c_str()); | 133 EXPECT_STREQ("trace-to-console", config.ToTraceOptionsString().c_str()); |
| 153 | 134 |
| 154 // From TraceRecordMode | 135 // From TraceRecordMode |
| 155 config = TraceConfig("", RECORD_UNTIL_FULL); | 136 config = TraceConfig("", RECORD_UNTIL_FULL); |
| 156 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); | 137 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); |
| 157 EXPECT_FALSE(config.IsSamplingEnabled()); | |
| 158 EXPECT_FALSE(config.IsSystraceEnabled()); | 138 EXPECT_FALSE(config.IsSystraceEnabled()); |
| 159 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 139 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
| 160 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); | 140 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); |
| 161 | 141 |
| 162 config = TraceConfig("", RECORD_CONTINUOUSLY); | 142 config = TraceConfig("", RECORD_CONTINUOUSLY); |
| 163 EXPECT_EQ(RECORD_CONTINUOUSLY, config.GetTraceRecordMode()); | 143 EXPECT_EQ(RECORD_CONTINUOUSLY, config.GetTraceRecordMode()); |
| 164 EXPECT_FALSE(config.IsSamplingEnabled()); | |
| 165 EXPECT_FALSE(config.IsSystraceEnabled()); | 144 EXPECT_FALSE(config.IsSystraceEnabled()); |
| 166 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 145 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
| 167 EXPECT_STREQ("record-continuously", config.ToTraceOptionsString().c_str()); | 146 EXPECT_STREQ("record-continuously", config.ToTraceOptionsString().c_str()); |
| 168 | 147 |
| 169 config = TraceConfig("", ECHO_TO_CONSOLE); | 148 config = TraceConfig("", ECHO_TO_CONSOLE); |
| 170 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); | 149 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); |
| 171 EXPECT_FALSE(config.IsSamplingEnabled()); | |
| 172 EXPECT_FALSE(config.IsSystraceEnabled()); | 150 EXPECT_FALSE(config.IsSystraceEnabled()); |
| 173 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 151 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
| 174 EXPECT_STREQ("trace-to-console", config.ToTraceOptionsString().c_str()); | 152 EXPECT_STREQ("trace-to-console", config.ToTraceOptionsString().c_str()); |
| 175 | 153 |
| 176 config = TraceConfig("", RECORD_AS_MUCH_AS_POSSIBLE); | 154 config = TraceConfig("", RECORD_AS_MUCH_AS_POSSIBLE); |
| 177 EXPECT_EQ(RECORD_AS_MUCH_AS_POSSIBLE, config.GetTraceRecordMode()); | 155 EXPECT_EQ(RECORD_AS_MUCH_AS_POSSIBLE, config.GetTraceRecordMode()); |
| 178 EXPECT_FALSE(config.IsSamplingEnabled()); | |
| 179 EXPECT_FALSE(config.IsSystraceEnabled()); | 156 EXPECT_FALSE(config.IsSystraceEnabled()); |
| 180 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 157 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
| 181 EXPECT_STREQ("record-as-much-as-possible", | 158 EXPECT_STREQ("record-as-much-as-possible", |
| 182 config.ToTraceOptionsString().c_str()); | 159 config.ToTraceOptionsString().c_str()); |
| 183 | 160 |
| 184 // From category filter strings | 161 // From category filter strings |
| 185 config = TraceConfig("included,-excluded,inc_pattern*,-exc_pattern*", ""); | 162 config = TraceConfig("included,-excluded,inc_pattern*,-exc_pattern*", ""); |
| 186 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", | 163 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", |
| 187 config.ToCategoryFilterString().c_str()); | 164 config.ToCategoryFilterString().c_str()); |
| 188 | 165 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 200 EXPECT_STREQ("included,disabled-by-default-cc", | 177 EXPECT_STREQ("included,disabled-by-default-cc", |
| 201 config.ToCategoryFilterString().c_str()); | 178 config.ToCategoryFilterString().c_str()); |
| 202 | 179 |
| 203 config = TraceConfig("DELAY(test.Delay1;16),included", ""); | 180 config = TraceConfig("DELAY(test.Delay1;16),included", ""); |
| 204 EXPECT_STREQ("included,DELAY(test.Delay1;16)", | 181 EXPECT_STREQ("included,DELAY(test.Delay1;16)", |
| 205 config.ToCategoryFilterString().c_str()); | 182 config.ToCategoryFilterString().c_str()); |
| 206 | 183 |
| 207 // From both trace options and category filter strings | 184 // From both trace options and category filter strings |
| 208 config = TraceConfig("", ""); | 185 config = TraceConfig("", ""); |
| 209 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); | 186 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); |
| 210 EXPECT_FALSE(config.IsSamplingEnabled()); | |
| 211 EXPECT_FALSE(config.IsSystraceEnabled()); | 187 EXPECT_FALSE(config.IsSystraceEnabled()); |
| 212 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 188 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
| 213 EXPECT_STREQ("", config.ToCategoryFilterString().c_str()); | 189 EXPECT_STREQ("", config.ToCategoryFilterString().c_str()); |
| 214 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); | 190 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); |
| 215 | 191 |
| 216 config = TraceConfig("included,-excluded,inc_pattern*,-exc_pattern*", | 192 config = TraceConfig("included,-excluded,inc_pattern*,-exc_pattern*", |
| 217 "enable-systrace, trace-to-console, enable-sampling"); | 193 "enable-systrace, trace-to-console"); |
| 218 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); | 194 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); |
| 219 EXPECT_TRUE(config.IsSamplingEnabled()); | |
| 220 EXPECT_TRUE(config.IsSystraceEnabled()); | 195 EXPECT_TRUE(config.IsSystraceEnabled()); |
| 221 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 196 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
| 222 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", | 197 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", |
| 223 config.ToCategoryFilterString().c_str()); | 198 config.ToCategoryFilterString().c_str()); |
| 224 EXPECT_STREQ("trace-to-console,enable-sampling,enable-systrace", | 199 EXPECT_STREQ("trace-to-console,enable-systrace", |
| 225 config.ToTraceOptionsString().c_str()); | 200 config.ToTraceOptionsString().c_str()); |
| 226 | 201 |
| 227 // From both trace options and category filter strings with spaces. | 202 // From both trace options and category filter strings with spaces. |
| 228 config = TraceConfig(" included , -excluded, inc_pattern*, ,-exc_pattern* ", | 203 config = TraceConfig(" included , -excluded, inc_pattern*, ,-exc_pattern* ", |
| 229 "enable-systrace, ,trace-to-console, enable-sampling "); | 204 "enable-systrace, ,trace-to-console "); |
| 230 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); | 205 EXPECT_EQ(ECHO_TO_CONSOLE, config.GetTraceRecordMode()); |
| 231 EXPECT_TRUE(config.IsSamplingEnabled()); | |
| 232 EXPECT_TRUE(config.IsSystraceEnabled()); | 206 EXPECT_TRUE(config.IsSystraceEnabled()); |
| 233 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 207 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
| 234 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", | 208 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", |
| 235 config.ToCategoryFilterString().c_str()); | 209 config.ToCategoryFilterString().c_str()); |
| 236 EXPECT_STREQ("trace-to-console,enable-sampling,enable-systrace", | 210 EXPECT_STREQ("trace-to-console,enable-systrace", |
| 237 config.ToTraceOptionsString().c_str()); | 211 config.ToTraceOptionsString().c_str()); |
| 238 | 212 |
| 239 // From category filter string and TraceRecordMode | 213 // From category filter string and TraceRecordMode |
| 240 config = TraceConfig("included,-excluded,inc_pattern*,-exc_pattern*", | 214 config = TraceConfig("included,-excluded,inc_pattern*,-exc_pattern*", |
| 241 RECORD_CONTINUOUSLY); | 215 RECORD_CONTINUOUSLY); |
| 242 EXPECT_EQ(RECORD_CONTINUOUSLY, config.GetTraceRecordMode()); | 216 EXPECT_EQ(RECORD_CONTINUOUSLY, config.GetTraceRecordMode()); |
| 243 EXPECT_FALSE(config.IsSystraceEnabled()); | 217 EXPECT_FALSE(config.IsSystraceEnabled()); |
| 244 EXPECT_FALSE(config.IsSamplingEnabled()); | |
| 245 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 218 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
| 246 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", | 219 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", |
| 247 config.ToCategoryFilterString().c_str()); | 220 config.ToCategoryFilterString().c_str()); |
| 248 EXPECT_STREQ("record-continuously", config.ToTraceOptionsString().c_str()); | 221 EXPECT_STREQ("record-continuously", config.ToTraceOptionsString().c_str()); |
| 249 } | 222 } |
| 250 | 223 |
| 251 TEST(TraceConfigTest, TraceConfigFromInvalidLegacyStrings) { | 224 TEST(TraceConfigTest, TraceConfigFromInvalidLegacyStrings) { |
| 252 TraceConfig config("", "foo-bar-baz"); | 225 TraceConfig config("", "foo-bar-baz"); |
| 253 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); | 226 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); |
| 254 EXPECT_FALSE(config.IsSamplingEnabled()); | |
| 255 EXPECT_FALSE(config.IsSystraceEnabled()); | 227 EXPECT_FALSE(config.IsSystraceEnabled()); |
| 256 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 228 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
| 257 EXPECT_STREQ("", config.ToCategoryFilterString().c_str()); | 229 EXPECT_STREQ("", config.ToCategoryFilterString().c_str()); |
| 258 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); | 230 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); |
| 259 | 231 |
| 260 config = TraceConfig("arbitrary-category", "foo-bar-baz, enable-systrace"); | 232 config = TraceConfig("arbitrary-category", "foo-bar-baz, enable-systrace"); |
| 261 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); | 233 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); |
| 262 EXPECT_FALSE(config.IsSamplingEnabled()); | |
| 263 EXPECT_TRUE(config.IsSystraceEnabled()); | 234 EXPECT_TRUE(config.IsSystraceEnabled()); |
| 264 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 235 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
| 265 EXPECT_STREQ("arbitrary-category", config.ToCategoryFilterString().c_str()); | 236 EXPECT_STREQ("arbitrary-category", config.ToCategoryFilterString().c_str()); |
| 266 EXPECT_STREQ("record-until-full,enable-systrace", | 237 EXPECT_STREQ("record-until-full,enable-systrace", |
| 267 config.ToTraceOptionsString().c_str()); | 238 config.ToTraceOptionsString().c_str()); |
| 268 | 239 |
| 269 const char* const configs[] = { | 240 const char* const configs[] = { |
| 270 "", | 241 "", |
| 271 "DELAY(", | 242 "DELAY(", |
| 272 "DELAY(;", | 243 "DELAY(;", |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 349 EXPECT_TRUE(tc.IsCategoryGroupEnabled("bar")); | 320 EXPECT_TRUE(tc.IsCategoryGroupEnabled("bar")); |
| 350 EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-bar")); | 321 EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-bar")); |
| 351 } | 322 } |
| 352 | 323 |
| 353 TEST(TraceConfigTest, TraceConfigFromDict) { | 324 TEST(TraceConfigTest, TraceConfigFromDict) { |
| 354 // Passing in empty dictionary will result in default trace config. | 325 // Passing in empty dictionary will result in default trace config. |
| 355 DictionaryValue dict; | 326 DictionaryValue dict; |
| 356 TraceConfig tc(dict); | 327 TraceConfig tc(dict); |
| 357 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); | 328 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); |
| 358 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 329 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
| 359 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
| 360 EXPECT_FALSE(tc.IsSystraceEnabled()); | 330 EXPECT_FALSE(tc.IsSystraceEnabled()); |
| 361 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 331 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
| 362 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); | 332 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
| 363 | 333 |
| 364 std::unique_ptr<Value> default_value( | 334 std::unique_ptr<Value> default_value( |
| 365 JSONReader::Read(kDefaultTraceConfigString)); | 335 JSONReader::Read(kDefaultTraceConfigString)); |
| 366 DCHECK(default_value); | 336 DCHECK(default_value); |
| 367 const DictionaryValue* default_dict = nullptr; | 337 const DictionaryValue* default_dict = nullptr; |
| 368 bool is_dict = default_value->GetAsDictionary(&default_dict); | 338 bool is_dict = default_value->GetAsDictionary(&default_dict); |
| 369 DCHECK(is_dict); | 339 DCHECK(is_dict); |
| 370 TraceConfig default_tc(*default_dict); | 340 TraceConfig default_tc(*default_dict); |
| 371 EXPECT_STREQ(kDefaultTraceConfigString, default_tc.ToString().c_str()); | 341 EXPECT_STREQ(kDefaultTraceConfigString, default_tc.ToString().c_str()); |
| 372 EXPECT_EQ(RECORD_UNTIL_FULL, default_tc.GetTraceRecordMode()); | 342 EXPECT_EQ(RECORD_UNTIL_FULL, default_tc.GetTraceRecordMode()); |
| 373 EXPECT_FALSE(default_tc.IsSamplingEnabled()); | |
| 374 EXPECT_FALSE(default_tc.IsSystraceEnabled()); | 343 EXPECT_FALSE(default_tc.IsSystraceEnabled()); |
| 375 EXPECT_FALSE(default_tc.IsArgumentFilterEnabled()); | 344 EXPECT_FALSE(default_tc.IsArgumentFilterEnabled()); |
| 376 EXPECT_STREQ("", default_tc.ToCategoryFilterString().c_str()); | 345 EXPECT_STREQ("", default_tc.ToCategoryFilterString().c_str()); |
| 377 | 346 |
| 378 std::unique_ptr<Value> custom_value( | 347 std::unique_ptr<Value> custom_value( |
| 379 JSONReader::Read(kCustomTraceConfigString)); | 348 JSONReader::Read(kCustomTraceConfigString)); |
| 380 DCHECK(custom_value); | 349 DCHECK(custom_value); |
| 381 const DictionaryValue* custom_dict = nullptr; | 350 const DictionaryValue* custom_dict = nullptr; |
| 382 is_dict = custom_value->GetAsDictionary(&custom_dict); | 351 is_dict = custom_value->GetAsDictionary(&custom_dict); |
| 383 DCHECK(is_dict); | 352 DCHECK(is_dict); |
| 384 TraceConfig custom_tc(*custom_dict); | 353 TraceConfig custom_tc(*custom_dict); |
| 385 EXPECT_STREQ(kCustomTraceConfigString, custom_tc.ToString().c_str()); | 354 EXPECT_STREQ(kCustomTraceConfigString, custom_tc.ToString().c_str()); |
| 386 EXPECT_EQ(RECORD_CONTINUOUSLY, custom_tc.GetTraceRecordMode()); | 355 EXPECT_EQ(RECORD_CONTINUOUSLY, custom_tc.GetTraceRecordMode()); |
| 387 EXPECT_TRUE(custom_tc.IsSamplingEnabled()); | |
| 388 EXPECT_TRUE(custom_tc.IsSystraceEnabled()); | 356 EXPECT_TRUE(custom_tc.IsSystraceEnabled()); |
| 389 EXPECT_TRUE(custom_tc.IsArgumentFilterEnabled()); | 357 EXPECT_TRUE(custom_tc.IsArgumentFilterEnabled()); |
| 390 EXPECT_STREQ("included,inc_pattern*," | 358 EXPECT_STREQ("included,inc_pattern*," |
| 391 "disabled-by-default-cc,disabled-by-default-memory-infra," | 359 "disabled-by-default-cc,disabled-by-default-memory-infra," |
| 392 "-excluded,-exc_pattern*," | 360 "-excluded,-exc_pattern*," |
| 393 "DELAY(test.Delay1;16),DELAY(test.Delay2;32)", | 361 "DELAY(test.Delay1;16),DELAY(test.Delay2;32)", |
| 394 custom_tc.ToCategoryFilterString().c_str()); | 362 custom_tc.ToCategoryFilterString().c_str()); |
| 395 } | 363 } |
| 396 | 364 |
| 397 TEST(TraceConfigTest, TraceConfigFromValidString) { | 365 TEST(TraceConfigTest, TraceConfigFromValidString) { |
| 398 // Using some non-empty config string. | 366 // Using some non-empty config string. |
| 399 const char config_string[] = | 367 const char config_string[] = |
| 400 "{" | 368 "{" |
| 401 "\"enable_argument_filter\":true," | 369 "\"enable_argument_filter\":true," |
| 402 "\"enable_sampling\":true," | |
| 403 "\"enable_systrace\":true," | 370 "\"enable_systrace\":true," |
| 404 "\"event_filters\":[" | 371 "\"event_filters\":[" |
| 405 "{" | 372 "{" |
| 406 "\"excluded_categories\":[\"unfiltered_cat\"]," | 373 "\"excluded_categories\":[\"unfiltered_cat\"]," |
| 407 "\"filter_args\":{\"event_name_whitelist\":[\"a snake\",\"a dog\"]}," | 374 "\"filter_args\":{\"event_name_whitelist\":[\"a snake\",\"a dog\"]}," |
| 408 "\"filter_predicate\":\"event_whitelist_predicate\"," | 375 "\"filter_predicate\":\"event_whitelist_predicate\"," |
| 409 "\"included_categories\":[\"*\"]" | 376 "\"included_categories\":[\"*\"]" |
| 410 "}" | 377 "}" |
| 411 "]," | 378 "]," |
| 412 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," | 379 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," |
| 413 "\"included_categories\":[\"included\"," | 380 "\"included_categories\":[\"included\"," |
| 414 "\"inc_pattern*\"," | 381 "\"inc_pattern*\"," |
| 415 "\"disabled-by-default-cc\"]," | 382 "\"disabled-by-default-cc\"]," |
| 416 "\"record_mode\":\"record-continuously\"," | 383 "\"record_mode\":\"record-continuously\"," |
| 417 "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]" | 384 "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]" |
| 418 "}"; | 385 "}"; |
| 419 TraceConfig tc(config_string); | 386 TraceConfig tc(config_string); |
| 420 | 387 |
| 421 EXPECT_STREQ(config_string, tc.ToString().c_str()); | 388 EXPECT_STREQ(config_string, tc.ToString().c_str()); |
| 422 EXPECT_EQ(RECORD_CONTINUOUSLY, tc.GetTraceRecordMode()); | 389 EXPECT_EQ(RECORD_CONTINUOUSLY, tc.GetTraceRecordMode()); |
| 423 EXPECT_TRUE(tc.IsSamplingEnabled()); | |
| 424 EXPECT_TRUE(tc.IsSystraceEnabled()); | 390 EXPECT_TRUE(tc.IsSystraceEnabled()); |
| 425 EXPECT_TRUE(tc.IsArgumentFilterEnabled()); | 391 EXPECT_TRUE(tc.IsArgumentFilterEnabled()); |
| 426 EXPECT_STREQ("included,inc_pattern*,disabled-by-default-cc,-excluded," | 392 EXPECT_STREQ("included,inc_pattern*,disabled-by-default-cc,-excluded," |
| 427 "-exc_pattern*,DELAY(test.Delay1;16),DELAY(test.Delay2;32)", | 393 "-exc_pattern*,DELAY(test.Delay1;16),DELAY(test.Delay2;32)", |
| 428 tc.ToCategoryFilterString().c_str()); | 394 tc.ToCategoryFilterString().c_str()); |
| 429 | 395 |
| 430 EXPECT_TRUE(tc.IsCategoryEnabled("included")); | 396 EXPECT_TRUE(tc.IsCategoryEnabled("included")); |
| 431 EXPECT_TRUE(tc.IsCategoryEnabled("inc_pattern_category")); | 397 EXPECT_TRUE(tc.IsCategoryEnabled("inc_pattern_category")); |
| 432 EXPECT_TRUE(tc.IsCategoryEnabled("disabled-by-default-cc")); | 398 EXPECT_TRUE(tc.IsCategoryEnabled("disabled-by-default-cc")); |
| 433 EXPECT_FALSE(tc.IsCategoryEnabled("excluded")); | 399 EXPECT_FALSE(tc.IsCategoryEnabled("excluded")); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 EXPECT_TRUE(tc2.IsCategoryEnabled("non-disabled-by-default-pattern")); | 438 EXPECT_TRUE(tc2.IsCategoryEnabled("non-disabled-by-default-pattern")); |
| 473 EXPECT_FALSE(tc2.IsCategoryEnabled("disabled-by-default-pattern")); | 439 EXPECT_FALSE(tc2.IsCategoryEnabled("disabled-by-default-pattern")); |
| 474 EXPECT_TRUE(tc2.IsCategoryGroupEnabled("non-disabled-by-default-pattern")); | 440 EXPECT_TRUE(tc2.IsCategoryGroupEnabled("non-disabled-by-default-pattern")); |
| 475 EXPECT_FALSE(tc2.IsCategoryGroupEnabled("disabled-by-default-pattern")); | 441 EXPECT_FALSE(tc2.IsCategoryGroupEnabled("disabled-by-default-pattern")); |
| 476 | 442 |
| 477 // Clear | 443 // Clear |
| 478 tc.Clear(); | 444 tc.Clear(); |
| 479 EXPECT_STREQ(tc.ToString().c_str(), | 445 EXPECT_STREQ(tc.ToString().c_str(), |
| 480 "{" | 446 "{" |
| 481 "\"enable_argument_filter\":false," | 447 "\"enable_argument_filter\":false," |
| 482 "\"enable_sampling\":false," | |
| 483 "\"enable_systrace\":false," | 448 "\"enable_systrace\":false," |
| 484 "\"record_mode\":\"record-until-full\"" | 449 "\"record_mode\":\"record-until-full\"" |
| 485 "}"); | 450 "}"); |
| 486 } | 451 } |
| 487 | 452 |
| 488 TEST(TraceConfigTest, TraceConfigFromInvalidString) { | 453 TEST(TraceConfigTest, TraceConfigFromInvalidString) { |
| 489 // The config string needs to be a dictionary correctly formatted as a JSON | 454 // The config string needs to be a dictionary correctly formatted as a JSON |
| 490 // string. Otherwise, it will fall back to the default initialization. | 455 // string. Otherwise, it will fall back to the default initialization. |
| 491 TraceConfig tc(""); | 456 TraceConfig tc(""); |
| 492 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); | 457 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); |
| 493 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 458 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
| 494 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
| 495 EXPECT_FALSE(tc.IsSystraceEnabled()); | 459 EXPECT_FALSE(tc.IsSystraceEnabled()); |
| 496 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 460 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
| 497 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); | 461 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
| 498 CheckDefaultTraceConfigBehavior(tc); | 462 CheckDefaultTraceConfigBehavior(tc); |
| 499 | 463 |
| 500 tc = TraceConfig("This is an invalid config string."); | 464 tc = TraceConfig("This is an invalid config string."); |
| 501 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); | 465 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); |
| 502 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 466 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
| 503 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
| 504 EXPECT_FALSE(tc.IsSystraceEnabled()); | 467 EXPECT_FALSE(tc.IsSystraceEnabled()); |
| 505 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 468 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
| 506 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); | 469 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
| 507 CheckDefaultTraceConfigBehavior(tc); | 470 CheckDefaultTraceConfigBehavior(tc); |
| 508 | 471 |
| 509 tc = TraceConfig("[\"This\", \"is\", \"not\", \"a\", \"dictionary\"]"); | 472 tc = TraceConfig("[\"This\", \"is\", \"not\", \"a\", \"dictionary\"]"); |
| 510 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); | 473 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); |
| 511 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 474 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
| 512 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
| 513 EXPECT_FALSE(tc.IsSystraceEnabled()); | 475 EXPECT_FALSE(tc.IsSystraceEnabled()); |
| 514 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 476 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
| 515 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); | 477 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
| 516 CheckDefaultTraceConfigBehavior(tc); | 478 CheckDefaultTraceConfigBehavior(tc); |
| 517 | 479 |
| 518 tc = TraceConfig("{\"record_mode\": invalid-value-needs-double-quote}"); | 480 tc = TraceConfig("{\"record_mode\": invalid-value-needs-double-quote}"); |
| 519 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); | 481 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); |
| 520 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 482 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
| 521 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
| 522 EXPECT_FALSE(tc.IsSystraceEnabled()); | 483 EXPECT_FALSE(tc.IsSystraceEnabled()); |
| 523 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 484 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
| 524 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); | 485 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
| 525 CheckDefaultTraceConfigBehavior(tc); | 486 CheckDefaultTraceConfigBehavior(tc); |
| 526 | 487 |
| 527 // If the config string a dictionary formatted as a JSON string, it will | 488 // If the config string a dictionary formatted as a JSON string, it will |
| 528 // initialize TraceConfig with best effort. | 489 // initialize TraceConfig with best effort. |
| 529 tc = TraceConfig("{}"); | 490 tc = TraceConfig("{}"); |
| 530 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 491 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
| 531 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
| 532 EXPECT_FALSE(tc.IsSystraceEnabled()); | 492 EXPECT_FALSE(tc.IsSystraceEnabled()); |
| 533 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 493 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
| 534 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); | 494 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
| 535 CheckDefaultTraceConfigBehavior(tc); | 495 CheckDefaultTraceConfigBehavior(tc); |
| 536 | 496 |
| 537 tc = TraceConfig("{\"arbitrary-key\":\"arbitrary-value\"}"); | 497 tc = TraceConfig("{\"arbitrary-key\":\"arbitrary-value\"}"); |
| 538 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 498 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
| 539 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
| 540 EXPECT_FALSE(tc.IsSystraceEnabled()); | 499 EXPECT_FALSE(tc.IsSystraceEnabled()); |
| 541 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 500 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
| 542 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); | 501 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
| 543 CheckDefaultTraceConfigBehavior(tc); | 502 CheckDefaultTraceConfigBehavior(tc); |
| 544 | 503 |
| 545 const char invalid_config_string[] = | 504 const char invalid_config_string[] = |
| 546 "{" | 505 "{" |
| 547 "\"enable_sampling\":\"true\"," | |
| 548 "\"enable_systrace\":1," | 506 "\"enable_systrace\":1," |
| 549 "\"excluded_categories\":[\"excluded\"]," | 507 "\"excluded_categories\":[\"excluded\"]," |
| 550 "\"included_categories\":\"not a list\"," | 508 "\"included_categories\":\"not a list\"," |
| 551 "\"record_mode\":\"arbitrary-mode\"," | 509 "\"record_mode\":\"arbitrary-mode\"," |
| 552 "\"synthetic_delays\":[\"test.Delay1;16\"," | 510 "\"synthetic_delays\":[\"test.Delay1;16\"," |
| 553 "\"invalid-delay\"," | 511 "\"invalid-delay\"," |
| 554 "\"test.Delay2;32\"]" | 512 "\"test.Delay2;32\"]" |
| 555 "}"; | 513 "}"; |
| 556 tc = TraceConfig(invalid_config_string); | 514 tc = TraceConfig(invalid_config_string); |
| 557 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 515 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
| 558 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
| 559 EXPECT_FALSE(tc.IsSystraceEnabled()); | 516 EXPECT_FALSE(tc.IsSystraceEnabled()); |
| 560 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 517 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
| 561 EXPECT_STREQ("-excluded,DELAY(test.Delay1;16),DELAY(test.Delay2;32)", | 518 EXPECT_STREQ("-excluded,DELAY(test.Delay1;16),DELAY(test.Delay2;32)", |
| 562 tc.ToCategoryFilterString().c_str()); | 519 tc.ToCategoryFilterString().c_str()); |
| 563 | 520 |
| 564 const char invalid_config_string_2[] = | 521 const char invalid_config_string_2[] = |
| 565 "{" | 522 "{" |
| 566 "\"included_categories\":[\"category\",\"disabled-by-default-pattern\"]," | 523 "\"included_categories\":[\"category\",\"disabled-by-default-pattern\"]," |
| 567 "\"excluded_categories\":[\"category\",\"disabled-by-default-pattern\"]" | 524 "\"excluded_categories\":[\"category\",\"disabled-by-default-pattern\"]" |
| 568 "}"; | 525 "}"; |
| 569 tc = TraceConfig(invalid_config_string_2); | 526 tc = TraceConfig(invalid_config_string_2); |
| 570 EXPECT_TRUE(tc.IsCategoryEnabled("category")); | 527 EXPECT_TRUE(tc.IsCategoryEnabled("category")); |
| 571 EXPECT_TRUE(tc.IsCategoryEnabled("disabled-by-default-pattern")); | 528 EXPECT_TRUE(tc.IsCategoryEnabled("disabled-by-default-pattern")); |
| 572 EXPECT_TRUE(tc.IsCategoryGroupEnabled("category")); | 529 EXPECT_TRUE(tc.IsCategoryGroupEnabled("category")); |
| 573 EXPECT_TRUE(tc.IsCategoryGroupEnabled("disabled-by-default-pattern")); | 530 EXPECT_TRUE(tc.IsCategoryGroupEnabled("disabled-by-default-pattern")); |
| 574 } | 531 } |
| 575 | 532 |
| 576 TEST(TraceConfigTest, MergingTraceConfigs) { | 533 TEST(TraceConfigTest, MergingTraceConfigs) { |
| 577 // Merge | 534 // Merge |
| 578 TraceConfig tc; | 535 TraceConfig tc; |
| 579 TraceConfig tc2("included,-excluded,inc_pattern*,-exc_pattern*", ""); | 536 TraceConfig tc2("included,-excluded,inc_pattern*,-exc_pattern*", ""); |
| 580 tc.Merge(tc2); | 537 tc.Merge(tc2); |
| 581 EXPECT_STREQ("{" | 538 EXPECT_STREQ("{" |
| 582 "\"enable_argument_filter\":false," | 539 "\"enable_argument_filter\":false," |
| 583 "\"enable_sampling\":false," | |
| 584 "\"enable_systrace\":false," | 540 "\"enable_systrace\":false," |
| 585 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," | 541 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," |
| 586 "\"record_mode\":\"record-until-full\"" | 542 "\"record_mode\":\"record-until-full\"" |
| 587 "}", | 543 "}", |
| 588 tc.ToString().c_str()); | 544 tc.ToString().c_str()); |
| 589 | 545 |
| 590 tc = TraceConfig("DELAY(test.Delay1;16)", ""); | 546 tc = TraceConfig("DELAY(test.Delay1;16)", ""); |
| 591 tc2 = TraceConfig("DELAY(test.Delay2;32)", ""); | 547 tc2 = TraceConfig("DELAY(test.Delay2;32)", ""); |
| 592 tc.Merge(tc2); | 548 tc.Merge(tc2); |
| 593 EXPECT_EQ(2u, tc.GetSyntheticDelayValues().size()); | 549 EXPECT_EQ(2u, tc.GetSyntheticDelayValues().size()); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 640 " bad_category ")); | 596 " bad_category ")); |
| 641 EXPECT_TRUE(TraceConfig::IsEmptyOrContainsLeadingOrTrailingWhitespace( | 597 EXPECT_TRUE(TraceConfig::IsEmptyOrContainsLeadingOrTrailingWhitespace( |
| 642 "")); | 598 "")); |
| 643 EXPECT_FALSE(TraceConfig::IsEmptyOrContainsLeadingOrTrailingWhitespace( | 599 EXPECT_FALSE(TraceConfig::IsEmptyOrContainsLeadingOrTrailingWhitespace( |
| 644 "good_category")); | 600 "good_category")); |
| 645 } | 601 } |
| 646 | 602 |
| 647 TEST(TraceConfigTest, SetTraceOptionValues) { | 603 TEST(TraceConfigTest, SetTraceOptionValues) { |
| 648 TraceConfig tc; | 604 TraceConfig tc; |
| 649 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 605 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
| 650 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
| 651 EXPECT_FALSE(tc.IsSystraceEnabled()); | 606 EXPECT_FALSE(tc.IsSystraceEnabled()); |
| 652 | 607 |
| 653 tc.SetTraceRecordMode(RECORD_AS_MUCH_AS_POSSIBLE); | 608 tc.SetTraceRecordMode(RECORD_AS_MUCH_AS_POSSIBLE); |
| 654 EXPECT_EQ(RECORD_AS_MUCH_AS_POSSIBLE, tc.GetTraceRecordMode()); | 609 EXPECT_EQ(RECORD_AS_MUCH_AS_POSSIBLE, tc.GetTraceRecordMode()); |
| 655 | 610 |
| 656 tc.EnableSampling(); | |
| 657 EXPECT_TRUE(tc.IsSamplingEnabled()); | |
| 658 | |
| 659 tc.EnableSystrace(); | 611 tc.EnableSystrace(); |
| 660 EXPECT_TRUE(tc.IsSystraceEnabled()); | 612 EXPECT_TRUE(tc.IsSystraceEnabled()); |
| 661 } | 613 } |
| 662 | 614 |
| 663 TEST(TraceConfigTest, TraceConfigFromMemoryConfigString) { | 615 TEST(TraceConfigTest, TraceConfigFromMemoryConfigString) { |
| 664 std::string tc_str1 = | 616 std::string tc_str1 = |
| 665 TraceConfigMemoryTestUtil::GetTraceConfig_PeriodicTriggers(200, 2000); | 617 TraceConfigMemoryTestUtil::GetTraceConfig_PeriodicTriggers(200, 2000); |
| 666 TraceConfig tc1(tc_str1); | 618 TraceConfig tc1(tc_str1); |
| 667 EXPECT_EQ(tc_str1, tc1.ToString()); | 619 EXPECT_EQ(tc_str1, tc1.ToString()); |
| 668 EXPECT_TRUE(tc1.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory)); | 620 EXPECT_TRUE(tc1.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory)); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 709 EXPECT_NE(std::string::npos, tc.ToString().find("memory_dump_config")); | 661 EXPECT_NE(std::string::npos, tc.ToString().find("memory_dump_config")); |
| 710 EXPECT_EQ(2u, tc.memory_dump_config_.triggers.size()); | 662 EXPECT_EQ(2u, tc.memory_dump_config_.triggers.size()); |
| 711 EXPECT_EQ(TraceConfig::MemoryDumpConfig::HeapProfiler | 663 EXPECT_EQ(TraceConfig::MemoryDumpConfig::HeapProfiler |
| 712 ::kDefaultBreakdownThresholdBytes, | 664 ::kDefaultBreakdownThresholdBytes, |
| 713 tc.memory_dump_config_.heap_profiler_options | 665 tc.memory_dump_config_.heap_profiler_options |
| 714 .breakdown_threshold_bytes); | 666 .breakdown_threshold_bytes); |
| 715 } | 667 } |
| 716 | 668 |
| 717 } // namespace trace_event | 669 } // namespace trace_event |
| 718 } // namespace base | 670 } // namespace base |
| OLD | NEW |