11e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)# Copyright 2013 The Chromium Authors. All rights reserved.
21e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
31e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)# found in the LICENSE file.
41e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)import os
646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)import tempfile
746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
81e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)from measurements import session_restore
946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)from measurements import session_restore_with_url
10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)import page_sets
1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)from profile_creators import small_profile_creator
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdochfrom telemetry import benchmark
1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)from telemetry.page import profile_generator
1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass _SessionRestoreTest(benchmark.Benchmark):
1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  @classmethod
1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  def ProcessCommandLineArgs(cls, parser, args):
2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    super(_SessionRestoreTest, cls).ProcessCommandLineArgs(parser, args)
2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    profile_type = 'small_profile'
2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    if not args.browser_options.profile_dir:
2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      profile_dir = os.path.join(tempfile.gettempdir(), profile_type)
2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      if not os.path.exists(profile_dir):
2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)        new_args = args.Copy()
2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)        new_args.pageset_repeat = 1
2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)        new_args.output_dir = profile_dir
2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)        profile_generator.GenerateProfiles(
2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)            small_profile_creator.SmallProfileCreator, profile_type, new_args)
3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      args.browser_options.profile_dir = os.path.join(profile_dir, profile_type)
311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci# crbug.com/325479, crbug.com/381990
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci@benchmark.Disabled('android', 'linux', 'reference')
3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class SessionRestoreColdTypical25(_SessionRestoreTest):
361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  tag = 'cold'
371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  test = session_restore.SessionRestore
38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  page_set = page_sets.Typical25PageSet
391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  options = {'cold': True,
4023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)             'pageset_repeat': 5}
411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci# crbug.com/325479, crbug.com/381990
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci@benchmark.Disabled('android', 'linux', 'reference')
4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class SessionRestoreWarmTypical25(_SessionRestoreTest):
461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  tag = 'warm'
471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  test = session_restore.SessionRestore
48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  page_set = page_sets.Typical25PageSet
491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  options = {'warm': True,
5023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)             'pageset_repeat': 20}
5146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
5246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci# crbug.com/325479, crbug.com/381990, crbug.com/405386
541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci@benchmark.Disabled('android', 'linux', 'reference', 'snowleopard')
5546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class SessionRestoreWithUrlCold(_SessionRestoreTest):
5646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  """Measure Chrome cold session restore with startup URLs."""
5746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  tag = 'cold'
5846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  test = session_restore_with_url.SessionRestoreWithUrl
59f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  page_set = page_sets.StartupPagesPageSet
6046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  options = {'cold': True,
6146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)             'pageset_repeat': 5}
6246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
6346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci# crbug.com/325479, crbug.com/381990, crbug.com/405386
651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci@benchmark.Disabled('android', 'linux', 'reference', 'snowleopard')
6646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class SessionRestoreWithUrlWarm(_SessionRestoreTest):
6746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  """Measure Chrome warm session restore with startup URLs."""
6846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  tag = 'warm'
6946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  test = session_restore_with_url.SessionRestoreWithUrl
70f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  page_set = page_sets.StartupPagesPageSet
7146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  options = {'warm': True,
7246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)             'pageset_repeat': 10}
73