blob: 0eb396b69908612ba800bf796c499dfa6cf3a586 [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
raymesf12f79d2013-02-15 05:16:01 +000061
raymes85ef5db2013-02-15 05:20:49 +000062def SummarizeFile(filename):
raymesf12f79d2013-02-15 05:16:01 +000063 summarizers = [DejaGNUSummarizer(), AutoTestSummarizer()]
64 f = open(filename, 'rb')
65 for summarizer in summarizers:
66 f.seek(0)
67 if summarizer.Matches(f):
68 f.seek(0)
raymes85ef5db2013-02-15 05:20:49 +000069 result = summarizer.Summarize(f)
70 f.close()
71 return result
72 f.close()
73 return None
74
75
76def Main(argv):
77 if len(argv) != 2:
78 Usage()
79 filename = argv[1]
80
81 print SummarizeFile(filename)
raymesf12f79d2013-02-15 05:16:01 +000082
83if __name__ == "__main__":
84 Main(sys.argv)
85