2121# Base directory of the script
2222BASE_DIR = os .path .dirname (os .path .abspath (__file__ ))
2323
24- def run_test (url , driver_jar , driver_class , query = None , generate_rows = 0 , generate_cols = 5 , no_output = True ):
24+ def run_test (url , driver_jar , driver_class , query = None , query_file = None , generate_rows = 0 , generate_cols = 5 , no_output = True ):
2525 # Base client folder is tools/client. Relative to tools/perf it is ../client.
2626 client_dir = os .path .join (os .path .dirname (BASE_DIR ), "client" )
2727
@@ -41,7 +41,9 @@ def run_test(url, driver_jar, driver_class, query=None, generate_rows=0, generat
4141
4242 if query :
4343 cmd .extend (["--query" , query ])
44- if generate_rows > 0 :
44+ elif query_file :
45+ cmd .extend (["--query-file" , query_file ])
46+ elif generate_rows > 0 :
4547 cmd .extend (["--generate-rows" , str (generate_rows )])
4648 cmd .extend (["--generate-cols" , str (generate_cols )])
4749 if no_output :
@@ -227,26 +229,38 @@ def main():
227229 parser .add_argument ("--class1" , default = "com.google.cloud.bigquery.jdbc.BigQueryDriver" , help = "Class name for first driver" )
228230 parser .add_argument ("--class2" , default = "com.google.cloud.bigquery.jdbc.BigQueryDriver" , help = "Class name for second driver" )
229231 parser .add_argument ("-n" , "--iterations" , type = int , default = 5 , help = "Number of iterations to run (default 5)" )
232+ parser .add_argument ("--query" , help = "Query to run" )
233+ parser .add_argument ("--query-file" , help = "Path to a SQL file containing the query to run" )
230234 parser .add_argument ("--generate-rows" , type = int , default = 0 , help = "Number of rows to generate" )
231235 parser .add_argument ("--generate-cols" , type = int , default = 5 , help = "Number of columns to generate" )
232- parser .add_argument ("--query" , help = "Query to run (if not using generated data)" )
233236 parser .add_argument ("--output-md" , help = "Append markdown table to this file containing the results" )
234237 parser .add_argument ("--filter-metrics" , help = "Comma-separated list of metrics to include in markdown tables" )
235238
236239 args = parser .parse_args ()
237240
241+ query = args .query
242+ query_file = args .query_file
243+ generate_rows = args .generate_rows
244+ generate_cols = args .generate_cols
245+
246+ if not query and not query_file and generate_rows == 0 :
247+ generate_rows = 1000
248+ generate_cols = 5
249+
238250 print ("=" * 70 )
239251 print (f"JDBC Performance Runner" )
240252 print (f"URL : { args .url } " )
241253 print (f"Iterations : { args .iterations } " )
242254 print (f"Jar 1 : { args .jar1 } ({ args .class1 } )" )
243255 if args .jar2 :
244256 print (f"Jar 2 : { args .jar2 } ({ args .class2 } )" )
245- if args .generate_rows > 0 :
246- print (f"Generate Rows: { args .generate_rows } " )
247- print (f"Generate Cols: { args .generate_cols } " )
248- elif args .query :
249- print (f"Query : { args .query } " )
257+ if query :
258+ print (f"Query : { query } " )
259+ elif query_file :
260+ print (f"Query File : { query_file } " )
261+ elif generate_rows > 0 :
262+ print (f"Generate Rows: { generate_rows } " )
263+ print (f"Generate Cols: { generate_cols } " )
250264 print ("=" * 70 )
251265
252266 driver_results = {}
@@ -270,9 +284,10 @@ def main():
270284 url = args .url ,
271285 driver_jar = driver_jar ,
272286 driver_class = driver_class ,
273- query = args .query ,
274- generate_rows = args .generate_rows ,
275- generate_cols = args .generate_cols ,
287+ query = query ,
288+ query_file = query_file ,
289+ generate_rows = generate_rows ,
290+ generate_cols = generate_cols ,
276291 no_output = True
277292 )
278293 if res :
@@ -284,7 +299,7 @@ def main():
284299 base_label = base_label ,
285300 new_label = new_label ,
286301 diff_label = diff_label ,
287- spec_name = f" Rows: { args . generate_rows } , Cols: { args . generate_cols } " if args . generate_rows > 0 else args . query ,
302+ spec_name = query if query else ( f"File: { query_file } " if query_file else f" Rows: { generate_rows } , Cols: { generate_cols } ") ,
288303 output_md = args .output_md ,
289304 filter_metrics = args .filter_metrics
290305 )
0 commit comments