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" |
(...skipping 19 matching lines...) Expand all Loading... |
30 "\"enable_systrace\":true," | 30 "\"enable_systrace\":true," |
31 "\"event_filters\":[" | 31 "\"event_filters\":[" |
32 "{" | 32 "{" |
33 "\"excluded_categories\":[\"unfiltered_cat\"]," | 33 "\"excluded_categories\":[\"unfiltered_cat\"]," |
34 "\"filter_args\":{\"event_name_whitelist\":[\"a snake\",\"a dog\"]}," | 34 "\"filter_args\":{\"event_name_whitelist\":[\"a snake\",\"a dog\"]}," |
35 "\"filter_predicate\":\"event_whitelist_predicate\"," | 35 "\"filter_predicate\":\"event_whitelist_predicate\"," |
36 "\"included_categories\":[\"*\"]" | 36 "\"included_categories\":[\"*\"]" |
37 "}" | 37 "}" |
38 "]," | 38 "]," |
39 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," | 39 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," |
40 "\"included_categories\":[\"included\"," | 40 "\"included_categories\":[" |
| 41 "\"included\"," |
41 "\"inc_pattern*\"," | 42 "\"inc_pattern*\"," |
42 "\"disabled-by-default-cc\"," | 43 "\"disabled-by-default-cc\"," |
43 "\"disabled-by-default-memory-infra\"]," | 44 "\"disabled-by-default-memory-infra\"]," |
44 "\"memory_dump_config\":{" | 45 "\"memory_dump_config\":{" |
45 "\"allowed_dump_modes\":[\"background\",\"light\",\"detailed\"]," | 46 "\"allowed_dump_modes\":[\"background\",\"light\",\"detailed\"]," |
46 "\"heap_profiler_options\":{" | 47 "\"heap_profiler_options\":{" |
47 "\"breakdown_threshold_bytes\":10240" | 48 "\"breakdown_threshold_bytes\":10240" |
48 "}," | 49 "}," |
49 "\"triggers\":[" | 50 "\"triggers\":[" |
50 "{\"mode\":\"light\",\"periodic_interval_ms\":50}," | 51 "{" |
51 "{\"mode\":\"detailed\",\"periodic_interval_ms\":1000}" | 52 "\"min_time_between_dumps_ms\":50," |
| 53 "\"mode\":\"light\"," |
| 54 "\"type\":\"periodic_interval\"" |
| 55 "}," |
| 56 "{" |
| 57 "\"min_time_between_dumps_ms\":1000," |
| 58 "\"mode\":\"detailed\"," |
| 59 "\"type\":\"peak_memory_usage\"" |
| 60 "}" |
52 "]" | 61 "]" |
53 "}," | 62 "}," |
54 "\"record_mode\":\"record-continuously\"," | 63 "\"record_mode\":\"record-continuously\"," |
55 "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]" | 64 "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]" |
56 "}"; | 65 "}"; |
57 | 66 |
58 void CheckDefaultTraceConfigBehavior(const TraceConfig& tc) { | 67 void CheckDefaultTraceConfigBehavior(const TraceConfig& tc) { |
59 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 68 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
60 EXPECT_FALSE(tc.IsSystraceEnabled()); | 69 EXPECT_FALSE(tc.IsSystraceEnabled()); |
61 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | 70 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); |
(...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
615 | 624 |
616 tc.EnableSystrace(); | 625 tc.EnableSystrace(); |
617 EXPECT_TRUE(tc.IsSystraceEnabled()); | 626 EXPECT_TRUE(tc.IsSystraceEnabled()); |
618 } | 627 } |
619 | 628 |
620 TEST(TraceConfigTest, TraceConfigFromMemoryConfigString) { | 629 TEST(TraceConfigTest, TraceConfigFromMemoryConfigString) { |
621 std::string tc_str1 = | 630 std::string tc_str1 = |
622 TraceConfigMemoryTestUtil::GetTraceConfig_PeriodicTriggers(200, 2000); | 631 TraceConfigMemoryTestUtil::GetTraceConfig_PeriodicTriggers(200, 2000); |
623 TraceConfig tc1(tc_str1); | 632 TraceConfig tc1(tc_str1); |
624 EXPECT_EQ(tc_str1, tc1.ToString()); | 633 EXPECT_EQ(tc_str1, tc1.ToString()); |
| 634 TraceConfig tc2( |
| 635 TraceConfigMemoryTestUtil::GetTraceConfig_LegacyPeriodicTriggers(200, |
| 636 2000)); |
| 637 EXPECT_EQ(tc_str1, tc2.ToString()); |
| 638 |
625 EXPECT_TRUE(tc1.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory)); | 639 EXPECT_TRUE(tc1.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory)); |
626 ASSERT_EQ(2u, tc1.memory_dump_config_.triggers.size()); | 640 ASSERT_EQ(2u, tc1.memory_dump_config_.triggers.size()); |
627 | 641 |
628 EXPECT_EQ(200u, tc1.memory_dump_config_.triggers[0].periodic_interval_ms); | 642 EXPECT_EQ(200u, |
| 643 tc1.memory_dump_config_.triggers[0].min_time_between_dumps_ms); |
629 EXPECT_EQ(MemoryDumpLevelOfDetail::LIGHT, | 644 EXPECT_EQ(MemoryDumpLevelOfDetail::LIGHT, |
630 tc1.memory_dump_config_.triggers[0].level_of_detail); | 645 tc1.memory_dump_config_.triggers[0].level_of_detail); |
631 | 646 |
632 EXPECT_EQ(2000u, tc1.memory_dump_config_.triggers[1].periodic_interval_ms); | 647 EXPECT_EQ(2000u, |
| 648 tc1.memory_dump_config_.triggers[1].min_time_between_dumps_ms); |
633 EXPECT_EQ(MemoryDumpLevelOfDetail::DETAILED, | 649 EXPECT_EQ(MemoryDumpLevelOfDetail::DETAILED, |
634 tc1.memory_dump_config_.triggers[1].level_of_detail); | 650 tc1.memory_dump_config_.triggers[1].level_of_detail); |
635 EXPECT_EQ( | 651 EXPECT_EQ( |
636 2048u, | 652 2048u, |
637 tc1.memory_dump_config_.heap_profiler_options.breakdown_threshold_bytes); | 653 tc1.memory_dump_config_.heap_profiler_options.breakdown_threshold_bytes); |
638 | 654 |
639 std::string tc_str2 = | 655 std::string tc_str3 = |
640 TraceConfigMemoryTestUtil::GetTraceConfig_BackgroundTrigger( | 656 TraceConfigMemoryTestUtil::GetTraceConfig_BackgroundTrigger( |
641 1 /* period_ms */); | 657 1 /* period_ms */); |
642 TraceConfig tc2(tc_str2); | 658 TraceConfig tc3(tc_str3); |
643 EXPECT_EQ(tc_str2, tc2.ToString()); | 659 EXPECT_EQ(tc_str3, tc3.ToString()); |
644 EXPECT_TRUE(tc2.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory)); | 660 EXPECT_TRUE(tc3.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory)); |
645 ASSERT_EQ(1u, tc2.memory_dump_config_.triggers.size()); | 661 ASSERT_EQ(1u, tc3.memory_dump_config_.triggers.size()); |
646 EXPECT_EQ(1u, tc2.memory_dump_config_.triggers[0].periodic_interval_ms); | 662 EXPECT_EQ(1u, tc3.memory_dump_config_.triggers[0].min_time_between_dumps_ms); |
647 EXPECT_EQ(MemoryDumpLevelOfDetail::BACKGROUND, | 663 EXPECT_EQ(MemoryDumpLevelOfDetail::BACKGROUND, |
648 tc2.memory_dump_config_.triggers[0].level_of_detail); | 664 tc3.memory_dump_config_.triggers[0].level_of_detail); |
| 665 |
| 666 std::string tc_str4 = |
| 667 TraceConfigMemoryTestUtil::GetTraceConfig_PeakDetectionTrigger( |
| 668 1 /*heavy_period */); |
| 669 TraceConfig tc4(tc_str4); |
| 670 EXPECT_EQ(tc_str4, tc4.ToString()); |
| 671 ASSERT_EQ(1u, tc4.memory_dump_config_.triggers.size()); |
| 672 EXPECT_EQ(1u, tc4.memory_dump_config_.triggers[0].min_time_between_dumps_ms); |
| 673 EXPECT_EQ(MemoryDumpLevelOfDetail::DETAILED, |
| 674 tc4.memory_dump_config_.triggers[0].level_of_detail); |
649 } | 675 } |
650 | 676 |
651 TEST(TraceConfigTest, EmptyMemoryDumpConfigTest) { | 677 TEST(TraceConfigTest, EmptyMemoryDumpConfigTest) { |
652 // Empty trigger list should also be specified when converting back to string. | 678 // Empty trigger list should also be specified when converting back to string. |
653 TraceConfig tc(TraceConfigMemoryTestUtil::GetTraceConfig_EmptyTriggers()); | 679 TraceConfig tc(TraceConfigMemoryTestUtil::GetTraceConfig_EmptyTriggers()); |
654 EXPECT_EQ(TraceConfigMemoryTestUtil::GetTraceConfig_EmptyTriggers(), | 680 EXPECT_EQ(TraceConfigMemoryTestUtil::GetTraceConfig_EmptyTriggers(), |
655 tc.ToString()); | 681 tc.ToString()); |
656 EXPECT_EQ(0u, tc.memory_dump_config_.triggers.size()); | 682 EXPECT_EQ(0u, tc.memory_dump_config_.triggers.size()); |
657 EXPECT_EQ(TraceConfig::MemoryDumpConfig::HeapProfiler | 683 EXPECT_EQ(TraceConfig::MemoryDumpConfig::HeapProfiler |
658 ::kDefaultBreakdownThresholdBytes, | 684 ::kDefaultBreakdownThresholdBytes, |
659 tc.memory_dump_config_.heap_profiler_options | 685 tc.memory_dump_config_.heap_profiler_options |
660 .breakdown_threshold_bytes); | 686 .breakdown_threshold_bytes); |
661 } | 687 } |
662 | 688 |
663 TEST(TraceConfigTest, LegacyStringToMemoryDumpConfig) { | 689 TEST(TraceConfigTest, LegacyStringToMemoryDumpConfig) { |
664 TraceConfig tc(MemoryDumpManager::kTraceCategory, ""); | 690 TraceConfig tc(MemoryDumpManager::kTraceCategory, ""); |
665 EXPECT_TRUE(tc.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory)); | 691 EXPECT_TRUE(tc.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory)); |
666 EXPECT_NE(std::string::npos, tc.ToString().find("memory_dump_config")); | 692 EXPECT_NE(std::string::npos, tc.ToString().find("memory_dump_config")); |
667 EXPECT_EQ(2u, tc.memory_dump_config_.triggers.size()); | 693 EXPECT_EQ(2u, tc.memory_dump_config_.triggers.size()); |
668 EXPECT_EQ(TraceConfig::MemoryDumpConfig::HeapProfiler | 694 EXPECT_EQ(TraceConfig::MemoryDumpConfig::HeapProfiler |
669 ::kDefaultBreakdownThresholdBytes, | 695 ::kDefaultBreakdownThresholdBytes, |
670 tc.memory_dump_config_.heap_profiler_options | 696 tc.memory_dump_config_.heap_profiler_options |
671 .breakdown_threshold_bytes); | 697 .breakdown_threshold_bytes); |
672 } | 698 } |
673 | 699 |
674 } // namespace trace_event | 700 } // namespace trace_event |
675 } // namespace base | 701 } // namespace base |
OLD | NEW |