普通文本  |  47行  |  1.8 KB

# 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)