summaryrefslogtreecommitdiff
path: root/obbench
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2015-07-16 13:38:31 +0300
committerLars Wirzenius <liw@liw.fi>2015-07-16 13:38:31 +0300
commit7e125a2883f16a6e7b47d10370db36855da47506 (patch)
tree7c9a502e383396247cb3ab431118330a4f4eff9c /obbench
parent0a30b42d25c8d274c97104f2d383435d437f3b19 (diff)
downloadobnam-benchmarks-7e125a2883f16a6e7b47d10370db36855da47506.tar.gz
Share one git clone for all benchmark runs
Diffstat (limited to 'obbench')
-rwxr-xr-xobbench21
1 files changed, 12 insertions, 9 deletions
diff --git a/obbench b/obbench
index 34339a7..20761a7 100755
--- a/obbench
+++ b/obbench
@@ -31,26 +31,29 @@ class ObnamBenchmarker(cliapp.Application):
if not args:
raise cliapp.AppException('Need benchmark spec filename')
spec = self.read_benchmark_spec(args[0])
+ tempdir = tempfile.mkdtemp()
for treeish in args[1:]:
- self.run_all_benchmarks(spec, treeish)
+ self.run_all_benchmarks(spec, treeish, tempdir)
self.generate_html(spec)
+ shutil.rmtree(tempdir)
def read_benchmark_spec(self, filename):
with open(filename) as f:
return yaml.safe_load(f)
- def run_all_benchmarks(self, spec, treeish):
- checkout = self.get_treeish(spec, treeish)
+ def run_all_benchmarks(self, spec, treeish, tempdir):
+ checkout = self.get_treeish(spec, treeish, tempdir)
for benchmark in spec.get('benchmarks', []):
result = self.run_one_benchmark(benchmark, checkout)
self.save_result(spec, result)
- shutil.rmtree(checkout)
- def get_treeish(self, spec, treeish):
- tempdir = tempfile.mkdtemp()
- cliapp.runcmd(['git', 'clone', spec['git'], tempdir])
- cliapp.runcmd(['git', 'checkout', treeish], cwd=tempdir)
- return tempdir
+ def get_treeish(self, spec, treeish, tempdir):
+ checkout = os.path.join(tempdir, 'git')
+ if not os.path.exists(checkout):
+ cliapp.runcmd(['git', 'clone', spec['git'], checkout])
+ cliapp.runcmd(['git', 'checkout', treeish], cwd=checkout)
+ cliapp.runcmd(['git', 'clean', '-fdxq'], cwd=checkout)
+ return checkout
def run_one_benchmark(self, benchmark, checkout):
result = BenchmarkResult()