blob: f5c46a543b822d3df230c37306df70e63cb53f70 [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.
import page_sets
from core import perf_benchmark
from telemetry import benchmark
from telemetry.page import page_test
from telemetry.value import scalar
from telemetry.value import improvement_direction
from telemetry.timeline import tracing_category_filter
from telemetry.web_perf import timeline_based_measurement
from telemetry.web_perf.metrics import v8_gc_latency
from telemetry.web_perf.metrics import smoothness
from telemetry.web_perf.metrics import memory_timeline
class _OortOnlineMeasurement(page_test.PageTest):
def __init__(self):
super(_OortOnlineMeasurement, self).__init__()
def ValidateAndMeasurePage(self, page, tab, results):
tab.WaitForJavaScriptExpression('window.benchmarkFinished', 1000)
scores = tab.EvaluateJavaScript('window.benchmarkScore')
for score in scores:
valid = score['valid']
if valid:
results.AddValue(scalar.ScalarValue(
results.current_page, score['name'], 'score', score['score'],
important=True, improvement_direction=improvement_direction.UP))
@benchmark.Disabled('android')
class OortOnline(perf_benchmark.PerfBenchmark):
"""OortOnline benchmark that measures WebGL and V8 performance.
URL: http://oortonline.gl/#run
Info: http://v8project.blogspot.de/2015/10/jank-busters-part-one.html
"""
test = _OortOnlineMeasurement
@classmethod
def Name(cls):
return 'oortonline'
def CreateStorySet(self, options):
return page_sets.OortOnlinePageSet()
# Disabled on reference builds because they don't support the new
# Tracing.requestMemoryDump DevTools API. See http://crbug.com/540022.
@benchmark.Disabled('reference')
@benchmark.Disabled('android')
class OortOnlineTBM(perf_benchmark.PerfBenchmark):
"""OortOnline benchmark that measures WebGL and V8 performance.
URL: http://oortonline.gl/#run
Info: http://v8project.blogspot.de/2015/10/jank-busters-part-one.html
"""
def SetExtraBrowserOptions(self, options):
options.AppendExtraBrowserArgs([
# TODO(perezju): Temporary workaround to disable periodic memory dumps.
# See: http://crbug.com/513692
'--enable-memory-benchmarking',
# TODO(ssid): Remove this flag after fixing http://crbug.com/461788.
'--no-sandbox'
])
def CreateStorySet(self, options):
return page_sets.OortOnlineTBMPageSet()
def CreateTimelineBasedMeasurementOptions(self):
v8_gc_latency_categories = [
'blink.console', 'renderer.scheduler', 'v8', 'webkit.console']
smoothness_categories = [
'webkit.console', 'blink.console', 'benchmark', 'trace_event_overhead']
categories = list(set(v8_gc_latency_categories + smoothness_categories))
memory_categories = 'blink.console,disabled-by-default-memory-infra'
category_filter = tracing_category_filter.TracingCategoryFilter(
memory_categories)
for category in categories:
category_filter.AddIncludedCategory(category)
options = timeline_based_measurement.Options(category_filter)
options.SetTimelineBasedMetrics([v8_gc_latency.V8GCLatency(),
smoothness.SmoothnessMetric(),
memory_timeline.MemoryTimelineMetric()])
return options
@classmethod
def Name(cls):
return 'oortonline_tbm'
@classmethod
def ValueCanBeAddedPredicate(cls, value, is_first_result):
if value.tir_label in ['Begin', 'End']:
return value.name.startswith('memory_') and 'v8_renderer' in value.name
else:
return value.tir_label == 'Running'