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

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: Fixes. 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 553 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698