blob: 20882e237ef6c81fa67d21edfb84f7251e879594 [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"]
21 fail_statuses = ["FAIL", "XFAIL", "UNSUPPORTED", "ERROR", "WARNING"]
22 for line in log_file:
23 line = line.strip().split(":")
24 if len(line) > 1 and (line[0] in pass_statuses or
25 line[0] in fail_statuses):
26 test_name = (":".join(line[1:])).replace("\t", " ").strip()
27 if line[0] in pass_statuses:
28 test_result = "pass"
29 else:
30 test_result = "fail"
31 result += "%s\t%s\n" % (test_name, test_result)
32 return result
33
34class AutoTestSummarizer:
35 def Matches(self, log_file):
36 for log_line in log_file:
37 if log_line.find("""Installing autotest on""") > -1:
38 return True
39 return False
40
41 def Summarize(self, log_file):
42 result = ""
43 pass_statuses = ["PASS"]
44 fail_statuses = ["FAIL"]
45 for line in log_file:
46 line = line.strip().split(" ")
47 if len(line) > 1 and (line[-1].strip() in pass_statuses or
48 line[-1].strip() in fail_statuses):
49 test_name = (line[0].strip())
50 if line[-1].strip() in pass_statuses:
51 test_result = "pass"
52 else:
53 test_result = "fail"
54 result += "%s\t%s\n" % (test_name, test_result)
55 return result
56
57def Usage():
58 print "Usage: %s log_file" % sys.argv[0]
59 sys.exit(1)
60
61def Main(argv):
62 if len(argv) != 2:
63 Usage()
64 filename = argv[1]
65
66 summarizers = [DejaGNUSummarizer(), AutoTestSummarizer()]
67 f = open(filename, 'rb')
68 for summarizer in summarizers:
69 f.seek(0)
70 if summarizer.Matches(f):
71 f.seek(0)
72 print summarizer.Summarize(f)
73 exit(0)
74 print "Log file not in expected format"
75
76if __name__ == "__main__":
77 Main(sys.argv)
78