diff options
author | Luis Lozano <llozano@chromium.org> | 2013-03-15 14:44:13 -0700 |
---|---|---|
committer | ChromeBot <chrome-bot@google.com> | 2013-03-15 15:51:37 -0700 |
commit | f81680c018729fd4499e1e200d04b48c4b90127c (patch) | |
tree | 940608da8374604b82edfdb2d7df55d065f05d4c /summarize_results.py | |
parent | 2296ee0b914aba5bba07becab4ff68884ce9b8a5 (diff) | |
download | toolchain-utils-f81680c018729fd4499e1e200d04b48c4b90127c.tar.gz |
Cleaned up directory after copy of tools from perforce directory
Got rid of stale copies of some tools like "crosperf" and moved all
files under v14 directory (that came from perforce) into the top
directory.
BUG=None
TEST=None
Change-Id: I408d17a36ceb00e74db71403d2351fd466a14f8e
Reviewed-on: https://gerrit-int.chromium.org/33887
Tested-by: Luis Lozano <llozano@chromium.org>
Reviewed-by: Yunlian Jiang <yunlian@google.com>
Commit-Queue: Luis Lozano <llozano@chromium.org>
Diffstat (limited to 'summarize_results.py')
-rwxr-xr-x | summarize_results.py | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/summarize_results.py b/summarize_results.py new file mode 100755 index 00000000..3e561f3b --- /dev/null +++ b/summarize_results.py @@ -0,0 +1,126 @@ +#!/usr/bin/python2.6 +# +# Copyright 2010 Google Inc. All Rights Reserved. + +"""Script to summarize the results of various log files.""" + +__author__ = "raymes@google.com (Raymes Khoury)" + +from utils import command_executer +import os +import sys +import re + +RESULTS_DIR = "results" +RESULTS_FILE = RESULTS_DIR + "/results.csv" + +class DejaGNUSummarizer: + def Matches(self, log_file): + for log_line in log_file: + if log_line.find("""tests ===""") > -1: + return True + return False + + def Summarize(self, log_file, filename): + result = "" + pass_statuses = ["PASS", "XPASS"] + fail_statuses = ["FAIL", "XFAIL", "UNSUPPORTED"] + name_count = {} + for line in log_file: + line = line.strip().split(":") + if len(line) > 1 and (line[0] in pass_statuses or + line[0] in fail_statuses): + test_name = (":".join(line[1:])).replace("\t", " ").strip() + count = name_count.get(test_name, 0) + 1 + name_count[test_name] = count + test_name = "%s (%s)" % (test_name, str(count)) + if line[0] in pass_statuses: + test_result = "pass" + else: + test_result = "fail" + result += "%s\t%s\t%s\n" % (test_name, test_result, filename) + return result + + +class PerflabSummarizer: + def Matches(self, log_file): + p = re.compile("METRIC isolated \w+") + for log_line in log_file: + if p.search(log_line): + return True + return False + + def Summarize(self, log_file, filename): + result = "" + p = re.compile("METRIC isolated (\w+) .*\['(.*?)'\]") + log_file_lines = "\n".join(log_file) + matches = p.findall(log_file_lines) + for match in matches: + if len(match) != 2: + continue + result += "%s\t%s\n" % (match[0], match[1]) + return result + + +class AutoTestSummarizer: + def Matches(self, log_file): + for log_line in log_file: + if log_line.find("""Installing autotest on""") > -1: + return True + return False + + def Summarize(self, log_file, filename): + result = "" + pass_statuses = ["PASS"] + fail_statuses = ["FAIL"] + for line in log_file: + line = line.strip().split(" ") + if len(line) > 1 and (line[-1].strip() in pass_statuses or + line[-1].strip() in fail_statuses): + test_name = (line[0].strip()) + if line[-1].strip() in pass_statuses: + test_result = "pass" + else: + test_result = "fail" + result += "%s\t%s\t%s\n" % (test_name, test_result, filename) + return result + +def Usage(): + print "Usage: %s log_file" % sys.argv[0] + sys.exit(1) + + +def SummarizeFile(filename): + summarizers = [DejaGNUSummarizer(), AutoTestSummarizer(), PerflabSummarizer()] + input = open(filename, 'rb') + executer = command_executer.GetCommandExecuter() + for summarizer in summarizers: + input.seek(0) + if summarizer.Matches(input): + executer.CopyFiles(filename, RESULTS_DIR, recursive=False) + input.seek(0) + result = summarizer.Summarize(input, os.path.basename(filename)) + input.close() + return result + input.close() + return None + + +def Main(argv): + if len(argv) != 2: + Usage() + filename = argv[1] + + executer = command_executer.GetCommandExecuter() + executer.RunCommand("mkdir -p %s" % RESULTS_DIR) + summary = SummarizeFile(filename) + if summary is not None: + output = open(RESULTS_FILE, "a") + output.write(summary.strip() + "\n") + output.close() + return 0 + +if __name__ == "__main__": + retval = Main(sys.argv) + sys.exit(retval) + |