OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 | 2 |
3 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 3 # Copyright (c) 2011, 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 optparse | 8 import optparse |
9 import os | 9 import os |
10 from os.path import dirname, abspath | 10 from os.path import dirname, abspath |
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
465 'benchmark_page_%s.html' % version) | 465 'benchmark_page_%s.html' % version) |
466 self.test.test_runner.run_cmd( | 466 self.test.test_runner.run_cmd( |
467 ['python', os.path.join('tools', 'testing', 'run_selenium.py'), | 467 ['python', os.path.join('tools', 'testing', 'run_selenium.py'), |
468 '--out', file_path, '--browser', browser, | 468 '--out', file_path, '--browser', browser, |
469 '--timeout', '600', '--mode', 'perf'], self.test.trace_file, | 469 '--timeout', '600', '--mode', 'perf'], self.test.trace_file, |
470 append=True) | 470 append=True) |
471 | 471 |
472 class CommonBrowserFileProcessor(Processor): | 472 class CommonBrowserFileProcessor(Processor): |
473 def process_file(self, afile): | 473 def process_file(self, afile): |
474 """Comb through the html to find the performance results. | 474 """Comb through the html to find the performance results. |
475 Returns: True if we successfullly posted our data to storage.""" | 475 Returns: True if we successfully posted our data to storage and/or we can |
| 476 delete the trace file.""" |
476 os.chdir(os.path.join(DART_INSTALL_LOCATION, 'tools', | 477 os.chdir(os.path.join(DART_INSTALL_LOCATION, 'tools', |
477 'testing', 'perf_testing')) | 478 'testing', 'perf_testing')) |
478 if self.test.test_runner.no_upload: | 479 if self.test.test_runner.no_upload: |
479 return | 480 return |
480 parts = afile.split('-') | 481 parts = afile.split('-') |
481 browser = parts[2] | 482 browser = parts[2] |
482 version = parts[3] | 483 version = parts[3] |
483 f = open(os.path.join(self.test.result_folder_name, afile)) | 484 f = open(os.path.join(self.test.result_folder_name, afile)) |
484 lines = f.readlines() | 485 lines = f.readlines() |
485 line = '' | 486 line = '' |
486 i = 0 | 487 i = 0 |
487 revision_num = 0 | 488 revision_num = 0 |
488 while '<div id="results">' not in line and i < len(lines): | 489 while '<div id="results">' not in line and i < len(lines): |
489 if 'Revision' in line: | 490 if 'Revision' in line: |
490 revision_num = int(line.split()[1].strip('"')) | 491 revision_num = int(line.split()[1].strip('"')) |
491 line = lines[i] | 492 line = lines[i] |
492 i += 1 | 493 i += 1 |
493 | 494 |
494 if i >= len(lines) or revision_num == 0: | 495 if i >= len(lines) or revision_num == 0: |
495 # Then this run did not complete. Ignore this tracefile. | 496 # Then this run did not complete. Ignore this tracefile. |
496 return | 497 return True |
497 | 498 |
498 line = lines[i] | 499 line = lines[i] |
499 i += 1 | 500 i += 1 |
500 results = [] | 501 results = [] |
501 if line.find('<br>') > -1: | 502 if line.find('<br>') > -1: |
502 results = line.split('<br>') | 503 results = line.split('<br>') |
503 else: | 504 else: |
504 results = line.split('<br />') | 505 results = line.split('<br />') |
505 upload_success = True | 506 upload_success = True |
506 for result in results: | 507 for result in results: |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
645 if browser == 'dartium': | 646 if browser == 'dartium': |
646 version = version.replace('frog', 'dart') | 647 version = version.replace('frog', 'dart') |
647 version = version.replace('_','&') | 648 version = version.replace('_','&') |
648 tags = DromaeoTester.get_valid_dromaeo_tags() | 649 tags = DromaeoTester.get_valid_dromaeo_tags() |
649 return '|'.join([ '%s&%s' % (version, tag) for tag in tags]) | 650 return '|'.join([ '%s&%s' % (version, tag) for tag in tags]) |
650 | 651 |
651 | 652 |
652 class DromaeoFileProcessor(Processor): | 653 class DromaeoFileProcessor(Processor): |
653 def process_file(self, afile): | 654 def process_file(self, afile): |
654 """Comb through the html to find the performance results. | 655 """Comb through the html to find the performance results. |
655 Returns: True if we successfullly posted our data to storage.""" | 656 Returns: True if we successfully posted our data to storage.""" |
656 if self.test.test_runner.no_upload: | 657 if self.test.test_runner.no_upload: |
657 return | 658 return |
658 parts = afile.split('-') | 659 parts = afile.split('-') |
659 browser = parts[2] | 660 browser = parts[2] |
660 version = parts[3] | 661 version = parts[3] |
661 | 662 |
662 f = open(os.path.join(self.test.result_folder_name, afile)) | 663 f = open(os.path.join(self.test.result_folder_name, afile)) |
663 lines = f.readlines() | 664 lines = f.readlines() |
664 i = 0 | 665 i = 0 |
665 revision_num = 0 | 666 revision_num = 0 |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
767 total_size[variant])], | 768 total_size[variant])], |
768 self.test.trace_file, append=True) | 769 self.test.trace_file, append=True) |
769 | 770 |
770 | 771 |
771 class DromaeoSizeProcessor(Processor): | 772 class DromaeoSizeProcessor(Processor): |
772 def process_file(self, afile): | 773 def process_file(self, afile): |
773 """Pull all the relevant information out of a given tracefile. | 774 """Pull all the relevant information out of a given tracefile. |
774 | 775 |
775 Args: | 776 Args: |
776 afile: is the filename string we will be processing. | 777 afile: is the filename string we will be processing. |
777 Returns: True if we successfullly posted our data to storage.""" | 778 Returns: True if we successfully posted our data to storage.""" |
778 os.chdir(os.path.join(DART_INSTALL_LOCATION, 'tools', | 779 os.chdir(os.path.join(DART_INSTALL_LOCATION, 'tools', |
779 'testing', 'perf_testing')) | 780 'testing', 'perf_testing')) |
780 if self.test.test_runner.no_upload: | 781 if self.test.test_runner.no_upload: |
781 return | 782 return |
782 f = open(os.path.join(self.test.result_folder_name, afile)) | 783 f = open(os.path.join(self.test.result_folder_name, afile)) |
783 tabulate_data = False | 784 tabulate_data = False |
784 revision_num = 0 | 785 revision_num = 0 |
785 revision_pattern = r'Revision: (\d+)' | 786 revision_pattern = r'Revision: (\d+)' |
786 result_pattern = r'Size \((\w+), ([a-zA-Z0-9-]+)\): (\d+)' | 787 result_pattern = r'Size \((\w+), ([a-zA-Z0-9-]+)\): (\d+)' |
787 | 788 |
788 upload_success = True | 789 upload_success = True |
789 for line in f.readlines(): | 790 for line in f.readlines(): |
790 rev = re.match(revision_pattern, line.strip()) | 791 rev = re.match(revision_pattern, line.strip()) |
791 if rev: | 792 if rev: |
792 revision_num = int(rev.group(1)) | 793 revision_num = int(rev.group(1)) |
793 continue | 794 continue |
794 | 795 |
795 result = re.match(result_pattern, line.strip()) | 796 result = re.match(result_pattern, line.strip()) |
796 if result: | 797 if result: |
797 variant = result.group(1) | 798 variant = result.group(1) |
798 metric = result.group(2) | 799 metric = result.group(2) |
799 num = result.group(3) | 800 num = result.group(3) |
800 if num.find('.') == -1: | 801 if num.find('.') == -1: |
801 num = int(num) | 802 num = int(num) |
802 else: | 803 else: |
803 num = float(num) | 804 num = float(num) |
804 upload_success = upload_success and self.report_results( | 805 upload_success = upload_success and self.report_results( |
805 metric, num, 'browser', variant, revision_num, self.CODE_SIZE) | 806 metric, num, 'commandline', variant, revision_num, self.CODE_SIZE) |
806 | 807 |
807 f.close() | 808 f.close() |
808 return upload_success | 809 return upload_success |
809 | 810 |
810 | 811 |
811 class CompileTimeAndSizeTest(Test): | 812 class CompileTimeAndSizeTest(Test): |
812 """Run tests to determine how long frogc takes to compile, and the compiled | 813 """Run tests to determine how long frogc takes to compile, and the compiled |
813 file output size of some benchmarking files.""" | 814 file output size of some benchmarking files.""" |
814 def __init__(self, test_runner): | 815 def __init__(self, test_runner): |
815 """Reference to the test_runner object that notifies us when to begin | 816 """Reference to the test_runner object that notifies us when to begin |
(...skipping 22 matching lines...) Expand all Loading... |
838 os.chdir('frog') | 839 os.chdir('frog') |
839 self.test.trace_file = os.path.join( | 840 self.test.trace_file = os.path.join( |
840 '..', 'tools', 'testing', 'perf_testing', | 841 '..', 'tools', 'testing', 'perf_testing', |
841 self.test.result_folder_name, | 842 self.test.result_folder_name, |
842 self.test.result_folder_name + self.test.cur_time) | 843 self.test.result_folder_name + self.test.cur_time) |
843 | 844 |
844 self.add_svn_revision_to_trace(self.test.trace_file) | 845 self.add_svn_revision_to_trace(self.test.trace_file) |
845 | 846 |
846 self.test.test_runner.run_cmd( | 847 self.test.test_runner.run_cmd( |
847 [self.test.dart_vm, 'frogc.dart', '--out=swarm-result', | 848 [self.test.dart_vm, 'frogc.dart', '--out=swarm-result', |
848 os.path.join('..', 'samples', 'swarm', | 849 os.path.join('..', 'internal', 'golem', 'benchmarks-dart2js', 'tests', |
849 'swarm.dart')]) | 850 'samples-r6461', 'swarm', 'swarm.dart')]) |
850 | 851 |
851 swarm_size = 0 | 852 swarm_size = 0 |
852 try: | 853 try: |
853 swarm_size = os.path.getsize('swarm-result') | 854 swarm_size = os.path.getsize('swarm-result') |
854 except OSError: | 855 except OSError: |
855 pass #If compilation failed, continue on running other tests. | 856 pass #If compilation failed, continue on running other tests. |
856 | 857 |
857 self.test.test_runner.run_cmd( | 858 self.test.test_runner.run_cmd( |
858 [self.test.dart_vm, 'frogc.dart', '--out=total-result', | 859 [self.test.dart_vm, 'frogc.dart', '--out=total-result', |
859 os.path.join('..', 'samples', 'total', | 860 os.path.join('..', 'internal', 'golem', 'benchmarks-dart2js', 'tests', |
860 'client', 'Total.dart')]) | 861 'samples-r6461', 'total', 'client', 'Total.dart')]) |
861 total_size = 0 | 862 total_size = 0 |
862 try: | 863 try: |
863 total_size = os.path.getsize('total-result') | 864 total_size = os.path.getsize('total-result') |
864 except OSError: | 865 except OSError: |
865 pass #If compilation failed, continue on running other tests. | 866 pass #If compilation failed, continue on running other tests. |
866 | 867 |
867 self.test.test_runner.run_cmd( | 868 self.test.test_runner.run_cmd( |
868 ['echo', '%d Generated checked swarm size' % swarm_size], | 869 ['echo', '%d Generated checked swarm size' % swarm_size], |
869 self.test.trace_file, append=True) | 870 self.test.trace_file, append=True) |
870 | 871 |
871 self.test.test_runner.run_cmd( | 872 self.test.test_runner.run_cmd( |
872 ['echo', '%d Generated checked total size' % total_size], | 873 ['echo', '%d Generated checked total size' % total_size], |
873 self.test.trace_file, append=True) | 874 self.test.trace_file, append=True) |
874 | 875 |
875 os.chdir('..') | 876 os.chdir('..') |
876 | 877 |
877 | 878 |
878 class CompileProcessor(Processor): | 879 class CompileProcessor(Processor): |
879 | 880 |
880 def process_file(self, afile): | 881 def process_file(self, afile): |
881 """Pull all the relevant information out of a given tracefile. | 882 """Pull all the relevant information out of a given tracefile. |
882 | 883 |
883 Args: | 884 Args: |
884 afile: is the filename string we will be processing. | 885 afile: is the filename string we will be processing. |
885 Returns: True if we successfullly posted our data to storage.""" | 886 Returns: True if we successfully posted our data to storage.""" |
886 os.chdir(os.path.join(DART_INSTALL_LOCATION, 'tools', | 887 os.chdir(os.path.join(DART_INSTALL_LOCATION, 'tools', |
887 'testing', 'perf_testing')) | 888 'testing', 'perf_testing')) |
888 if self.test.test_runner.no_upload: | 889 if self.test.test_runner.no_upload: |
889 return | 890 return |
890 f = open(os.path.join(self.test.result_folder_name, afile)) | 891 f = open(os.path.join(self.test.result_folder_name, afile)) |
891 tabulate_data = False | 892 tabulate_data = False |
892 revision_num = 0 | 893 revision_num = 0 |
893 upload_success = True | 894 upload_success = True |
894 for line in f.readlines(): | 895 for line in f.readlines(): |
895 tokens = line.split() | 896 tokens = line.split() |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
934 while True: | 935 while True: |
935 if runner.has_new_code(): | 936 if runner.has_new_code(): |
936 runner.run_test_sequence() | 937 runner.run_test_sequence() |
937 else: | 938 else: |
938 time.sleep(200) | 939 time.sleep(200) |
939 else: | 940 else: |
940 runner.run_test_sequence() | 941 runner.run_test_sequence() |
941 | 942 |
942 if __name__ == '__main__': | 943 if __name__ == '__main__': |
943 main() | 944 main() |
OLD | NEW |