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

Unified Diff: scripts/slave/archive_profiling_data.py

Issue 10826217: Script to archive profiling data collected from (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build/
Patch Set: Created 8 years, 4 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
« no previous file with comments | « no previous file | scripts/slave/runtest.py » ('j') | scripts/slave/runtest.py » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: scripts/slave/archive_profiling_data.py
===================================================================
--- scripts/slave/archive_profiling_data.py (revision 0)
+++ scripts/slave/archive_profiling_data.py (revision 0)
@@ -0,0 +1,94 @@
+#!/usr/bin/env python
+# Copyright (c) 2012 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.
+
+"""A tool to archive Chrome profiling data generated by perf buildbots.
+
+Pushes generated profiling data to Google Storage.
+
+For a list of command-line options, call this script with '--help'.
+"""
+
+
+import optparse
+import os
+import re
+import sys
+
+from slave import slave_utils
+
+FILENAME = 'task_profile.json'
+GOOGLE_STORAGE_BUCKET = 'chromium-browser-profiling-data'
+
+
+def CopyToGoogleStorage(src, dst):
+ """Copies a file to the given Google Storage destination url.
+
+ Args:
+ src: path to file to be copied
+ dst: Google Storage destination url (i.e., gs://...)
+ Returns:
+ whether the copy was successful
+ """
+ if not os.path.exists(src):
+ print 'No such file', src
+ return False
+ return slave_utils.GSUtilCopy(src, dst, None, 'public-read')
+
+
+def Archive(run_id, build_dir):
+ """Archive the profiling data to Google Storage.
+
+ Args:
+ run_id: the unique identifier of this run
+ build_dir: the path to the build directory
+ Returns:
+ whether profiling data correctly uploaded or not
+ """
+ if not os.path.exists(build_dir):
+ print 'No build directory'
+ return True
+
+ # Profiling data is in /b/build/slave/SLAVE_NAME/build/src/chrome/test/data
+ profiling_data_dir = os.path.join(build_dir, 'src', 'chrome', 'test', 'data')
+ if not os.path.exists(profiling_data_dir):
+ print 'No profiling_data_dir: ', profiling_data_dir
+ return True
+
+ profiling_file = os.path.join(profiling_data_dir, 'task_profile.json')
+ if not os.path.exists(profiling_file):
+ print 'No profiling_file: ', profiling_file
+ return True
+
+ run_id = re.sub('\W+', '_', run_id)
+
+ view_url = 'http://%s.commondatastorage.googleapis.com/' \
+ 'view_test_results.html?%s' % (GOOGLE_STORAGE_BUCKET, run_id)
+ print 'See %s for this run\'s test results' % view_url
+ run_url = 'gs://%s/runs/%s/' % (GOOGLE_STORAGE_BUCKET, run_id)
+ print 'Pushing results to %s...' % run_url
+
+ if not CopyToGoogleStorage(profiling_file, run_url + FILENAME):
+ return False
+ return True
+
+
+def main():
+ option_parser = optparse.OptionParser()
+ option_parser.add_option('', '--run-id', default=None,
+ help='unique id for this run')
+ option_parser.add_option('', '--build-dir', default=None,
+ help=('path to the build directory'))
+ options = option_parser.parse_args()[0]
+ if (options.run_id is None or options.build_dir is None):
+ print 'All command options are required. Use --help.'
+ return 1
+
+ if Archive(options.run_id, options.build_dir):
+ return 0
+ return 2
+
+
+if '__main__' == __name__:
+ sys.exit(main())
« no previous file with comments | « no previous file | scripts/slave/runtest.py » ('j') | scripts/slave/runtest.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698