| 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 |