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

Side by Side Diff: tools/testing/perf_testing/run_perf_tests.py

Issue 10908005: Reapply revision 11570, custom callbacks are now implemented in dartium. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 3 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « tests/html/html.status ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 2
3 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 3 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
4 # for details. All rights reserved. Use of this source code is governed by a 4 # for details. All rights reserved. Use of this source code is governed by a
5 # BSD-style license that can be found in the LICENSE file. 5 # BSD-style license that can be found in the LICENSE file.
6 6
7 import datetime 7 import datetime
8 import math 8 import math
9 import optparse 9 import optparse
10 import os 10 import os
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 if os.path.exists(DART_REPO_LOC): 91 if os.path.exists(DART_REPO_LOC):
92 os.chdir(DART_REPO_LOC) 92 os.chdir(DART_REPO_LOC)
93 results, _ = self.RunCmd(['svn', 'st']) 93 results, _ = self.RunCmd(['svn', 'st'])
94 for line in results.split('\n'): 94 for line in results.split('\n'):
95 if line.startswith('?'): 95 if line.startswith('?'):
96 to_remove = line.split()[1] 96 to_remove = line.split()[1]
97 if os.path.isdir(to_remove): 97 if os.path.isdir(to_remove):
98 shutil.rmtree(to_remove)#, ignore_errors=True) 98 shutil.rmtree(to_remove)#, ignore_errors=True)
99 else: 99 else:
100 os.remove(to_remove) 100 os.remove(to_remove)
101 elif any(line.startswith(status) for status in ['A', 'M', 'C', 'D']):
102 self.RunCmd(['svn', 'revert', line.split()[1]])
101 103
102 def GetArchive(self, archive_name): 104 def GetArchive(self, archive_name):
103 """Wrapper around the pulling down a specific archive from Google Storage. 105 """Wrapper around the pulling down a specific archive from Google Storage.
104 Adds a specific revision argument as needed. 106 Adds a specific revision argument as needed.
105 Returns: The stdout and stderr from running this command.""" 107 Returns: The stdout and stderr from running this command."""
106 while True: 108 while True:
107 cmd = ['python', os.path.join(DART_REPO_LOC, 'tools', 'get_archive.py'), 109 cmd = ['python', os.path.join(DART_REPO_LOC, 'tools', 'get_archive.py'),
108 archive_name] 110 archive_name]
109 if int(self.current_revision_num) != -1: 111 if int(self.current_revision_num) != -1:
110 cmd += ['-r', str(self.current_revision_num)] 112 cmd += ['-r', str(self.current_revision_num)]
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 def IsSafeFile(f): 244 def IsSafeFile(f):
243 if not any(f.startswith(prefix) for prefix in definitely_yes): 245 if not any(f.startswith(prefix) for prefix in definitely_yes):
244 return any(f.startswith(prefix) for prefix in no_effect) 246 return any(f.startswith(prefix) for prefix in no_effect)
245 return False 247 return False
246 return not all(IsSafeFile(f) for f in files_list) 248 return not all(IsSafeFile(f) for f in files_list)
247 249
248 if revision_num: 250 if revision_num:
249 return (HasPerfAffectingResults(GetFileList( 251 return (HasPerfAffectingResults(GetFileList(
250 revision_num)), revision_num) 252 revision_num)), revision_num)
251 else: 253 else:
252 results, _ = self.RunCmd(['svn', 'st', '-u'], std_in='p\r\n') 254 latest_interesting_server_rev = None
253 latest_interesting_server_rev = int(results.split('\n')[-2].split()[-1]) 255 while not latest_interesting_server_rev:
256 results, _ = self.RunCmd(['svn', 'st', '-u'], std_in='p\r\n')
257 if len(results.split('\n')) >= 2:
258 latest_interesting_server_rev = int(
259 results.split('\n')[-2].split()[-1])
260 print 'success'
261 else:
262 print 'hrmmmm'
254 if self.backfill: 263 if self.backfill:
255 done_cls = list(UpdateSetOfDoneCls()) 264 done_cls = list(UpdateSetOfDoneCls())
256 done_cls.sort() 265 done_cls.sort()
257 if done_cls: 266 if done_cls:
258 last_done_cl = int(done_cls[-1]) 267 last_done_cl = int(done_cls[-1])
259 else: 268 else:
260 last_done_cl = EARLIEST_REVISION 269 last_done_cl = EARLIEST_REVISION
261 while latest_interesting_server_rev >= last_done_cl: 270 while latest_interesting_server_rev >= last_done_cl:
262 file_list = GetFileList(latest_interesting_server_rev) 271 file_list = GetFileList(latest_interesting_server_rev)
263 if HasPerfAffectingResults(file_list): 272 if HasPerfAffectingResults(file_list):
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 for extra_metric in extra_metrics: 415 for extra_metric in extra_metrics:
407 self.revision_dict[platform][f][extra_metric] = [] 416 self.revision_dict[platform][f][extra_metric] = []
408 self.values_dict[platform][f][extra_metric] = [] 417 self.values_dict[platform][f][extra_metric] = []
409 418
410 def IsValidCombination(self, platform, variant): 419 def IsValidCombination(self, platform, variant):
411 """Check whether data should be captured for this platform/variant 420 """Check whether data should be captured for this platform/variant
412 combination. 421 combination.
413 """ 422 """
414 # TODO(vsm): This avoids a bug in 32-bit Chrome (dartium) 423 # TODO(vsm): This avoids a bug in 32-bit Chrome (dartium)
415 # running JS dromaeo. 424 # running JS dromaeo.
425 if variant == 'js':
426 return False
416 if platform == 'dartium' and variant == 'js': 427 if platform == 'dartium' and variant == 'js':
417 return False 428 return False
418 if (platform == 'safari' and variant == 'dart2js' and 429 if (platform == 'safari' and variant == 'dart2js' and
419 int(self.test_runner.current_revision_num) < 10193): 430 int(self.test_runner.current_revision_num) < 10193):
420 # In revision 10193 we fixed a bug that allows Safari 6 to run dart2js 431 # In revision 10193 we fixed a bug that allows Safari 6 to run dart2js
421 # code. Since we can't change the Safari version on the machine, we're 432 # code. Since we can't change the Safari version on the machine, we're
422 # just not running 433 # just not running
423 # for this case. 434 # for this case.
424 return False 435 return False
425 return True 436 return True
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
647 '--out', file_path, '--browser', browser, 658 '--out', file_path, '--browser', browser,
648 '--timeout', '600', '--mode', 'perf'], self.test.trace_file, 659 '--timeout', '600', '--mode', 'perf'], self.test.trace_file,
649 append=True) 660 append=True)
650 661
651 class CommonBrowserFileProcessor(Processor): 662 class CommonBrowserFileProcessor(Processor):
652 663
653 def ProcessFile(self, afile, should_post_file): 664 def ProcessFile(self, afile, should_post_file):
654 """Comb through the html to find the performance results. 665 """Comb through the html to find the performance results.
655 Returns: True if we successfully posted our data to storage and/or we can 666 Returns: True if we successfully posted our data to storage and/or we can
656 delete the trace file.""" 667 delete the trace file."""
668 print afile
657 os.chdir(os.path.join(TOP_LEVEL_DIR, 'tools', 669 os.chdir(os.path.join(TOP_LEVEL_DIR, 'tools',
658 'testing', 'perf_testing')) 670 'testing', 'perf_testing'))
659 parts = afile.split('-') 671 parts = afile.split('-')
660 browser = parts[2] 672 browser = parts[2]
661 version = parts[3] 673 version = parts[3]
662 f = self.OpenTraceFile(afile, should_post_file) 674 f = self.OpenTraceFile(afile, should_post_file)
663 lines = f.readlines() 675 lines = f.readlines()
664 line = '' 676 line = ''
665 i = 0 677 i = 0
666 revision_num = 0 678 revision_num = 0
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
904 version = version.replace('frog', 'dart') 916 version = version.replace('frog', 'dart')
905 version = version.replace('_','AND') 917 version = version.replace('_','AND')
906 tags = DromaeoTester.GetValidDromaeoTags() 918 tags = DromaeoTester.GetValidDromaeoTags()
907 return 'OR'.join([ '%sAND%s' % (version, tag) for tag in tags]) 919 return 'OR'.join([ '%sAND%s' % (version, tag) for tag in tags])
908 920
909 921
910 class DromaeoFileProcessor(Processor): 922 class DromaeoFileProcessor(Processor):
911 def ProcessFile(self, afile, should_post_file): 923 def ProcessFile(self, afile, should_post_file):
912 """Comb through the html to find the performance results. 924 """Comb through the html to find the performance results.
913 Returns: True if we successfully posted our data to storage.""" 925 Returns: True if we successfully posted our data to storage."""
926 print afile
914 parts = afile.split('-') 927 parts = afile.split('-')
915 browser = parts[2] 928 browser = parts[2]
916 version = parts[3] 929 version = parts[3]
917 930
918 bench_dict = self.test.values_dict[browser][version] 931 bench_dict = self.test.values_dict[browser][version]
919 932
920 f = self.OpenTraceFile(afile, should_post_file) 933 f = self.OpenTraceFile(afile, should_post_file)
921 lines = f.readlines() 934 lines = f.readlines()
922 i = 0 935 i = 0
923 revision_num = 0 936 revision_num = 0
924 revision_pattern = r'Revision: (\d+)' 937 revision_pattern = r'Revision: (\d+)'
925 suite_pattern = r'<div class="result-item done">(.+?)</ol></div>' 938 suite_pattern = r'<div class="result-item done">(.+?)</ol></div>'
926 result_pattern = r'<b>(.+?)</b>(.+?)<small> runs/s(.+)' 939 result_pattern = r'<b>(.+?)</b>(.+?)<small> runs/s(.+)'
927 940
928 upload_success = True 941 upload_success = True
929 for line in lines: 942 for line in lines:
930 rev = re.match(revision_pattern, line.strip()) 943 rev = re.match(revision_pattern, line.strip().replace('"', ''))
931 if rev: 944 if rev:
932 revision_num = int(rev.group(1)) 945 revision_num = int(rev.group(1))
933 continue 946 continue
934 947
935 suite_results = re.findall(suite_pattern, line) 948 suite_results = re.findall(suite_pattern, line)
936 if suite_results: 949 if suite_results:
937 for suite_result in suite_results: 950 for suite_result in suite_results:
938 results = re.findall(r'<li>(.*?)</li>', suite_result) 951 results = re.findall(r'<li>(.*?)</li>', suite_result)
939 if results: 952 if results:
940 for result in results: 953 for result in results:
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
1117 else: 1130 else:
1118 if runner.backfill: 1131 if runner.backfill:
1119 results_set = FillInBackHistory(results_set, runner) 1132 results_set = FillInBackHistory(results_set, runner)
1120 else: 1133 else:
1121 time.sleep(200) 1134 time.sleep(200)
1122 else: 1135 else:
1123 runner.RunTestSequence() 1136 runner.RunTestSequence()
1124 1137
1125 if __name__ == '__main__': 1138 if __name__ == '__main__':
1126 main() 1139 main()
OLDNEW
« no previous file with comments | « tests/html/html.status ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698