@@ -65,11 +65,10 @@ def run(argv, out, err, timeout=30*60, hard_timeout=5):
6565
6666
6767def main ():
68-
6968 parser = argparse .ArgumentParser ()
7069 parser .add_argument ('--query-dir' , type = str , default = 'q/scalar' )
7170 parser .add_argument ('--bindings' , type = str , default = 'bindings.json' )
72- parser .add_argument ('--result-dir' , type = str , default = "result-{:%Y%m%dT%H%M%S}" .format (datetime .datetime .now ()))
71+ parser .add_argument ('--result-dir' , type = Path , default = "result-{:%Y%m%dT%H%M%S}" .format (datetime .datetime .now ()))
7372 parser .add_argument ('--timeout' , type = int , default = 30 * 60 )
7473 parser .add_argument ('--perf' , action = 'store_true' )
7574 parser .add_argument ('--arc-path' , type = str , default = '{}/arcadia' .format (os .environ ['HOME' ]))
@@ -81,9 +80,8 @@ def main():
8180 outdir = args .result_dir
8281 assert len (argv )
8382 querydir = Path (qdir )
84- os .makedirs (outdir + '/' + qdir , exist_ok = True )
85- with open (outdir + '/' + qdir + "/summary.tsv" , "w" ) as outf , \
86- open (outdir + '/' + qdir + "/summary.json" , "w" ) as outj :
83+ with open (outdir / "summary.tsv" , "w" ) as outf , \
84+ open (outdir / "summary.json" , "w" ) as outj :
8785 print (' ' .join (argv + ['-p' , qdir , '--bindings-file' , bindings ]), file = outf )
8886 print (json .dumps ({
8987 'cmdline' : argv ,
@@ -92,8 +90,9 @@ def main():
9290 'version' : 100
9391 }), file = outj )
9492 for query in sorted (querydir .glob ('**/*.sql' ), key = lambda x : tuple (map (lambda y : int (y ) if re .match (RE_DIGITS , y ) else y , re .split (RE_DIGITS , str (x ))))):
95- q = str (query )
96- name = outdir + '/' + q
93+ q = str (query .stem )
94+ print (f"{ q } " , end = "" , flush = True )
95+ name = str (outdir / q )
9796 if len (args .include_q ):
9897 include = False
9998 for r in args .include_q :
@@ -112,6 +111,7 @@ def main():
112111 continue
113112 print (q , end = '\t ' , file = outf )
114113 outname = name + '-result.yson'
114+ print ("." , end = "" , flush = True )
115115 exitcode , rusage , elapsed , iostat = run (
116116 argv + [
117117 '--result-file' , outname ,
@@ -120,7 +120,7 @@ def main():
120120 '--err-file' , name + '-err.txt' ,
121121 '--expr-file' , name + '-expr.txt' ,
122122 '--stat' , name + '-stat.yson' ,
123- '-p' , q
123+ '-p' , str ( query )
124124 ],
125125 name + '-stdout.txt' ,
126126 name + '-stderr.txt' ,
@@ -164,25 +164,27 @@ def main():
164164 }
165165 }), file = outj )
166166 outj .flush ()
167+ print ("." , end = "" , flush = True )
167168 if args .perf :
168169 exitcode , rusage , elapsed , iostat = run (
169- ['{}/ya' . format ( args . arc_path ), 'tool' , ' perf' , 'record' , '-F250' , '-g' , '--call-graph' , 'dwarf' , '-o' , '{}/perf.data' .format (outdir ), '--' ] +
170+ ['/usr/bin/ perf' , 'record' , '-F250' , '-g' , '--call-graph' , 'dwarf' , '-o' , '{}/perf.data' .format (outdir ), '--' ] +
170171 argv + [
171172 '--result-file' , '/dev/null' ,
172173 '--bindings-file' , bindings ,
173174 '--plan-file' , '/dev/null' ,
174175 '--err-file' , '/dev/null' ,
175176 '--expr-file' , '/dev/null' ,
176- '-p' , q
177+ '-p' , str ( query )
177178 ],
178179 name + '-stdout-perf.txt' ,
179180 name + '-stderr-perf.txt' ,
180181 timeout = args .timeout )
181182 os .system ('''
182- {0}/ya tool perf script -i {2}/perf.data --header |
183+ /usr/bin/ perf script -i {2}/perf.data --header |
183184 {0}/contrib/tools/flame-graph/stackcollapse-perf.pl |
184185 {0}/contrib/tools/flame-graph/flamegraph.pl > {1}.svg
185186 ''' .format (args .arc_path , name , outdir ))
187+ print ("." , flush = True )
186188
187189
188190if __name__ == "__main__" :
0 commit comments