| #!/usr/bin/python |
| |
| # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| # for details. All rights reserved. Use of this source code is governed by a |
| # BSD-style license that can be found in the LICENSE file. |
| |
| from create_graph import BROWSER_CORRECTNESS |
| from create_graph import BrowserCorrectnessTest |
| from create_graph import BROWSER_PERF |
| from create_graph import BrowserPerformanceTest |
| from create_graph import CL_PERF |
| from create_graph import CommandLinePerformanceTest |
| from create_graph import CompileTimeAndSizeTest |
| from create_graph import TIME_SIZE |
| |
| import os |
| from os.path import dirname, abspath |
| import pickle |
| import re |
| import sys |
| |
| """Find the most recent performance files, and store the stats.""" |
| |
| # TODO(efortuna): turn these into proper appengine tasks, using the app engine |
| # datastore instead of files. |
| |
| DIRECTORIES = [BROWSER_CORRECTNESS, BROWSER_PERF, CL_PERF, TIME_SIZE] |
| PICKLE_FILENAME = 'start_stats.txt' |
| |
| def find_latest_data_files(directory): |
| """Given a directory, find the files with the latest timestamp, indicating the |
| latest results. |
| |
| Args: |
| directory: name of the directory we should look inside. |
| |
| Returns: |
| A list of the most recent files in the particular directory.""" |
| path = dirname(abspath(__file__)) |
| files = os.listdir(os.path.join(path, directory)) |
| files.sort() |
| f = files.pop() |
| match = re.search('[1-9]', f) |
| trace_name = f[:match.start()] |
| timestamp_and_data = f[match.start():] |
| latest_files = [f] |
| if trace_name == 'correctness' or trace_name == 'perf-': |
| index = timestamp_and_data.find('-') |
| timestamp = timestamp_and_data[:index] |
| f = files.pop() |
| while f[match.start() : match.start() + index] == timestamp: |
| latest_files.append(f) |
| f = files.pop() |
| return latest_files |
| |
| def populate_stats_dict(test_runner_dict = None): |
| """Find the latest files in each directory, and process those latest files |
| using the appropriate TestRunner. |
| |
| Args: |
| test_runner_dict: Optional agument storing previous data in runners to which |
| we should add our data.""" |
| cur_runner_dict = dict() |
| if test_runner_dict: |
| cur_runner_dict = test_runner_dict |
| for directory in DIRECTORIES: |
| test_runner = None |
| latest_files = find_latest_data_files(directory) |
| |
| if test_runner_dict: |
| test_runner = cur_runner_dict[directory] |
| else: |
| if directory == BROWSER_CORRECTNESS: |
| test_runner = BrowserCorrectnessTest('language', directory) |
| elif directory == BROWSER_PERF: |
| test_runner = BrowserPerformanceTest(directory) |
| elif directory == TIME_SIZE: |
| test_runner = CompileTimeAndSizeTest(directory) |
| elif directory == CL_PERF: |
| test_runner = CommandLinePerformanceTest(directory) |
| cur_runner_dict[directory] = test_runner |
| |
| for f in latest_files: |
| test_runner.process_file(f) |
| return cur_runner_dict |
| |
| def main(): |
| test_runner_dict = populate_stats_dict() |
| f = open(PICKLE_FILENAME, 'w') |
| pickle.dump(test_runner_dict, f) |
| f.close() |
| |
| if __name__ == '__main__': |
| main() |