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/macros.h" | 8 #include "base/macros.h" |
9 #include "base/trace_event/memory_dump_manager.h" | 9 #include "base/trace_event/memory_dump_manager.h" |
10 #include "base/trace_event/trace_config.h" | 10 #include "base/trace_event/trace_config.h" |
11 #include "base/trace_event/trace_config_memory_test_util.h" | 11 #include "base/trace_event/trace_config_memory_test_util.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
13 | 13 |
14 namespace base { | 14 namespace base { |
15 namespace trace_event { | 15 namespace trace_event { |
16 | 16 |
17 namespace { | 17 namespace { |
18 | 18 |
19 const char kDefaultTraceConfigString[] = | 19 const char kDefaultTraceConfigString[] = |
20 "{" | 20 "{" |
21 "\"enable_argument_filter\":false," | 21 "\"enable_argument_filter\":false," |
22 "\"enable_sampling\":false," | 22 "\"enable_sampling\":false," |
23 "\"enable_systrace\":false," | 23 "\"enable_systrace\":false," |
24 "\"excluded_categories\":[\"*Debug\",\"*Test\"]," | |
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," | 30 "\"enable_sampling\":true," |
32 "\"enable_systrace\":true," | 31 "\"enable_systrace\":true," |
33 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," | 32 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," |
34 "\"included_categories\":[\"included\"," | 33 "\"included_categories\":[\"included\"," |
35 "\"inc_pattern*\"," | 34 "\"inc_pattern*\"," |
36 "\"disabled-by-default-cc\"," | 35 "\"disabled-by-default-cc\"," |
37 "\"disabled-by-default-memory-infra\"]," | 36 "\"disabled-by-default-memory-infra\"]," |
38 "\"memory_dump_config\":{" | 37 "\"memory_dump_config\":{" |
39 "\"heap_profiler_options\":{" | 38 "\"heap_profiler_options\":{" |
40 "\"breakdown_threshold_bytes\":10240" | 39 "\"breakdown_threshold_bytes\":10240" |
41 "}," | 40 "}," |
42 "\"triggers\":[" | 41 "\"triggers\":[" |
43 "{\"mode\":\"light\",\"periodic_interval_ms\":50}," | 42 "{\"mode\":\"light\",\"periodic_interval_ms\":50}," |
44 "{\"mode\":\"detailed\",\"periodic_interval_ms\":1000}" | 43 "{\"mode\":\"detailed\",\"periodic_interval_ms\":1000}" |
45 "]" | 44 "]" |
46 "}," | 45 "}," |
47 "\"record_mode\":\"record-continuously\"," | 46 "\"record_mode\":\"record-continuously\"," |
48 "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]" | 47 "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]" |
49 "}"; | 48 "}"; |
50 | 49 |
| 50 void CheckDefaultTraceConfigBehavior(const TraceConfig& tc) { |
| 51 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
| 52 EXPECT_FALSE(tc.IsSamplingEnabled()); |
| 53 EXPECT_FALSE(tc.IsSystraceEnabled()); |
| 54 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
| 55 |
| 56 // Default trace config enables every category filter except the |
| 57 // disabled-by-default-* ones. |
| 58 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1")); |
| 59 EXPECT_TRUE(tc.IsCategoryGroupEnabled("not-excluded-category")); |
| 60 EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-cc")); |
| 61 |
| 62 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1,not-excluded-category")); |
| 63 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1,disabled-by-default-cc")); |
| 64 EXPECT_FALSE(tc.IsCategoryGroupEnabled( |
| 65 "disabled-by-default-cc,disabled-by-default-cc2")); |
| 66 } |
| 67 |
51 } // namespace | 68 } // namespace |
52 | 69 |
53 TEST(TraceConfigTest, TraceConfigFromValidLegacyFormat) { | 70 TEST(TraceConfigTest, TraceConfigFromValidLegacyFormat) { |
54 // From trace options strings | 71 // From trace options strings |
55 TraceConfig config("", "record-until-full"); | 72 TraceConfig config("", "record-until-full"); |
56 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); | 73 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); |
57 EXPECT_FALSE(config.IsSamplingEnabled()); | 74 EXPECT_FALSE(config.IsSamplingEnabled()); |
58 EXPECT_FALSE(config.IsSystraceEnabled()); | 75 EXPECT_FALSE(config.IsSystraceEnabled()); |
59 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 76 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
60 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); | 77 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 | 165 |
149 config = TraceConfig("", RECORD_AS_MUCH_AS_POSSIBLE); | 166 config = TraceConfig("", RECORD_AS_MUCH_AS_POSSIBLE); |
150 EXPECT_EQ(RECORD_AS_MUCH_AS_POSSIBLE, config.GetTraceRecordMode()); | 167 EXPECT_EQ(RECORD_AS_MUCH_AS_POSSIBLE, config.GetTraceRecordMode()); |
151 EXPECT_FALSE(config.IsSamplingEnabled()); | 168 EXPECT_FALSE(config.IsSamplingEnabled()); |
152 EXPECT_FALSE(config.IsSystraceEnabled()); | 169 EXPECT_FALSE(config.IsSystraceEnabled()); |
153 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 170 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
154 EXPECT_STREQ("record-as-much-as-possible", | 171 EXPECT_STREQ("record-as-much-as-possible", |
155 config.ToTraceOptionsString().c_str()); | 172 config.ToTraceOptionsString().c_str()); |
156 | 173 |
157 // From category filter strings | 174 // From category filter strings |
158 config = TraceConfig("-*Debug,-*Test", ""); | |
159 EXPECT_STREQ("-*Debug,-*Test", config.ToCategoryFilterString().c_str()); | |
160 | |
161 config = TraceConfig("included,-excluded,inc_pattern*,-exc_pattern*", ""); | 175 config = TraceConfig("included,-excluded,inc_pattern*,-exc_pattern*", ""); |
162 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", | 176 EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*", |
163 config.ToCategoryFilterString().c_str()); | 177 config.ToCategoryFilterString().c_str()); |
164 | 178 |
165 config = TraceConfig("only_inc_cat", ""); | 179 config = TraceConfig("only_inc_cat", ""); |
166 EXPECT_STREQ("only_inc_cat", config.ToCategoryFilterString().c_str()); | 180 EXPECT_STREQ("only_inc_cat", config.ToCategoryFilterString().c_str()); |
167 | 181 |
168 config = TraceConfig("-only_exc_cat", ""); | 182 config = TraceConfig("-only_exc_cat", ""); |
169 EXPECT_STREQ("-only_exc_cat", config.ToCategoryFilterString().c_str()); | 183 EXPECT_STREQ("-only_exc_cat", config.ToCategoryFilterString().c_str()); |
170 | 184 |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
250 "DELAY(test.Delay)", | 264 "DELAY(test.Delay)", |
251 "DELAY(test.Delay;)" | 265 "DELAY(test.Delay;)" |
252 }; | 266 }; |
253 for (size_t i = 0; i < arraysize(configs); i++) { | 267 for (size_t i = 0; i < arraysize(configs); i++) { |
254 TraceConfig tc(configs[i], ""); | 268 TraceConfig tc(configs[i], ""); |
255 EXPECT_EQ(0u, tc.GetSyntheticDelayValues().size()); | 269 EXPECT_EQ(0u, tc.GetSyntheticDelayValues().size()); |
256 } | 270 } |
257 } | 271 } |
258 | 272 |
259 TEST(TraceConfigTest, ConstructDefaultTraceConfig) { | 273 TEST(TraceConfigTest, ConstructDefaultTraceConfig) { |
260 // Make sure that upon an empty string, we fall back to the default config. | |
261 TraceConfig tc; | 274 TraceConfig tc; |
| 275 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
| 276 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); |
| 277 CheckDefaultTraceConfigBehavior(tc); |
| 278 |
| 279 // Constructors from category filter string and trace option string. |
| 280 TraceConfig tc_asterisk("*", ""); |
| 281 EXPECT_STREQ("*", tc_asterisk.ToCategoryFilterString().c_str()); |
| 282 CheckDefaultTraceConfigBehavior(tc_asterisk); |
| 283 |
| 284 TraceConfig tc_empty_category_filter("", ""); |
| 285 EXPECT_STREQ("", tc_empty_category_filter.ToCategoryFilterString().c_str()); |
| 286 EXPECT_STREQ(kDefaultTraceConfigString, |
| 287 tc_empty_category_filter.ToString().c_str()); |
| 288 CheckDefaultTraceConfigBehavior(tc_empty_category_filter); |
| 289 |
| 290 // Constructor from JSON formated config string. |
| 291 TraceConfig tc_empty_json_string(""); |
| 292 EXPECT_STREQ("", tc_empty_json_string.ToCategoryFilterString().c_str()); |
| 293 EXPECT_STREQ(kDefaultTraceConfigString, |
| 294 tc_empty_json_string.ToString().c_str()); |
| 295 CheckDefaultTraceConfigBehavior(tc_empty_json_string); |
| 296 |
| 297 // Constructor from dictionary value. |
| 298 DictionaryValue dict; |
| 299 TraceConfig tc_dict(dict); |
| 300 EXPECT_STREQ("", tc_dict.ToCategoryFilterString().c_str()); |
| 301 EXPECT_STREQ(kDefaultTraceConfigString, tc_dict.ToString().c_str()); |
| 302 CheckDefaultTraceConfigBehavior(tc_dict); |
| 303 } |
| 304 |
| 305 TEST(TraceConfigTest, EmptyAndAsteriskCategoryFilterString) { |
| 306 TraceConfig tc_empty("", ""); |
| 307 TraceConfig tc_asterisk("*", ""); |
| 308 |
| 309 EXPECT_STREQ("", tc_empty.ToCategoryFilterString().c_str()); |
| 310 EXPECT_STREQ("*", tc_asterisk.ToCategoryFilterString().c_str()); |
| 311 |
| 312 // Both fall back to default config. |
| 313 CheckDefaultTraceConfigBehavior(tc_empty); |
| 314 CheckDefaultTraceConfigBehavior(tc_asterisk); |
| 315 |
| 316 // They differ only for internal checking. |
| 317 EXPECT_FALSE(tc_empty.IsCategoryEnabled("Category1")); |
| 318 EXPECT_FALSE(tc_empty.IsCategoryEnabled("not-excluded-category")); |
| 319 EXPECT_TRUE(tc_asterisk.IsCategoryEnabled("Category1")); |
| 320 EXPECT_TRUE(tc_asterisk.IsCategoryEnabled("not-excluded-category")); |
| 321 } |
| 322 |
| 323 TEST(TraceConfigTest, TraceConfigFromDict) { |
| 324 // Passing in empty dictionary will result in default trace config. |
| 325 DictionaryValue dict; |
| 326 TraceConfig tc(dict); |
262 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); | 327 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); |
263 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 328 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
264 EXPECT_FALSE(tc.IsSamplingEnabled()); | 329 EXPECT_FALSE(tc.IsSamplingEnabled()); |
265 EXPECT_FALSE(tc.IsSystraceEnabled()); | 330 EXPECT_FALSE(tc.IsSystraceEnabled()); |
266 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | |
267 EXPECT_STREQ("-*Debug,-*Test", tc.ToCategoryFilterString().c_str()); | |
268 | |
269 EXPECT_FALSE(tc.IsCategoryEnabled("Category1")); | |
270 EXPECT_FALSE(tc.IsCategoryEnabled("not-excluded-category")); | |
271 EXPECT_FALSE(tc.IsCategoryEnabled("CategoryTest")); | |
272 EXPECT_FALSE(tc.IsCategoryEnabled("CategoryDebug")); | |
273 EXPECT_FALSE(tc.IsCategoryEnabled("disabled-by-default-cc")); | |
274 | |
275 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1")); | |
276 EXPECT_TRUE(tc.IsCategoryGroupEnabled("not-excluded-category")); | |
277 EXPECT_FALSE(tc.IsCategoryGroupEnabled("CategoryTest")); | |
278 EXPECT_FALSE(tc.IsCategoryGroupEnabled("CategoryDebug")); | |
279 EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-cc")); | |
280 | |
281 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1,CategoryDebug")); | |
282 EXPECT_TRUE(tc.IsCategoryGroupEnabled("CategoryDebug,Category1")); | |
283 EXPECT_TRUE(tc.IsCategoryGroupEnabled("CategoryTest,not-excluded-category")); | |
284 EXPECT_FALSE(tc.IsCategoryGroupEnabled("CategoryDebug,CategoryTest")); | |
285 } | |
286 | |
287 TEST(TraceConfigTest, TraceConfigFromDict) { | |
288 // Passing in empty dictionary will not result in default trace config. | |
289 DictionaryValue dict; | |
290 TraceConfig tc(dict); | |
291 EXPECT_STRNE(kDefaultTraceConfigString, tc.ToString().c_str()); | |
292 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | |
293 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
294 EXPECT_FALSE(tc.IsSystraceEnabled()); | |
295 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 331 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
296 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); | 332 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
297 | 333 |
298 std::unique_ptr<Value> default_value( | 334 std::unique_ptr<Value> default_value( |
299 JSONReader::Read(kDefaultTraceConfigString)); | 335 JSONReader::Read(kDefaultTraceConfigString)); |
300 DCHECK(default_value); | 336 DCHECK(default_value); |
301 const DictionaryValue* default_dict = nullptr; | 337 const DictionaryValue* default_dict = nullptr; |
302 bool is_dict = default_value->GetAsDictionary(&default_dict); | 338 bool is_dict = default_value->GetAsDictionary(&default_dict); |
303 DCHECK(is_dict); | 339 DCHECK(is_dict); |
304 TraceConfig default_tc(*default_dict); | 340 TraceConfig default_tc(*default_dict); |
305 EXPECT_STREQ(kDefaultTraceConfigString, default_tc.ToString().c_str()); | 341 EXPECT_STREQ(kDefaultTraceConfigString, default_tc.ToString().c_str()); |
306 EXPECT_EQ(RECORD_UNTIL_FULL, default_tc.GetTraceRecordMode()); | 342 EXPECT_EQ(RECORD_UNTIL_FULL, default_tc.GetTraceRecordMode()); |
307 EXPECT_FALSE(default_tc.IsSamplingEnabled()); | 343 EXPECT_FALSE(default_tc.IsSamplingEnabled()); |
308 EXPECT_FALSE(default_tc.IsSystraceEnabled()); | 344 EXPECT_FALSE(default_tc.IsSystraceEnabled()); |
309 EXPECT_FALSE(default_tc.IsArgumentFilterEnabled()); | 345 EXPECT_FALSE(default_tc.IsArgumentFilterEnabled()); |
310 EXPECT_STREQ("-*Debug,-*Test", default_tc.ToCategoryFilterString().c_str()); | 346 EXPECT_STREQ("", default_tc.ToCategoryFilterString().c_str()); |
311 | 347 |
312 std::unique_ptr<Value> custom_value( | 348 std::unique_ptr<Value> custom_value( |
313 JSONReader::Read(kCustomTraceConfigString)); | 349 JSONReader::Read(kCustomTraceConfigString)); |
314 DCHECK(custom_value); | 350 DCHECK(custom_value); |
315 const DictionaryValue* custom_dict = nullptr; | 351 const DictionaryValue* custom_dict = nullptr; |
316 is_dict = custom_value->GetAsDictionary(&custom_dict); | 352 is_dict = custom_value->GetAsDictionary(&custom_dict); |
317 DCHECK(is_dict); | 353 DCHECK(is_dict); |
318 TraceConfig custom_tc(*custom_dict); | 354 TraceConfig custom_tc(*custom_dict); |
319 EXPECT_STREQ(kCustomTraceConfigString, custom_tc.ToString().c_str()); | 355 EXPECT_STREQ(kCustomTraceConfigString, custom_tc.ToString().c_str()); |
320 EXPECT_EQ(RECORD_CONTINUOUSLY, custom_tc.GetTraceRecordMode()); | 356 EXPECT_EQ(RECORD_CONTINUOUSLY, custom_tc.GetTraceRecordMode()); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
398 | 434 |
399 TEST(TraceConfigTest, TraceConfigFromInvalidString) { | 435 TEST(TraceConfigTest, TraceConfigFromInvalidString) { |
400 // The config string needs to be a dictionary correctly formatted as a JSON | 436 // The config string needs to be a dictionary correctly formatted as a JSON |
401 // string. Otherwise, it will fall back to the default initialization. | 437 // string. Otherwise, it will fall back to the default initialization. |
402 TraceConfig tc(""); | 438 TraceConfig tc(""); |
403 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); | 439 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); |
404 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 440 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
405 EXPECT_FALSE(tc.IsSamplingEnabled()); | 441 EXPECT_FALSE(tc.IsSamplingEnabled()); |
406 EXPECT_FALSE(tc.IsSystraceEnabled()); | 442 EXPECT_FALSE(tc.IsSystraceEnabled()); |
407 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 443 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
408 EXPECT_STREQ("-*Debug,-*Test", tc.ToCategoryFilterString().c_str()); | 444 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
| 445 CheckDefaultTraceConfigBehavior(tc); |
409 | 446 |
410 tc = TraceConfig("This is an invalid config string."); | 447 tc = TraceConfig("This is an invalid config string."); |
411 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); | 448 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); |
412 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 449 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
413 EXPECT_FALSE(tc.IsSamplingEnabled()); | 450 EXPECT_FALSE(tc.IsSamplingEnabled()); |
414 EXPECT_FALSE(tc.IsSystraceEnabled()); | 451 EXPECT_FALSE(tc.IsSystraceEnabled()); |
415 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 452 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
416 EXPECT_STREQ("-*Debug,-*Test", tc.ToCategoryFilterString().c_str()); | 453 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
| 454 CheckDefaultTraceConfigBehavior(tc); |
417 | 455 |
418 tc = TraceConfig("[\"This\", \"is\", \"not\", \"a\", \"dictionary\"]"); | 456 tc = TraceConfig("[\"This\", \"is\", \"not\", \"a\", \"dictionary\"]"); |
419 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); | 457 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); |
420 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 458 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
421 EXPECT_FALSE(tc.IsSamplingEnabled()); | 459 EXPECT_FALSE(tc.IsSamplingEnabled()); |
422 EXPECT_FALSE(tc.IsSystraceEnabled()); | 460 EXPECT_FALSE(tc.IsSystraceEnabled()); |
423 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 461 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
424 EXPECT_STREQ("-*Debug,-*Test", tc.ToCategoryFilterString().c_str()); | 462 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
| 463 CheckDefaultTraceConfigBehavior(tc); |
425 | 464 |
426 tc = TraceConfig("{\"record_mode\": invalid-value-needs-double-quote}"); | 465 tc = TraceConfig("{\"record_mode\": invalid-value-needs-double-quote}"); |
427 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); | 466 EXPECT_STREQ(kDefaultTraceConfigString, tc.ToString().c_str()); |
428 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 467 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
429 EXPECT_FALSE(tc.IsSamplingEnabled()); | 468 EXPECT_FALSE(tc.IsSamplingEnabled()); |
430 EXPECT_FALSE(tc.IsSystraceEnabled()); | 469 EXPECT_FALSE(tc.IsSystraceEnabled()); |
431 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 470 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
432 EXPECT_STREQ("-*Debug,-*Test", tc.ToCategoryFilterString().c_str()); | 471 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
| 472 CheckDefaultTraceConfigBehavior(tc); |
433 | 473 |
434 // If the config string a dictionary formatted as a JSON string, it will | 474 // If the config string a dictionary formatted as a JSON string, it will |
435 // initialize TraceConfig with best effort. | 475 // initialize TraceConfig with best effort. |
436 tc = TraceConfig("{}"); | 476 tc = TraceConfig("{}"); |
437 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 477 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
438 EXPECT_FALSE(tc.IsSamplingEnabled()); | 478 EXPECT_FALSE(tc.IsSamplingEnabled()); |
439 EXPECT_FALSE(tc.IsSystraceEnabled()); | 479 EXPECT_FALSE(tc.IsSystraceEnabled()); |
440 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 480 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
441 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); | 481 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
| 482 CheckDefaultTraceConfigBehavior(tc); |
442 | 483 |
443 tc = TraceConfig("{\"arbitrary-key\":\"arbitrary-value\"}"); | 484 tc = TraceConfig("{\"arbitrary-key\":\"arbitrary-value\"}"); |
444 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 485 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
445 EXPECT_FALSE(tc.IsSamplingEnabled()); | 486 EXPECT_FALSE(tc.IsSamplingEnabled()); |
446 EXPECT_FALSE(tc.IsSystraceEnabled()); | 487 EXPECT_FALSE(tc.IsSystraceEnabled()); |
447 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 488 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
448 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); | 489 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); |
| 490 CheckDefaultTraceConfigBehavior(tc); |
449 | 491 |
450 const char invalid_config_string[] = | 492 const char invalid_config_string[] = |
451 "{" | 493 "{" |
452 "\"enable_sampling\":\"true\"," | 494 "\"enable_sampling\":\"true\"," |
453 "\"enable_systrace\":1," | 495 "\"enable_systrace\":1," |
454 "\"excluded_categories\":[\"excluded\"]," | 496 "\"excluded_categories\":[\"excluded\"]," |
455 "\"included_categories\":\"not a list\"," | 497 "\"included_categories\":\"not a list\"," |
456 "\"record_mode\":\"arbitrary-mode\"," | 498 "\"record_mode\":\"arbitrary-mode\"," |
457 "\"synthetic_delays\":[\"test.Delay1;16\"," | 499 "\"synthetic_delays\":[\"test.Delay1;16\"," |
458 "\"invalid-delay\"," | 500 "\"invalid-delay\"," |
(...skipping 21 matching lines...) Expand all Loading... |
480 | 522 |
481 TEST(TraceConfigTest, MergingTraceConfigs) { | 523 TEST(TraceConfigTest, MergingTraceConfigs) { |
482 // Merge | 524 // Merge |
483 TraceConfig tc; | 525 TraceConfig tc; |
484 TraceConfig tc2("included,-excluded,inc_pattern*,-exc_pattern*", ""); | 526 TraceConfig tc2("included,-excluded,inc_pattern*,-exc_pattern*", ""); |
485 tc.Merge(tc2); | 527 tc.Merge(tc2); |
486 EXPECT_STREQ("{" | 528 EXPECT_STREQ("{" |
487 "\"enable_argument_filter\":false," | 529 "\"enable_argument_filter\":false," |
488 "\"enable_sampling\":false," | 530 "\"enable_sampling\":false," |
489 "\"enable_systrace\":false," | 531 "\"enable_systrace\":false," |
490 "\"excluded_categories\":[" | 532 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," |
491 "\"*Debug\",\"*Test\",\"excluded\",\"exc_pattern*\"" | |
492 "]," | |
493 "\"record_mode\":\"record-until-full\"" | 533 "\"record_mode\":\"record-until-full\"" |
494 "}", | 534 "}", |
495 tc.ToString().c_str()); | 535 tc.ToString().c_str()); |
496 | 536 |
497 tc = TraceConfig("DELAY(test.Delay1;16)", ""); | 537 tc = TraceConfig("DELAY(test.Delay1;16)", ""); |
498 tc2 = TraceConfig("DELAY(test.Delay2;32)", ""); | 538 tc2 = TraceConfig("DELAY(test.Delay2;32)", ""); |
499 tc.Merge(tc2); | 539 tc.Merge(tc2); |
500 EXPECT_EQ(2u, tc.GetSyntheticDelayValues().size()); | 540 EXPECT_EQ(2u, tc.GetSyntheticDelayValues().size()); |
501 EXPECT_STREQ("test.Delay1;16", tc.GetSyntheticDelayValues()[0].c_str()); | 541 EXPECT_STREQ("test.Delay1;16", tc.GetSyntheticDelayValues()[0].c_str()); |
502 EXPECT_STREQ("test.Delay2;32", tc.GetSyntheticDelayValues()[1].c_str()); | 542 EXPECT_STREQ("test.Delay2;32", tc.GetSyntheticDelayValues()[1].c_str()); |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
615 EXPECT_NE(std::string::npos, tc.ToString().find("memory_dump_config")); | 655 EXPECT_NE(std::string::npos, tc.ToString().find("memory_dump_config")); |
616 EXPECT_EQ(2u, tc.memory_dump_config_.triggers.size()); | 656 EXPECT_EQ(2u, tc.memory_dump_config_.triggers.size()); |
617 EXPECT_EQ(TraceConfig::MemoryDumpConfig::HeapProfiler | 657 EXPECT_EQ(TraceConfig::MemoryDumpConfig::HeapProfiler |
618 ::kDefaultBreakdownThresholdBytes, | 658 ::kDefaultBreakdownThresholdBytes, |
619 tc.memory_dump_config_.heap_profiler_options | 659 tc.memory_dump_config_.heap_profiler_options |
620 .breakdown_threshold_bytes); | 660 .breakdown_threshold_bytes); |
621 } | 661 } |
622 | 662 |
623 } // namespace trace_event | 663 } // namespace trace_event |
624 } // namespace base | 664 } // namespace base |
OLD | NEW |