88 lines
2.9 KiB
Python
Executable File
88 lines
2.9 KiB
Python
Executable File
#!/bin/env python
|
|
__author__ = 'dongyun.zdy'
|
|
import subprocess as sp
|
|
import os
|
|
import sys
|
|
import getopt
|
|
import time
|
|
|
|
ISOTIMEFORMAT = '%Y-%m-%d %X'
|
|
|
|
# cmd_form = "./cost_model_util -t mg -B -s c10k1.schema -r 10000 -Z 1 -V 10 -e 1 -o 10 -p 1 >> out_file"
|
|
cmd_form = "./cost_model_util -t mg -G -s c10k1.schema -r 10000 -Z 1 -V 10 -e 1 -o 10 -p 1 >> mergegroupby_result"
|
|
cmd_elements = cmd_form.split(" ")
|
|
|
|
row_counts = [10, 30, 50, 70, 100, 1000, 5000, 10000]
|
|
steps = [1, 3, 5, 10, 20]
|
|
aggr_funcs = [1, 4, 7, 10]
|
|
group_cols = [1, 4, 7, 10]
|
|
non_group_cols = [10]
|
|
|
|
case_run_time = 7
|
|
|
|
total_case_count = len(row_counts)
|
|
total_case_count *= len(steps)
|
|
total_case_count *= len(aggr_funcs)
|
|
total_case_count *= len(group_cols)
|
|
total_case_count *= len(non_group_cols)
|
|
total_case_count *= case_run_time
|
|
|
|
print total_case_count
|
|
wrong_arg = False
|
|
|
|
out_file_name = "mergegroupby_result"
|
|
if os.path.exists(out_file_name):
|
|
os.remove(out_file_name)
|
|
opts, args = getopt.getopt(sys.argv[1:], "o:")
|
|
for op, value in opts:
|
|
if "-o" == op:
|
|
out_file_name = value
|
|
else:
|
|
wrong_arg = True
|
|
|
|
if wrong_arg:
|
|
print "wrong arg"
|
|
sys.exit(1)
|
|
|
|
case_count = 0
|
|
cmd_elements[-1] = out_file_name
|
|
if os.path.exists(out_file_name):
|
|
os.remove(out_file_name)
|
|
|
|
print "Total case count %s ..." % (total_case_count)
|
|
|
|
for row_count in row_counts:
|
|
for step in steps:
|
|
for aggr_func in aggr_funcs:
|
|
for group_col in group_cols:
|
|
for non_group_col in non_group_cols:
|
|
for run_time in xrange(case_run_time):
|
|
|
|
cmd_elements[7] = str(row_count)
|
|
cmd_elements[11] = str(step)
|
|
cmd_elements[13] = str(aggr_func)
|
|
cmd_elements[15] = str(group_col)
|
|
cmd_elements[17] = str(non_group_col)
|
|
cmd_elements[19] = out_file_name
|
|
|
|
param = ",".join([cmd_elements[7],
|
|
cmd_elements[11],
|
|
cmd_elements[13],
|
|
cmd_elements[15],
|
|
cmd_elements[17]]) + ","
|
|
|
|
prompt = "%s Running case %s / %s ... : %s " % (
|
|
time.strftime(ISOTIMEFORMAT, time.localtime()), case_count, total_case_count,
|
|
" ".join(cmd_elements))
|
|
print prompt
|
|
|
|
case_count += 1
|
|
|
|
sp.check_call("echo '#%s' >> %s" % (prompt, out_file_name), shell=True)
|
|
|
|
if group_col <= non_group_col:
|
|
sp.check_call("echo -n '%s' >> %s" % (param, out_file_name), shell=True)
|
|
sp.check_call(" ".join(cmd_elements), shell=True)
|
|
else:
|
|
sp.check_call("echo '#%s skipped' >> %s" % (param, out_file_name), shell=True)
|