OLD | NEW |
| (Empty) |
1 #!/usr/bin/python | |
2 | |
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 | |
5 # BSD-style license that can be found in the LICENSE file. | |
6 | |
7 from create_graph import BROWSER_CORRECTNESS | |
8 from create_graph import BrowserCorrectnessTest | |
9 from create_graph import BROWSER_PERF | |
10 from create_graph import BrowserPerformanceTest | |
11 from create_graph import CL_PERF | |
12 from create_graph import CommandLinePerformanceTest | |
13 from create_graph import CompileTimeAndSizeTest | |
14 from create_graph import TIME_SIZE | |
15 | |
16 import os | |
17 from os.path import dirname, abspath | |
18 import pickle | |
19 import re | |
20 import sys | |
21 | |
22 """Find the most recent performance files, and store the stats.""" | |
23 | |
24 # TODO(efortuna): turn these into proper appengine tasks, using the app engine | |
25 # datastore instead of files. | |
26 | |
27 DIRECTORIES = [BROWSER_CORRECTNESS, BROWSER_PERF, CL_PERF, TIME_SIZE] | |
28 PICKLE_FILENAME = 'start_stats.txt' | |
29 | |
30 def find_latest_data_files(directory): | |
31 """Given a directory, find the files with the latest timestamp, indicating the | |
32 latest results. | |
33 | |
34 Args: | |
35 directory: name of the directory we should look inside. | |
36 | |
37 Returns: | |
38 A list of the most recent files in the particular directory.""" | |
39 path = dirname(abspath(__file__)) | |
40 files = os.listdir(os.path.join(path, directory)) | |
41 files.sort() | |
42 f = files.pop() | |
43 match = re.search('[1-9]', f) | |
44 trace_name = f[:match.start()] | |
45 timestamp_and_data = f[match.start():] | |
46 latest_files = [f] | |
47 if trace_name == 'correctness' or trace_name == 'perf-': | |
48 index = timestamp_and_data.find('-') | |
49 timestamp = timestamp_and_data[:index] | |
50 f = files.pop() | |
51 while f[match.start() : match.start() + index] == timestamp: | |
52 latest_files.append(f) | |
53 f = files.pop() | |
54 return latest_files | |
55 | |
56 def populate_stats_dict(test_runner_dict = None): | |
57 """Find the latest files in each directory, and process those latest files | |
58 using the appropriate TestRunner. | |
59 | |
60 Args: | |
61 test_runner_dict: Optional agument storing previous data in runners to which | |
62 we should add our data.""" | |
63 cur_runner_dict = dict() | |
64 if test_runner_dict: | |
65 cur_runner_dict = test_runner_dict | |
66 for directory in DIRECTORIES: | |
67 test_runner = None | |
68 latest_files = find_latest_data_files(directory) | |
69 | |
70 if test_runner_dict: | |
71 test_runner = cur_runner_dict[directory] | |
72 else: | |
73 if directory == BROWSER_CORRECTNESS: | |
74 test_runner = BrowserCorrectnessTest('language', directory) | |
75 elif directory == BROWSER_PERF: | |
76 test_runner = BrowserPerformanceTest(directory) | |
77 elif directory == TIME_SIZE: | |
78 test_runner = CompileTimeAndSizeTest(directory) | |
79 elif directory == CL_PERF: | |
80 test_runner = CommandLinePerformanceTest(directory) | |
81 cur_runner_dict[directory] = test_runner | |
82 | |
83 for f in latest_files: | |
84 test_runner.process_file(f) | |
85 return cur_runner_dict | |
86 | |
87 def main(): | |
88 test_runner_dict = populate_stats_dict() | |
89 f = open(PICKLE_FILENAME, 'w') | |
90 pickle.dump(test_runner_dict, f) | |
91 f.close() | |
92 | |
93 if __name__ == '__main__': | |
94 main() | |
OLD | NEW |