@@ -63,9 +63,18 @@ def main():
63
63
argparser .add_argument (
64
64
'newbuilddir' , nargs = 1 , type = str ,
65
65
help = 'new benchmark build directory' )
66
+ argparser .add_argument (
67
+ '-check-added' , action = 'store_const' ,
68
+ help = "Run BenchmarkDoctor's check on newly added benchmarks" ,
69
+ const = lambda args : check_added (args ), dest = 'func' )
70
+ argparser .set_defaults (func = test_opt_levels )
66
71
args = argparser .parse_args ()
67
72
VERBOSE = args .verbose
68
73
74
+ return args .func (args )
75
+
76
+
77
+ def test_opt_levels (args ):
69
78
for opt_level in args .opt_levels or ['O' , 'Osize' , 'Onone' ]:
70
79
log ('Testing optimization level -' + opt_level )
71
80
test_opt_level (opt_level , args .oldbuilddir [0 ], args .newbuilddir [0 ],
@@ -178,7 +187,33 @@ def get_results(bench_dir, opt_level, num_samples, to_test):
178
187
sys .stderr .flush ()
179
188
return sys .exit (e .returncode )
180
189
else :
181
- return output
190
+ return output
191
+
192
+
193
+ class DriverArgs (object ):
194
+ def __init__ (self , tests ):
195
+ self .benchmarks = None
196
+ self .filters = None
197
+ self .tests = os .path .join (tests , 'bin' )
198
+ self .optimization = 'O'
199
+
200
+
201
+ def check_added (args ):
202
+ from imp import load_source
203
+ # import Benchmark_Driver # doesn't work because it misses '.py' extension
204
+ Benchmark_Driver = load_source (
205
+ 'Benchmark_Driver' , os .path .join (os .path .dirname (
206
+ os .path .abspath (__file__ )), 'Benchmark_Driver' ))
207
+ # from Benchmark_Driver import BenchmarkDriver, BenchmarkDoctor
208
+ BenchmarkDriver = Benchmark_Driver .BenchmarkDriver
209
+ BenchmarkDoctor = Benchmark_Driver .BenchmarkDoctor
210
+
211
+ old = BenchmarkDriver (DriverArgs (args .oldbuilddir [0 ]))
212
+ new = BenchmarkDriver (DriverArgs (args .newbuilddir [0 ]))
213
+ added = set (new .tests ).difference (set (old .tests ))
214
+ new .tests = list (added )
215
+ doctor = BenchmarkDoctor (args , driver = new )
216
+ doctor .check ()
182
217
183
218
184
219
if __name__ == '__main__' :
0 commit comments