OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """A tool to archive layout test results. | 6 """A tool to archive layout test results. |
7 | 7 |
8 To archive files on Google Storage, pass a GS bucket name via --gs-bucket. | 8 To archive files on Google Storage, pass a GS bucket name via --gs-bucket. |
9 To control access to archives, pass a value for --gs-acl (e.g. 'public-read', | 9 To control access to archives, pass a value for --gs-acl (e.g. 'public-read', |
10 see https://developers.google.com/storage/docs/accesscontrol#extension | 10 see https://developers.google.com/storage/docs/accesscontrol#extension |
(...skipping 13 matching lines...) Expand all Loading... |
24 import re | 24 import re |
25 import socket | 25 import socket |
26 import sys | 26 import sys |
27 | 27 |
28 from common import archive_utils | 28 from common import archive_utils |
29 from common import chromium_utils | 29 from common import chromium_utils |
30 from slave import build_directory | 30 from slave import build_directory |
31 from slave import slave_utils | 31 from slave import slave_utils |
32 | 32 |
33 | 33 |
34 def _CollectArchiveFiles(output_dir): | 34 def _CollectZipArchiveFiles(output_dir): |
35 """Returns a list of actual layout test result files to archive.""" | 35 """Returns a list of layout test result files to archive in a zip file.""" |
36 actual_file_list = [] | 36 file_list = [] |
37 | 37 |
38 for path, _, files in os.walk(output_dir): | 38 for path, _, files in os.walk(output_dir): |
39 rel_path = path[len(output_dir + '\\'):] | 39 rel_path = path[len(output_dir + '\\'):] |
40 for name in files: | 40 for name in files: |
41 if _IsActualResultFile(name): | 41 if _IsIncludedInZipArchive(name): |
42 actual_file_list.append(os.path.join(rel_path, name)) | 42 file_list.append(os.path.join(rel_path, name)) |
43 elif name.endswith('.json'): | |
44 actual_file_list.append(os.path.join(rel_path, name)) | |
45 | 43 |
46 if os.path.exists(os.path.join(output_dir, 'results.html')): | 44 if os.path.exists(os.path.join(output_dir, 'results.html')): |
47 actual_file_list.append('results.html') | 45 file_list.append('results.html') |
48 | 46 |
49 if sys.platform == 'win32': | 47 if sys.platform == 'win32': |
50 if os.path.exists(os.path.join(output_dir, 'access_log.txt')): | 48 if os.path.exists(os.path.join(output_dir, 'access_log.txt')): |
51 actual_file_list.append('access_log.txt') | 49 file_list.append('access_log.txt') |
52 if os.path.exists(os.path.join(output_dir, 'error_log.txt')): | 50 if os.path.exists(os.path.join(output_dir, 'error_log.txt')): |
53 actual_file_list.append('error_log.txt') | 51 file_list.append('error_log.txt') |
54 | 52 |
55 return actual_file_list | 53 return file_list |
56 | 54 |
57 | 55 |
58 def _IsActualResultFile(name): | 56 def _IsIncludedInZipArchive(name): |
| 57 """Returns True if a file should be included in the zip, False otherwise.""" |
59 if '-stack.' in name or '-crash-log.' in name: | 58 if '-stack.' in name or '-crash-log.' in name: |
60 return True | 59 return True |
61 extension = os.path.splitext(name)[1] | 60 extension = os.path.splitext(name)[1] |
62 return ('-actual.' in name and extension in | 61 if '-actual.' in name and extension in ('.txt', '.png', '.checksum', '.wav'): |
63 ('.txt', '.png', '.checksum', '.wav')) | 62 return True |
| 63 if '-expected.' in name: |
| 64 return True |
| 65 if '-wdiff.' in name: |
| 66 return True |
| 67 if name.endswith('-diff.txt') or name.endswith('-diff.png'): |
| 68 return True |
| 69 if name.endswith('.json'): |
| 70 return True |
| 71 return False |
64 | 72 |
65 | 73 |
66 def archive_layout(args): | 74 def archive_layout(args): |
67 chrome_dir = os.path.abspath(args.build_dir) | 75 chrome_dir = os.path.abspath(args.build_dir) |
68 results_dir_basename = os.path.basename(args.results_dir) | 76 results_dir_basename = os.path.basename(args.results_dir) |
69 args.results_dir = os.path.abspath(args.results_dir) | 77 args.results_dir = os.path.abspath(args.results_dir) |
70 print 'Archiving results from %s' % args.results_dir | 78 print 'Archiving results from %s' % args.results_dir |
71 staging_dir = args.staging_dir or slave_utils.GetStagingDir(chrome_dir) | 79 staging_dir = args.staging_dir or slave_utils.GetStagingDir(chrome_dir) |
72 print 'Staging in %s' % staging_dir | 80 print 'Staging in %s' % staging_dir |
73 if not os.path.exists(staging_dir): | 81 if not os.path.exists(staging_dir): |
74 os.makedirs(staging_dir) | 82 os.makedirs(staging_dir) |
75 | 83 |
76 actual_file_list = _CollectArchiveFiles(args.results_dir) | 84 file_list = _CollectZipArchiveFiles(args.results_dir) |
77 zip_file = chromium_utils.MakeZip(staging_dir, | 85 zip_file = chromium_utils.MakeZip(staging_dir, |
78 results_dir_basename, | 86 results_dir_basename, |
79 actual_file_list, | 87 file_list, |
80 args.results_dir)[1] | 88 args.results_dir)[1] |
81 | 89 |
82 wc_dir = os.path.dirname(chrome_dir) | 90 wc_dir = os.path.dirname(chrome_dir) |
83 last_change = slave_utils.GetHashOrRevision(wc_dir) | 91 last_change = slave_utils.GetHashOrRevision(wc_dir) |
84 | 92 |
85 builder_name = re.sub('[ .()]', '_', args.builder_name) | 93 builder_name = re.sub('[ .()]', '_', args.builder_name) |
86 build_number = str(args.build_number) | 94 build_number = str(args.build_number) |
87 | 95 |
88 print 'last change: %s' % last_change | 96 print 'last change: %s' % last_change |
89 print 'build name: %s' % builder_name | 97 print 'build name: %s' % builder_name |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 args = _ParseArgs() | 163 args = _ParseArgs() |
156 logging.basicConfig(level=logging.INFO, | 164 logging.basicConfig(level=logging.INFO, |
157 format='%(asctime)s %(filename)s:%(lineno)-3d' | 165 format='%(asctime)s %(filename)s:%(lineno)-3d' |
158 ' %(levelname)s %(message)s', | 166 ' %(levelname)s %(message)s', |
159 datefmt='%y%m%d %H:%M:%S') | 167 datefmt='%y%m%d %H:%M:%S') |
160 return archive_layout(args) | 168 return archive_layout(args) |
161 | 169 |
162 | 170 |
163 if '__main__' == __name__: | 171 if '__main__' == __name__: |
164 sys.exit(main()) | 172 sys.exit(main()) |
OLD | NEW |