in source/benchmark-sample/run-query.py [0:0]
def run(engine, db, fs):
cmd = commands[engine.lower()] % db
_, fmt, scale = db.split("_")[:3]
fname = os.path.join(os.getcwd(), "{engine}.{fmt}.{fs}.{scale}.res".format(
engine=engine, fmt=fmt, fs=fs, scale=scale))
res = open(fname, "w")
fcall([res.write, sys.stdout.write], "# filename, time, status\n")
queries = glob.glob(os.path.join(queries_dir, "*.sql"))
queries = sorted(queries, key=lambda n: int(re.findall(r'\d+', n)[0]))
for q in queries:
# Get the best result from n rounds
name = f"{q}.{engine}.{fmt}.{fs}.{scale}"
cmdl = f"{cmd} {q}"
fwrite(f"{name}.cmd", cmdl)
outs = [elapse(sh, f"{cmdl} > {name}.{i}.log 2>&1") for i in range(N)]
durs = [r[0] for r in outs]
rets = [r[1] for r in outs]
success = not any(rets)
if success:
status = "success"
else:
status = "failed"
cost = avg(durs)
if success:
fwrite(f"{name}.res", str(cost))
fcall([res.write, sys.stdout.write], "%s %s(%d tries), %f\n" % (os.path.basename(q), status, N, cost))
fcall([res.flush, sys.stdout.flush])
res.close()