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..78863183cb90674e2e00a89bcd66476cd62aa860 |
--- /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 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:]) |