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

Unified Diff: scripts/slave/chromium/archive_layout_test_results.py

Issue 2414153003: In archive_layout_test_results, only support archiving to GS. (Closed)
Patch Set: Rebased Created 4 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
« no previous file with comments | « no previous file | scripts/slave/chromium/archive_layout_test_results_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: scripts/slave/chromium/archive_layout_test_results.py
diff --git a/scripts/slave/chromium/archive_layout_test_results.py b/scripts/slave/chromium/archive_layout_test_results.py
index d8b3201520211fdb50c4607b52b4f241aeb0a134..49b3f9a1ccfb663dbc6fa8fc04aa58c09aa6d05f 100755
--- a/scripts/slave/chromium/archive_layout_test_results.py
+++ b/scripts/slave/chromium/archive_layout_test_results.py
@@ -36,21 +36,14 @@ RESULT_DIR = 'layout-test-results'
def _CollectArchiveFiles(output_dir):
- """Returns a pair of lists of file paths to archive.
-
- The first list is all the actual results from the test run;
- the second list is the diffs from the expected results.
- """
+ """Returns a list of actual layout test result files to archive."""
actual_file_list = []
- diff_file_list = []
for path, _, files in os.walk(output_dir):
rel_path = path[len(output_dir + '\\'):]
for name in files:
if _IsActualResultFile(name):
actual_file_list.append(os.path.join(rel_path, name))
- if _IsDiffFile(name):
- diff_file_list.append(os.path.join(rel_path, name))
elif name.endswith('.json'):
actual_file_list.append(os.path.join(rel_path, name))
@@ -63,7 +56,7 @@ def _CollectArchiveFiles(output_dir):
if os.path.exists(os.path.join(output_dir, 'error_log.txt')):
actual_file_list.append('error_log.txt')
- return (actual_file_list, diff_file_list)
+ return actual_file_list
def _IsActualResultFile(name):
@@ -74,81 +67,6 @@ def _IsActualResultFile(name):
('.txt', '.png', '.checksum', '.wav'))
-def _IsDiffFile(name):
- return ('-wdiff.' in name or
- '-expected.' in name or
- name.endswith('-diff.txt') or
- name.endswith('-diff.png'))
-
-
-def _ArchiveFullLayoutTestResults(staging_dir, dest_dir, diff_file_list,
- options):
- # Copy the actual and diff files to the web server.
- # Don't clobber the staging_dir in the MakeZip call so that it keeps the
- # files from the previous MakeZip call on diff_file_list.
- print "archiving results + diffs"
- full_zip_file = chromium_utils.MakeZip(staging_dir,
- 'layout-test-results', diff_file_list, options.results_dir,
- remove_archive_directory=False)[1]
- slave_utils.CopyFileToArchiveHost(full_zip_file, dest_dir)
-
- # Extract the files on the web server.
- extract_dir = os.path.join(dest_dir, 'results')
- print 'extracting zip file to %s' % extract_dir
-
- if chromium_utils.IsWindows():
- chromium_utils.ExtractZip(full_zip_file, extract_dir)
- elif chromium_utils.IsLinux() or chromium_utils.IsMac():
- remote_zip_file = os.path.join(dest_dir, os.path.basename(full_zip_file))
- chromium_utils.SshExtractZip(archive_utils.Config.archive_host,
- remote_zip_file, extract_dir)
-
-
-def _CopyFileToArchiveHost(src, dest_dir):
- """A wrapper method to copy files to the archive host.
-
- It calls CopyFileToDir on Windows and SshCopyFiles on Linux/Mac.
-
- TODO: we will eventually want to change the code to upload the
- data to appengine.
-
- Args:
- src: full path to the src file.
- dest_dir: destination directory on the host.
- """
- host = archive_utils.Config.archive_host
- if not os.path.exists(src):
- raise chromium_utils.ExternalError('Source path "%s" does not exist' % src)
- chromium_utils.MakeWorldReadable(src)
- if chromium_utils.IsWindows():
- chromium_utils.CopyFileToDir(src, dest_dir)
- elif chromium_utils.IsLinux() or chromium_utils.IsMac():
- chromium_utils.SshCopyFiles(src, host, dest_dir)
- else:
- raise NotImplementedError(
- 'Platform "%s" is not currently supported.' % sys.platform)
-
-
-def _MaybeMakeDirectoryOnArchiveHost(dest_dir):
- """A wrapper method to create a directory on the archive host.
-
- It calls MaybeMakeDirectory on Windows and SshMakeDirectory on Linux/Mac.
-
- Args:
- dest_dir: destination directory on the host.
- """
- host = archive_utils.Config.archive_host
- if chromium_utils.IsWindows():
- chromium_utils.MaybeMakeDirectory(dest_dir)
- print 'saving results to %s' % dest_dir
- elif chromium_utils.IsLinux() or chromium_utils.IsMac():
- chromium_utils.SshMakeDirectory(host, dest_dir)
- print 'saving results to "%s" on "%s"' % (dest_dir, host)
- else:
- raise NotImplementedError(
- 'Platform "%s" is not currently supported.' % sys.platform)
-
-
def archive_layout(options):
chrome_dir = os.path.abspath(options.build_dir)
results_dir_basename = os.path.basename(options.results_dir)
@@ -163,7 +81,7 @@ def archive_layout(options):
if not os.path.exists(staging_dir):
os.makedirs(staging_dir)
- (actual_file_list, diff_file_list) = _CollectArchiveFiles(options.results_dir)
+ actual_file_list = _CollectArchiveFiles(options.results_dir)
zip_file = chromium_utils.MakeZip(staging_dir,
results_dir_basename,
actual_file_list,
@@ -171,7 +89,7 @@ def archive_layout(options):
# TODO(crbug.com/655202): Stop separately uploading failing_results.json.
full_results_json = os.path.join(options.results_dir, 'full_results.json')
failing_results_json = os.path.join(options.results_dir,
- 'failing_results.json')
+ 'failing_results.json')
# Extract the build name of this slave (e.g., 'chrome-release') from its
# configuration file if not provided as a param.
@@ -189,63 +107,49 @@ def archive_layout(options):
print 'build number: %s' % build_number
print 'host name: %s' % socket.gethostname()
- if options.gs_bucket:
- # Create a file containing last_change revision. This file will be uploaded
- # after all layout test results are uploaded so the client can check this
- # file to see if the upload for the revision is complete.
- # See crbug.com/574272 for more details.
- last_change_file = os.path.join(staging_dir, 'LAST_CHANGE')
- with open(last_change_file, 'w') as f:
- f.write(last_change)
-
- # Copy the results to a directory archived by build number.
- gs_base = '/'.join([options.gs_bucket, build_name, build_number])
- gs_acl = options.gs_acl
- # These files never change, cache for a year.
- cache_control = "public, max-age=31556926"
- slave_utils.GSUtilCopyFile(zip_file, gs_base, gs_acl=gs_acl,
- cache_control=cache_control)
- slave_utils.GSUtilCopyDir(options.results_dir, gs_base, gs_acl=gs_acl,
- cache_control=cache_control)
-
- # TODO(dpranke): Remove these two lines once clients are fetching the
- # files from the layout-test-results dir.
- slave_utils.GSUtilCopyFile(full_results_json, gs_base, gs_acl=gs_acl,
- cache_control=cache_control)
- slave_utils.GSUtilCopyFile(failing_results_json, gs_base, gs_acl=gs_acl,
- cache_control=cache_control)
-
- slave_utils.GSUtilCopyFile(last_change_file,
- gs_base + '/' + results_dir_basename, gs_acl=gs_acl,
- cache_control=cache_control)
-
- # And also to the 'results' directory to provide the 'latest' results
- # and make sure they are not cached at all (Cloud Storage defaults to
- # caching w/ a max-age=3600).
- gs_base = '/'.join([options.gs_bucket, build_name, 'results'])
- cache_control = 'no-cache'
- slave_utils.GSUtilCopyFile(zip_file, gs_base, gs_acl=gs_acl,
- cache_control=cache_control)
- slave_utils.GSUtilCopyDir(options.results_dir, gs_base, gs_acl=gs_acl,
- cache_control=cache_control)
-
- slave_utils.GSUtilCopyFile(last_change_file,
- gs_base + '/' + results_dir_basename, gs_acl=gs_acl,
- cache_control=cache_control)
-
- else:
- # Where to save layout test results.
- dest_parent_dir = os.path.join(archive_utils.Config.www_dir_base,
- results_dir_basename.replace('-', '_'), build_name)
- dest_dir = os.path.join(dest_parent_dir, last_change)
-
- _MaybeMakeDirectoryOnArchiveHost(dest_dir)
- _CopyFileToArchiveHost(zip_file, dest_dir)
- _CopyFileToArchiveHost(full_results_json, dest_dir)
- _CopyFileToArchiveHost(failing_results_json, dest_dir)
- # Not supported on Google Storage yet.
- _ArchiveFullLayoutTestResults(staging_dir, dest_parent_dir, diff_file_list,
- options)
+ # Create a file containing last_change revision. This file will be uploaded
+ # after all layout test results are uploaded so the client can check this
+ # file to see if the upload for the revision is complete.
+ # See crbug.com/574272 for more details.
+ last_change_file = os.path.join(staging_dir, 'LAST_CHANGE')
+ with open(last_change_file, 'w') as f:
+ f.write(last_change)
+
+ # Copy the results to a directory archived by build number.
+ gs_base = '/'.join([options.gs_bucket, build_name, build_number])
+ gs_acl = options.gs_acl
+ # These files never change, cache for a year.
+ cache_control = "public, max-age=31556926"
+ slave_utils.GSUtilCopyFile(zip_file, gs_base, gs_acl=gs_acl,
+ cache_control=cache_control)
+ slave_utils.GSUtilCopyDir(options.results_dir, gs_base, gs_acl=gs_acl,
+ cache_control=cache_control)
+
+ # TODO(dpranke): Remove these two lines once clients are fetching the
+ # files from the layout-test-results dir.
+ slave_utils.GSUtilCopyFile(full_results_json, gs_base, gs_acl=gs_acl,
+ cache_control=cache_control)
+ slave_utils.GSUtilCopyFile(failing_results_json, gs_base, gs_acl=gs_acl,
+ cache_control=cache_control)
+
+ slave_utils.GSUtilCopyFile(last_change_file,
+ gs_base + '/' + results_dir_basename,
+ gs_acl=gs_acl,
+ cache_control=cache_control)
+
+ # And also to the 'results' directory to provide the 'latest' results
+ # and make sure they are not cached at all (Cloud Storage defaults to
+ # caching w/ a max-age=3600).
+ gs_base = '/'.join([options.gs_bucket, build_name, 'results'])
+ cache_control = 'no-cache'
+ slave_utils.GSUtilCopyFile(zip_file, gs_base, gs_acl=gs_acl,
+ cache_control=cache_control)
+ slave_utils.GSUtilCopyDir(options.results_dir, gs_base, gs_acl=gs_acl,
+ cache_control=cache_control)
+ slave_utils.GSUtilCopyFile(last_change_file,
+ gs_base + '/' + results_dir_basename,
+ gs_acl=gs_acl,
+ cache_control=cache_control)
return 0
@@ -276,6 +180,8 @@ def _ParseOptions():
'slave\'s build directory.')
chromium_utils.AddPropertiesOptions(option_parser)
options, _ = option_parser.parse_args()
+ if not options.gs_bucket:
+ option_parser.error('--gs-bucket is required.')
options.build_dir = build_directory.GetBuildOutputDirectory()
return options
« no previous file with comments | « no previous file | scripts/slave/chromium/archive_layout_test_results_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698