# Copyright 2013 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 metrics import startup_metric
from telemetry.page import page_measurement
class Startup(page_measurement.PageMeasurement):
"""Performs a measurement of Chromium's startup performance.
This test must be invoked with either --warm or --cold on the command line. A
cold start means none of the Chromium files are in the disk cache. A warm
start assumes the OS has already cached much of Chromium's content. For warm
tests, you should repeat the page set to ensure it's cached.
"""
def __init__(self):
super(Startup, self).__init__(needs_browser_restart_after_each_run=True)
def AddCommandLineOptions(self, parser):
parser.add_option('--cold', action='store_true',
help='Clear the OS disk cache before performing the test')
parser.add_option('--warm', action='store_true',
help='Start up with everything already cached')
def CustomizeBrowserOptions(self, options):
# TODO: Once the bots start running benchmarks, enforce that either --warm
# or --cold is explicitly specified.
# assert options.warm != options.cold, \
# "You must specify either --warm or --cold"
if options.cold:
browser_options = options.browser_options
browser_options.clear_sytem_cache_for_browser_and_profile_on_start = True
else:
self.discard_first_result = True
options.AppendExtraBrowserArgs([
'--enable-stats-collection-bindings'
])
def RunNavigateSteps(self, page, tab):
# Overriden so that no page navigation occurs - startup to the NTP.
pass
def MeasurePage(self, page, tab, results):
startup_metric.StartupMetric().AddResults(tab, results)