aboutsummaryrefslogtreecommitdiff
path: root/deprecated/summarize_results.py
diff options
context:
space:
mode:
Diffstat (limited to 'deprecated/summarize_results.py')
-rwxr-xr-xdeprecated/summarize_results.py145
1 files changed, 145 insertions, 0 deletions
diff --git a/deprecated/summarize_results.py b/deprecated/summarize_results.py
new file mode 100755
index 00000000..67d7e9a4
--- /dev/null
+++ b/deprecated/summarize_results.py
@@ -0,0 +1,145 @@
+#!/usr/bin/python2
+#
+# Copyright 2010 Google Inc. All Rights Reserved.
+"""Script to summarize the results of various log files."""
+
+from __future__ import print_function
+
+__author__ = 'raymes@google.com (Raymes Khoury)'
+
+from cros_utils import command_executer
+import os
+import sys
+import re
+
+RESULTS_DIR = 'results'
+RESULTS_FILE = RESULTS_DIR + '/results.csv'
+
+# pylint: disable=anomalous-backslash-in-string
+
+class DejaGNUSummarizer(object):
+ """DejaGNU Summarizer Class"""
+
+ def __int__(self):
+ pass
+
+ 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(object):
+ """Perflab Summarizer class"""
+
+ def __init__(self):
+ pass
+
+ 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\t%s\n' % (match[0], match[1], filename)
+ return result
+
+
+class AutoTestSummarizer(object):
+ """AutoTest Summarizer class"""
+
+ def __init__(self):
+ pass
+
+ 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()]
+ inp = open(filename, 'rb')
+ executer = command_executer.GetCommandExecuter()
+ for summarizer in summarizers:
+ inp.seek(0)
+ if summarizer.Matches(inp):
+ executer.CopyFiles(filename, RESULTS_DIR, recursive=False)
+ inp.seek(0)
+ result = summarizer.Summarize(inp, os.path.basename(filename))
+ inp.close()
+ return result
+ inp.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)