2 from __future__
import print_function
4 import re
, string
, sys
, os
, time
7 testDirName
= "llvm-test"
8 test
= ["compile", "llc", "jit", "cbe"]
14 comptime
= ["llc", "jit-comptime", "compile"]
16 (tp
, exp
) = ("compileTime_", "executeTime_")
24 d
= re
.sub(r
",\d+:\d", "", d
)
26 r
= re
.findall(r
"TEST-(PASS|FAIL|RESULT.*?):\s+(.*?)\s+(.*?)\r*\n", d
)
33 if t
[0] == "PASS" or t
[0] == "FAIL":
34 tmp
= t
[2].split(testDirName
)
40 fname
= tmp
[1].strip("\r\n")
42 fname
= tmp
[0].strip("\r\n")
49 test
[fname
][t
[1]] = t
[0]
51 print(test
[fname
][t
[1]])
54 n
= t
[0].split("RESULT-")[1]
59 if n
== "llc" or n
== "jit-comptime" or n
== "compile":
60 test
[fname
][tp
+ n
] = float(t
[2].split(" ")[2])
62 print(test
[fname
][tp
+ n
])
64 elif n
.endswith("-time"):
65 test
[fname
][exp
+ n
] = float(t
[2].strip("\r\n"))
67 print(test
[fname
][exp
+ n
])
79 # Diff results and look for regressions.
80 def diffResults(d_old
, d_new
):
82 for t
in sorted(d_old
.keys()):
88 # Check if the test passed or failed.
92 if d_old
[t
][x
] == "PASS":
93 if d_new
[t
][x
] != "PASS":
94 print(t
+ " *** REGRESSION (" + x
+ ")\n")
96 if d_new
[t
][x
] == "PASS":
97 print(t
+ " * NEW PASS (" + x
+ ")\n")
100 print(t
+ "*** REGRESSION (" + x
+ ")\n")
102 # For execution time, if there is no result, its a fail.
104 if tp
+ x
in d_old
[t
]:
105 if tp
+ x
not in d_new
[t
]:
106 print(t
+ " *** REGRESSION (" + tp
+ x
+ ")\n")
109 if tp
+ x
in d_new
[t
]:
110 print(t
+ " * NEW PASS (" + tp
+ x
+ ")\n")
113 if exp
+ x
in d_old
[t
]:
114 if exp
+ x
not in d_new
[t
]:
115 print(t
+ " *** REGRESSION (" + exp
+ x
+ ")\n")
118 if exp
+ x
in d_new
[t
]:
119 print(t
+ " * NEW PASS (" + exp
+ x
+ ")\n")
122 print(t
+ ": Removed from test-suite.\n")
126 if len(sys
.argv
) < 3:
127 print("Usage:", sys
.argv
[0], "<old log> <new log>")
130 d_old
= parse(sys
.argv
[1])
131 d_new
= parse(sys
.argv
[2])
134 diffResults(d_old
, d_new
)