1# Copyright 2013 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.
4
5import os
6import tempfile
7
8from measurements import session_restore
9from measurements import session_restore_with_url
10import page_sets
11from profile_creators import small_profile_creator
12from telemetry import benchmark
13from telemetry.page import profile_generator
14
15
16class _SessionRestoreTest(benchmark.Benchmark):
17
18  @classmethod
19  def ProcessCommandLineArgs(cls, parser, args):
20    super(_SessionRestoreTest, cls).ProcessCommandLineArgs(parser, args)
21    profile_type = 'small_profile'
22    if not args.browser_options.profile_dir:
23      profile_dir = os.path.join(tempfile.gettempdir(), profile_type)
24      if not os.path.exists(profile_dir):
25        new_args = args.Copy()
26        new_args.pageset_repeat = 1
27        new_args.output_dir = profile_dir
28        profile_generator.GenerateProfiles(
29            small_profile_creator.SmallProfileCreator, profile_type, new_args)
30      args.browser_options.profile_dir = os.path.join(profile_dir, profile_type)
31
32
33# crbug.com/325479, crbug.com/381990
34@benchmark.Disabled('android', 'linux', 'reference')
35class SessionRestoreColdTypical25(_SessionRestoreTest):
36  tag = 'cold'
37  test = session_restore.SessionRestore
38  page_set = page_sets.Typical25PageSet
39  options = {'cold': True,
40             'pageset_repeat': 5}
41
42
43# crbug.com/325479, crbug.com/381990
44@benchmark.Disabled('android', 'linux', 'reference')
45class SessionRestoreWarmTypical25(_SessionRestoreTest):
46  tag = 'warm'
47  test = session_restore.SessionRestore
48  page_set = page_sets.Typical25PageSet
49  options = {'warm': True,
50             'pageset_repeat': 20}
51
52
53# crbug.com/325479, crbug.com/381990, crbug.com/405386
54@benchmark.Disabled('android', 'linux', 'reference', 'snowleopard')
55class SessionRestoreWithUrlCold(_SessionRestoreTest):
56  """Measure Chrome cold session restore with startup URLs."""
57  tag = 'cold'
58  test = session_restore_with_url.SessionRestoreWithUrl
59  page_set = page_sets.StartupPagesPageSet
60  options = {'cold': True,
61             'pageset_repeat': 5}
62
63
64# crbug.com/325479, crbug.com/381990, crbug.com/405386
65@benchmark.Disabled('android', 'linux', 'reference', 'snowleopard')
66class SessionRestoreWithUrlWarm(_SessionRestoreTest):
67  """Measure Chrome warm session restore with startup URLs."""
68  tag = 'warm'
69  test = session_restore_with_url.SessionRestoreWithUrl
70  page_set = page_sets.StartupPagesPageSet
71  options = {'warm': True,
72             'pageset_repeat': 10}
73