23c5f51371
Context is in: https://code.google.com/p/skia/issues/detail?id=3763#c18 NOTRY=true BUG=skia:3763 Review URL: https://codereview.chromium.org/1115003002
121 lines
4.3 KiB
Python
121 lines
4.3 KiB
Python
#!/usr/bin/env python
|
|
# Copyright (c) 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.
|
|
|
|
|
|
"""Run the webpages_playback automation script."""
|
|
|
|
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
sys.path.insert(0, os.getcwd())
|
|
|
|
from common.py.utils import gs_utils
|
|
from common.py.utils import shell_utils
|
|
|
|
|
|
SKP_VERSION_FILE = 'SKP_VERSION'
|
|
|
|
|
|
def _get_skp_version():
|
|
"""Find an unused SKP version."""
|
|
current_skp_version = None
|
|
with open(SKP_VERSION_FILE) as f:
|
|
current_skp_version = int(f.read().rstrip())
|
|
|
|
# Find the first SKP version which has no uploaded SKPs.
|
|
new_version = current_skp_version + 1
|
|
while True:
|
|
gs_path = 'playback_%d/skps' % new_version
|
|
if not gs_utils.GSUtils().does_storage_object_exist('chromium-skia-gm',
|
|
gs_path):
|
|
return new_version
|
|
new_version += 1
|
|
|
|
|
|
def main(chrome_src_path, browser_executable):
|
|
browser_executable = os.path.realpath(browser_executable)
|
|
skp_version = _get_skp_version()
|
|
print 'SKP_VERSION=%d' % skp_version
|
|
|
|
if os.environ.get('CHROME_HEADLESS'):
|
|
# Start Xvfb if running on a bot.
|
|
try:
|
|
shell_utils.run('sudo Xvfb :0 -screen 0 1280x1024x24 &', shell=True)
|
|
except Exception:
|
|
# It is ok if the above command fails, it just means that DISPLAY=:0
|
|
# is already up.
|
|
pass
|
|
|
|
upload_dir = 'playback_%d' % skp_version
|
|
webpages_playback_cmd = [
|
|
'python', os.path.join(os.path.dirname(os.path.realpath(__file__)),
|
|
'webpages_playback.py'),
|
|
'--page_sets', 'all',
|
|
'--browser_executable', browser_executable,
|
|
'--non-interactive',
|
|
'--upload',
|
|
'--alternate_upload_dir', upload_dir,
|
|
'--chrome_src_path', chrome_src_path,
|
|
]
|
|
|
|
try:
|
|
shell_utils.run(webpages_playback_cmd)
|
|
|
|
# Temporary change to enable Slimming Paint runs. See skia:3763.
|
|
skia_page_sets_path = os.path.join(
|
|
os.path.dirname(os.path.realpath(__file__)), 'page_sets')
|
|
sp_skia_page_sets = [
|
|
os.path.join(skia_page_sets_path, 'skia_carsvg_desktop.py'),
|
|
os.path.join(skia_page_sets_path, 'skia_chalkboard_desktop.py'),
|
|
os.path.join(skia_page_sets_path, 'skia_css3gradients_desktop.py'),
|
|
os.path.join(skia_page_sets_path, 'skia_espn_desktop.py'),
|
|
os.path.join(skia_page_sets_path, 'skia_gmailthread_desktop.py'),
|
|
os.path.join(skia_page_sets_path, 'skia_googlehome_desktop.py'),
|
|
os.path.join(skia_page_sets_path, 'skia_googlespreadsheet_desktop.py'),
|
|
os.path.join(skia_page_sets_path, 'skia_jsfiddlebigcar_desktop.py'),
|
|
os.path.join(skia_page_sets_path, 'skia_mapsvg_desktop.py'),
|
|
os.path.join(skia_page_sets_path, 'skia_nytimes_desktop.py'),
|
|
os.path.join(skia_page_sets_path, 'skia_samoasvg_desktop.py'),
|
|
os.path.join(skia_page_sets_path, 'skia_tigersvg_desktop.py'),
|
|
os.path.join(skia_page_sets_path, 'skia_ugamsolutions_desktop.py'),
|
|
os.path.join(skia_page_sets_path, 'skia_digg_nexus10.py'),
|
|
os.path.join(skia_page_sets_path, 'skia_gmail_nexus10.py'),
|
|
os.path.join(skia_page_sets_path, 'skia_pravda_nexus10.py'),
|
|
]
|
|
webpages_playback_cmd.extend([
|
|
'--skp_prefix', 'sp_',
|
|
'--browser_extra_args', '--enable-slimming-paint',
|
|
'--page_sets', '%s' % ','.join(sp_skia_page_sets),
|
|
])
|
|
shell_utils.run(webpages_playback_cmd)
|
|
finally:
|
|
# Clean up any leftover browser instances. This can happen if there are
|
|
# telemetry crashes, processes are not always cleaned up appropriately by
|
|
# the webpagereplay and telemetry frameworks.
|
|
procs = subprocess.check_output(['ps', 'ax'])
|
|
for line in procs.splitlines():
|
|
if browser_executable in line:
|
|
pid = line.strip().split(' ')[0]
|
|
if pid != str(os.getpid()) and not 'python' in line:
|
|
try:
|
|
shell_utils.run(['kill', '-9', pid])
|
|
except shell_utils.CommandFailedException as e:
|
|
print e
|
|
else:
|
|
print 'Refusing to kill self.'
|
|
|
|
print 'writing %s: %s' % (SKP_VERSION_FILE, skp_version)
|
|
with open(SKP_VERSION_FILE, 'w') as f:
|
|
f.write(str(skp_version))
|
|
|
|
|
|
if '__main__' == __name__:
|
|
if len(sys.argv) != 3:
|
|
print >> sys.stderr, 'USAGE: %s <chrome src path> <browser executable>'
|
|
sys.exit(1)
|
|
main(*sys.argv[1:])
|