blob: 4481501ccd86484d391c8d0948b69e88d9c46aff [file] [log] [blame]
#!/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()