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
3 # found in the LICENSE file.
7 from core
import perf_benchmark
9 from telemetry
import benchmark
10 from telemetry
.timeline
import tracing_category_filter
11 from telemetry
.web_perf
import timeline_based_measurement
16 RE_BENCHMARK_VALUES
= re
.compile('(fore|back)ground-memory_')
19 @benchmark.Enabled('android')
20 class MemoryHealthPlan(perf_benchmark
.PerfBenchmark
):
21 """Timeline based benchmark for the Memory Health Plan."""
23 page_set
= page_sets
.MemoryHealthStory
25 def SetExtraBrowserOptions(self
, options
):
26 # TODO(perezju): Temporary workaround to disable periodic memory dumps.
27 # See: http://crbug.com/513692
28 options
.AppendExtraBrowserArgs('--enable-memory-benchmarking')
30 def CreateTimelineBasedMeasurementOptions(self
):
31 # Enable only memory-infra, to get memory dumps, and blink.console, to get
32 # the timeline markers used for mapping threads to tabs.
33 trace_memory
= tracing_category_filter
.TracingCategoryFilter(
34 filter_string
='-*,blink.console,disabled-by-default-memory-infra')
35 return timeline_based_measurement
.Options(overhead_level
=trace_memory
)
39 return 'memory.memory_health_plan'
42 def ValueCanBeAddedPredicate(cls
, value
, is_first_result
):
43 return bool(RE_BENCHMARK_VALUES
.match(value
.name
))