Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(10)

Side by Side Diff: base/trace_event/trace_config_unittest.cc

Issue 2542853002: [tracing] Introduce config to setup memory-infra peak detection (Closed)
Patch Set: fix devtools test. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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 548 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 619
611 tc.EnableSystrace(); 620 tc.EnableSystrace();
612 EXPECT_TRUE(tc.IsSystraceEnabled()); 621 EXPECT_TRUE(tc.IsSystraceEnabled());
613 } 622 }
614 623
615 TEST(TraceConfigTest, TraceConfigFromMemoryConfigString) { 624 TEST(TraceConfigTest, TraceConfigFromMemoryConfigString) {
616 std::string tc_str1 = 625 std::string tc_str1 =
617 TraceConfigMemoryTestUtil::GetTraceConfig_PeriodicTriggers(200, 2000); 626 TraceConfigMemoryTestUtil::GetTraceConfig_PeriodicTriggers(200, 2000);
618 TraceConfig tc1(tc_str1); 627 TraceConfig tc1(tc_str1);
619 EXPECT_EQ(tc_str1, tc1.ToString()); 628 EXPECT_EQ(tc_str1, tc1.ToString());
629 TraceConfig tc2(
630 TraceConfigMemoryTestUtil::GetTraceConfig_LegacyPeriodicTriggers(200,
631 2000));
632 EXPECT_EQ(tc_str1, tc2.ToString());
633
620 EXPECT_TRUE(tc1.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory)); 634 EXPECT_TRUE(tc1.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory));
621 ASSERT_EQ(2u, tc1.memory_dump_config_.triggers.size()); 635 ASSERT_EQ(2u, tc1.memory_dump_config_.triggers.size());
622 636
623 EXPECT_EQ(200u, tc1.memory_dump_config_.triggers[0].periodic_interval_ms); 637 EXPECT_EQ(200u,
638 tc1.memory_dump_config_.triggers[0].min_time_between_dumps_ms);
624 EXPECT_EQ(MemoryDumpLevelOfDetail::LIGHT, 639 EXPECT_EQ(MemoryDumpLevelOfDetail::LIGHT,
625 tc1.memory_dump_config_.triggers[0].level_of_detail); 640 tc1.memory_dump_config_.triggers[0].level_of_detail);
626 641
627 EXPECT_EQ(2000u, tc1.memory_dump_config_.triggers[1].periodic_interval_ms); 642 EXPECT_EQ(2000u,
643 tc1.memory_dump_config_.triggers[1].min_time_between_dumps_ms);
628 EXPECT_EQ(MemoryDumpLevelOfDetail::DETAILED, 644 EXPECT_EQ(MemoryDumpLevelOfDetail::DETAILED,
629 tc1.memory_dump_config_.triggers[1].level_of_detail); 645 tc1.memory_dump_config_.triggers[1].level_of_detail);
630 EXPECT_EQ( 646 EXPECT_EQ(
631 2048u, 647 2048u,
632 tc1.memory_dump_config_.heap_profiler_options.breakdown_threshold_bytes); 648 tc1.memory_dump_config_.heap_profiler_options.breakdown_threshold_bytes);
633 649
634 std::string tc_str2 = 650 std::string tc_str3 =
635 TraceConfigMemoryTestUtil::GetTraceConfig_BackgroundTrigger( 651 TraceConfigMemoryTestUtil::GetTraceConfig_BackgroundTrigger(
636 1 /* period_ms */); 652 1 /* period_ms */);
637 TraceConfig tc2(tc_str2); 653 TraceConfig tc3(tc_str3);
638 EXPECT_EQ(tc_str2, tc2.ToString()); 654 EXPECT_EQ(tc_str3, tc3.ToString());
639 EXPECT_TRUE(tc2.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory)); 655 EXPECT_TRUE(tc3.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory));
640 ASSERT_EQ(1u, tc2.memory_dump_config_.triggers.size()); 656 ASSERT_EQ(1u, tc3.memory_dump_config_.triggers.size());
641 EXPECT_EQ(1u, tc2.memory_dump_config_.triggers[0].periodic_interval_ms); 657 EXPECT_EQ(1u, tc3.memory_dump_config_.triggers[0].min_time_between_dumps_ms);
642 EXPECT_EQ(MemoryDumpLevelOfDetail::BACKGROUND, 658 EXPECT_EQ(MemoryDumpLevelOfDetail::BACKGROUND,
643 tc2.memory_dump_config_.triggers[0].level_of_detail); 659 tc3.memory_dump_config_.triggers[0].level_of_detail);
660
661 std::string tc_str4 =
662 TraceConfigMemoryTestUtil::GetTraceConfig_PeakDetectionTrigger(
663 1 /*heavy_period */);
664 TraceConfig tc4(tc_str4);
665 EXPECT_EQ(tc_str4, tc4.ToString());
666 ASSERT_EQ(1u, tc4.memory_dump_config_.triggers.size());
667 EXPECT_EQ(1u, tc4.memory_dump_config_.triggers[0].min_time_between_dumps_ms);
668 EXPECT_EQ(MemoryDumpLevelOfDetail::DETAILED,
669 tc4.memory_dump_config_.triggers[0].level_of_detail);
644 } 670 }
645 671
646 TEST(TraceConfigTest, EmptyMemoryDumpConfigTest) { 672 TEST(TraceConfigTest, EmptyMemoryDumpConfigTest) {
647 // Empty trigger list should also be specified when converting back to string. 673 // Empty trigger list should also be specified when converting back to string.
648 TraceConfig tc(TraceConfigMemoryTestUtil::GetTraceConfig_EmptyTriggers()); 674 TraceConfig tc(TraceConfigMemoryTestUtil::GetTraceConfig_EmptyTriggers());
649 EXPECT_EQ(TraceConfigMemoryTestUtil::GetTraceConfig_EmptyTriggers(), 675 EXPECT_EQ(TraceConfigMemoryTestUtil::GetTraceConfig_EmptyTriggers(),
650 tc.ToString()); 676 tc.ToString());
651 EXPECT_EQ(0u, tc.memory_dump_config_.triggers.size()); 677 EXPECT_EQ(0u, tc.memory_dump_config_.triggers.size());
652 EXPECT_EQ(TraceConfig::MemoryDumpConfig::HeapProfiler 678 EXPECT_EQ(TraceConfig::MemoryDumpConfig::HeapProfiler
653 ::kDefaultBreakdownThresholdBytes, 679 ::kDefaultBreakdownThresholdBytes,
654 tc.memory_dump_config_.heap_profiler_options 680 tc.memory_dump_config_.heap_profiler_options
655 .breakdown_threshold_bytes); 681 .breakdown_threshold_bytes);
656 } 682 }
657 683
658 TEST(TraceConfigTest, LegacyStringToMemoryDumpConfig) { 684 TEST(TraceConfigTest, LegacyStringToMemoryDumpConfig) {
659 TraceConfig tc(MemoryDumpManager::kTraceCategory, ""); 685 TraceConfig tc(MemoryDumpManager::kTraceCategory, "");
660 EXPECT_TRUE(tc.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory)); 686 EXPECT_TRUE(tc.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory));
661 EXPECT_NE(std::string::npos, tc.ToString().find("memory_dump_config")); 687 EXPECT_NE(std::string::npos, tc.ToString().find("memory_dump_config"));
662 EXPECT_EQ(2u, tc.memory_dump_config_.triggers.size()); 688 EXPECT_EQ(2u, tc.memory_dump_config_.triggers.size());
663 EXPECT_EQ(TraceConfig::MemoryDumpConfig::HeapProfiler 689 EXPECT_EQ(TraceConfig::MemoryDumpConfig::HeapProfiler
664 ::kDefaultBreakdownThresholdBytes, 690 ::kDefaultBreakdownThresholdBytes,
665 tc.memory_dump_config_.heap_profiler_options 691 tc.memory_dump_config_.heap_profiler_options
666 .breakdown_threshold_bytes); 692 .breakdown_threshold_bytes);
667 } 693 }
668 694
669 } // namespace trace_event 695 } // namespace trace_event
670 } // namespace base 696 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698