blob: ec50f1f28e87b317de31ba7de4dd2e53032f7455 [file] [log] [blame]
raymesf12f79d2013-02-15 05:16:01 +00001#!/usr/bin/python2.6
2#
3# Copyright 2010 Google Inc. All Rights Reserved.
4
5"""Script to summarize the results of various log files."""
6
7__author__ = "raymes@google.com (Raymes Khoury)"
8
9import sys
10
11class DejaGNUSummarizer:
12 def Matches(self, log_file):
13 for log_line in log_file:
14 if log_line.find("""tests ===""") > -1:
15 return True
16 return False
17
18 def Summarize(self, log_file):
19 result = ""
20 pass_statuses = ["PASS", "XPASS"]
raymesb7b6a402013-02-15 05:21:00 +000021 fail_statuses = ["FAIL", "XFAIL", "UNSUPPORTED"]
22 name_count = {}
raymesf12f79d2013-02-15 05:16:01 +000023 for line in log_file:
24 line = line.strip().split(":")
25 if len(line) > 1 and (line[0] in pass_statuses or
26 line[0] in fail_statuses):
27 test_name = (":".join(line[1:])).replace("\t", " ").strip()
raymesb7b6a402013-02-15 05:21:00 +000028 count = name_count.get(test_name, 0) + 1
29 name_count[test_name] = count
30 test_name = "%s (%s)" % (test_name, str(count))
raymesf12f79d2013-02-15 05:16:01 +000031 if line[0] in pass_statuses:
32 test_result = "pass"
33 else:
34 test_result = "fail"
35 result += "%s\t%s\n" % (test_name, test_result)
36 return result
37
38class AutoTestSummarizer:
39 def Matches(self, log_file):
40 for log_line in log_file:
41 if log_line.find("""Installing autotest on""") > -1:
42 return True
43 return False
44
45 def Summarize(self, log_file):
46 result = ""
47 pass_statuses = ["PASS"]
48 fail_statuses = ["FAIL"]
49 for line in log_file:
50 line = line.strip().split(" ")
51 if len(line) > 1 and (line[-1].strip() in pass_statuses or
52 line[-1].strip() in fail_statuses):
53 test_name = (line[0].strip())
54 if line[-1].strip() in pass_statuses:
55 test_result = "pass"
56 else:
57 test_result = "fail"
58 result += "%s\t%s\n" % (test_name, test_result)
59 return result
60
61def Usage():
62 print "Usage: %s log_file" % sys.argv[0]
63 sys.exit(1)
64
raymesf12f79d2013-02-15 05:16:01 +000065
raymes85ef5db2013-02-15 05:20:49 +000066def SummarizeFile(filename):
raymesf12f79d2013-02-15 05:16:01 +000067 summarizers = [DejaGNUSummarizer(), AutoTestSummarizer()]
68 f = open(filename, 'rb')
69 for summarizer in summarizers:
70 f.seek(0)
71 if summarizer.Matches(f):
72 f.seek(0)
raymes85ef5db2013-02-15 05:20:49 +000073 result = summarizer.Summarize(f)
74 f.close()
75 return result
76 f.close()
77 return None
78
79
80def Main(argv):
81 if len(argv) != 2:
82 Usage()
83 filename = argv[1]
84
85 print SummarizeFile(filename)
raymesf12f79d2013-02-15 05:16:01 +000086
87if __name__ == "__main__":
88 Main(sys.argv)
89