blob: 846cfb2bc199aae527301095ddb4562c83b15c1b [file] [log] [blame]
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from core import perf_benchmark
from benchmarks import silk_flags
from measurements import power
import page_sets
from telemetry import benchmark
@benchmark.Enabled('android')
class PowerAndroidAcceptance(perf_benchmark.PerfBenchmark):
"""Android power acceptance test."""
test = power.Power
page_set = page_sets.AndroidAcceptancePageSet
def SetExtraBrowserOptions(self, options):
options.full_performance_mode = False
@classmethod
def Name(cls):
return 'power.android_acceptance'
@benchmark.Enabled('android')
class PowerTypical10Mobile(perf_benchmark.PerfBenchmark):
"""Android typical 10 mobile power test."""
test = power.Power
page_set = page_sets.Typical10MobilePageSet
def SetExtraBrowserOptions(self, options):
options.full_performance_mode = False
@classmethod
def Name(cls):
return 'power.typical_10_mobile'
@benchmark.Enabled('android')
class PowerToughAdCases(perf_benchmark.PerfBenchmark):
"""Android power test with tough ad pages."""
test = power.Power
page_set = page_sets.ToughAdCasesPageSet
def SetExtraBrowserOptions(self, options):
options.full_performance_mode = False
@classmethod
def Name(cls):
return 'power.tough_ad_cases'
@benchmark.Enabled('android')
@benchmark.Disabled('all')
class PowerTypical10MobileReload(perf_benchmark.PerfBenchmark):
"""Android typical 10 mobile power reload test."""
test = power.LoadPower
page_set = page_sets.Typical10MobileReloadPageSet
def SetExtraBrowserOptions(self, options):
options.full_performance_mode = False
@classmethod
def Name(cls):
return 'power.typical_10_mobile_reload'
@benchmark.Enabled('android')
class PowerGpuRasterizationTypical10Mobile(perf_benchmark.PerfBenchmark):
"""Measures power on key mobile sites with GPU rasterization."""
tag = 'gpu_rasterization'
test = power.Power
page_set = page_sets.Typical10MobilePageSet
def SetExtraBrowserOptions(self, options):
silk_flags.CustomizeBrowserOptionsForGpuRasterization(options)
options.full_performance_mode = False
@classmethod
def Name(cls):
return 'power.gpu_rasterization.typical_10_mobile'
@classmethod
def ShouldDisable(cls, possible_browser):
return cls.IsSvelte(possible_browser) # http://crbug.com/563968
@benchmark.Enabled('mac')
class PowerTop10(perf_benchmark.PerfBenchmark):
"""Top 10 quiescent power test."""
test = power.QuiescentPower
page_set = page_sets.Top10PageSet
def SetExtraBrowserOptions(self, options):
options.full_performance_mode = False
@classmethod
def Name(cls):
return 'power.top_10'
@benchmark.Enabled('mac')
class PowerGpuRasterizationTop10(perf_benchmark.PerfBenchmark):
"""Top 10 quiescent power test with GPU rasterization enabled."""
tag = 'gpu_rasterization'
test = power.QuiescentPower
page_set = page_sets.Top10PageSet
def SetExtraBrowserOptions(self, options):
silk_flags.CustomizeBrowserOptionsForGpuRasterization(options)
options.full_performance_mode = False
@classmethod
def Name(cls):
return 'power.gpu_rasterization.top_10'
@benchmark.Enabled('mac')
class PowerTop25(perf_benchmark.PerfBenchmark):
"""Top 25 quiescent power test."""
test = power.QuiescentPower
page_set = page_sets.Top25PageSet
def SetExtraBrowserOptions(self, options):
options.full_performance_mode = False
@classmethod
def Name(cls):
return 'power.top_25'
def CreateStorySet(self, _):
# Exclude techcrunch.com. It is not suitable for this benchmark because it
# does not consistently become quiescent within 60 seconds.
stories = self.page_set()
found = next((x for x in stories if 'techcrunch.com' in x.url), None)
if found:
stories.RemoveStory(found)
return stories
@benchmark.Enabled('mac')
class PowerGpuRasterizationTop25(perf_benchmark.PerfBenchmark):
"""Top 25 quiescent power test with GPU rasterization enabled."""
tag = 'gpu_rasterization'
test = power.QuiescentPower
page_set = page_sets.Top25PageSet
def SetExtraBrowserOptions(self, options):
silk_flags.CustomizeBrowserOptionsForGpuRasterization(options)
options.full_performance_mode = False
@classmethod
def Name(cls):
return 'power.gpu_rasterization.top_25'
def CreateStorySet(self, _):
# Exclude techcrunch.com. It is not suitable for this benchmark because it
# does not consistently become quiescent within 60 seconds.
stories = self.page_set()
found = next((x for x in stories if 'techcrunch.com' in x.url), None)
if found:
stories.RemoveStory(found)
return stories
@benchmark.Enabled('linux', 'mac', 'win', 'chromeos')
class PowerPPSControlDisabled(perf_benchmark.PerfBenchmark):
"""A single page with a small-ish non-essential plugin. In this test, Plugin
Power Saver (PPS) is disabled, so the plugin should continue animating and
taking power."""
test = power.QuiescentPower
page_set = page_sets.PluginPowerSaverPageSet
options = {'pageset_repeat': 5}
def SetExtraBrowserOptions(self, options):
options.AppendExtraBrowserArgs(['--disable-plugin-power-saver'])
options.full_performance_mode = False
@classmethod
def Name(cls):
return 'power.pps_control_disabled'
@benchmark.Enabled('linux', 'mac', 'win', 'chromeos')
class PowerPPSControlEnabled(perf_benchmark.PerfBenchmark):
"""A single page with a small-ish non-essential plugin. In this test, Plugin
Power Saver (PPS) is enabled, so the plugin should be throttled (idle with a
"Click to play" button)."""
test = power.QuiescentPower
page_set = page_sets.PluginPowerSaverPageSet
options = {'pageset_repeat': 5}
def SetExtraBrowserOptions(self, options):
options.AppendExtraBrowserArgs(['--enable-plugin-power-saver'])
options.full_performance_mode = False
@classmethod
def Name(cls):
return 'power.pps_control_enabled'
@benchmark.Enabled('linux', 'mac', 'win', 'chromeos')
class PowerThrottledPlugins(perf_benchmark.PerfBenchmark):
"""Tests that pages with flash ads take more power without Plugin Power Saver
(PPS) throttling them."""
test = power.QuiescentPower
page_set = page_sets.ThrottledPluginsPageSet
options = {'pageset_repeat': 5}
def SetExtraBrowserOptions(self, options):
options.AppendExtraBrowserArgs(['--disable-plugin-power-saver'])
options.full_performance_mode = False
@classmethod
def Name(cls):
return 'power.throttled_plugins_pps_disabled'
@benchmark.Enabled('linux', 'mac', 'win', 'chromeos')
class PowerThrottledPluginsPPS(perf_benchmark.PerfBenchmark):
"""Tests that pages with flash ads take less power with Plugin Power Saver
(PPS) enabled to throttle them."""
test = power.QuiescentPower
page_set = page_sets.ThrottledPluginsPageSet
options = {'pageset_repeat': 5}
def SetExtraBrowserOptions(self, options):
options.AppendExtraBrowserArgs(['--enable-plugin-power-saver'])
options.full_performance_mode = False
@classmethod
def Name(cls):
return 'power.throttled_plugins_pps_enabled'