Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(336)

Unified Diff: tools/skp/recreate_skps.py

Issue 655313003: Add recreate_skps script (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fix cleanup Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/skp/recreate_skps.py
diff --git a/tools/skp/recreate_skps.py b/tools/skp/recreate_skps.py
new file mode 100644
index 0000000000000000000000000000000000000000..9c64f6e2f0ca1a6404151f4d42fb7f9af242316b
--- /dev/null
+++ b/tools/skp/recreate_skps.py
@@ -0,0 +1,92 @@
+#!/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_to_gs',
+ '--alternate_upload_dir', upload_dir,
+ '--chrome_src_path', chrome_src_path,
+ ]
+
+ try:
+ 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()):
+ try:
+ shell_utils.run(['kill', '-9', pid])
+ except shell_utils.CommandFailedException:
+ pass
rmistry 2014/10/17 12:44:50 Lets log the error here. I realize it was not logg
borenet 2014/10/17 13:21:43 Done. For the record, the failure should be prett
+ 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:])

Powered by Google App Engine
This is Rietveld 408576698