1919const async = require ( 'async' ) ;
2020const fs = require ( 'fs' ) ;
2121const BigQuery = require ( '../src/index.js' ) ;
22+ const env = require ( '../../../system-test/env.js' ) ;
2223
2324if ( process . argv . length < 3 ) {
24- throw `need query file; usage: \
25- '${ process . argv [ 0 ] } ${ process . argv [ 1 ] } <queries.json>'` ;
25+ throw new Error ( `need query file; ` +
26+ `usage: '${ process . argv [ 0 ] } ${ process . argv [ 1 ] } <queries.json>'`) ;
2627}
28+
2729var queryJson = fs . readFileSync ( process . argv [ 2 ] ) ;
2830var queries = JSON . parse ( queryJson ) ;
29- var client = new BigQuery ( ) ;
31+ var client = new BigQuery ( env ) ;
3032
3133var doQuery = function ( queryTxt , callback ) {
3234 var startMilli = new Date ( ) . getTime ( ) ;
@@ -39,28 +41,39 @@ var doQuery = function(queryTxt, callback) {
3941 useLegacySql : false
4042 } ;
4143
42- client . createQueryStream ( query )
43- . on ( 'error' , function ( err ) {
44- callback ( err ) ;
45- } )
46- . on ( 'data' , function ( row ) {
47- if ( numRows === 0 ) {
48- numCols = Object . keys ( row ) . length ;
49- timeFirstByteMilli = new Date ( ) . getTime ( ) - startMilli ;
50- } else if ( numCols !== Object . keys ( row ) . length ) {
51- this . end ( ) ;
52- callback ( `query "${ queryTxt } ": wrong number of columns, \
53- want ${ numCols } got ${ Object . keys ( row ) . length } ` ) ;
54- }
55- numRows ++ ;
56- } )
57- . on ( 'end' , function ( ) {
58- var timeTotalMilli = new Date ( ) . getTime ( ) - startMilli ;
59- console . log ( `query ${ queryTxt } : got ${ numRows } rows, ${ numCols } cols, \
60- first byte ${ timeFirstByteMilli / 1000 } sec, \
61- total ${ timeTotalMilli / 1000 } sec` ) ;
62- callback ( null ) ;
63- } ) ;
44+ client
45+ . createQueryStream ( query )
46+ . on ( 'error' , callback )
47+ . on ( 'data' , function ( row ) {
48+ if ( numRows === 0 ) {
49+ numCols = Object . keys ( row ) . length ;
50+ timeFirstByteMilli = new Date ( ) . getTime ( ) - startMilli ;
51+ } else if ( numCols !== Object . keys ( row ) . length ) {
52+ this . end ( ) ;
53+
54+ var receivedCols = Object . keys ( row ) . length ;
55+ var error = new Error (
56+ `query "${ queryTxt } ": ` +
57+ `wrong number of columns, want ${ numCols } got ${ receivedCols } `
58+ ) ;
59+
60+ callback ( error ) ;
61+ }
62+ numRows ++ ;
63+ } )
64+ . on ( 'end' , function ( ) {
65+ var timeTotalMilli = new Date ( ) . getTime ( ) - startMilli ;
66+
67+ console . log (
68+ `query ${ queryTxt } :` ,
69+ `got ${ numRows } rows,` ,
70+ `${ numCols } cols,` ,
71+ `first byte ${ timeFirstByteMilli / 1000 } sec,` ,
72+ `total ${ timeTotalMilli / 1000 } sec`
73+ ) ;
74+
75+ callback ( null ) ;
76+ } ) ;
6477} ;
6578
6679async . eachSeries ( queries , doQuery , err => {
0 commit comments