@@ -1270,4 +1270,52 @@ public void testEnableTimestampPicosPropagation() {
12701270 BigQueryStatement statement = new BigQueryStatement (bigQueryConnection );
12711271 assertTrue (statement .isEnableTimestampPicos ());
12721272 }
1273+
1274+ @ Test
1275+ public void testJoblessQueryPopulatesQueryStatistics () throws Exception {
1276+ doReturn (true ).when (bigQueryConnection ).getUseStatelessQueryMode ();
1277+ BigQueryStatement joblessStatement = new BigQueryStatement (bigQueryConnection );
1278+
1279+ Schema expectedSchema = Schema .of (fieldList );
1280+ SessionInfo expectedSessionInfo = mock (SessionInfo .class );
1281+ doReturn ("session_abc" ).when (expectedSessionInfo ).getSessionId ();
1282+ TableResult tableResultMock = mock (TableResult .class );
1283+ doReturn ("stateless-query-id" ).when (tableResultMock ).getQueryId ();
1284+ doReturn (null ).when (tableResultMock ).getJobId ();
1285+ doReturn (expectedSchema ).when (tableResultMock ).getSchema ();
1286+ doReturn (1L ).when (tableResultMock ).getTotalRows ();
1287+ doReturn (ImmutableList .<FieldValueList >of ()).when (tableResultMock ).getValues ();
1288+ doReturn (StatementType .SELECT ).when (tableResultMock ).getStatementType ();
1289+ QueryStatistics expectedStats = mock (QueryStatistics .class );
1290+ doReturn (10485760L ).when (expectedStats ).getTotalBytesProcessed ();
1291+ doReturn (10485760L ).when (expectedStats ).getTotalBytesBilled ();
1292+ doReturn (320L ).when (expectedStats ).getTotalSlotMs ();
1293+ doReturn (false ).when (expectedStats ).getCacheHit ();
1294+ doReturn (StatementType .SELECT ).when (expectedStats ).getStatementType ();
1295+ doReturn (expectedSessionInfo ).when (expectedStats ).getSessionInfo ();
1296+ doReturn (expectedSchema ).when (expectedStats ).getSchema ();
1297+ doReturn (expectedStats ).when (tableResultMock ).extractQueryStatistics ();
1298+
1299+ doReturn (tableResultMock )
1300+ .when (bigquery )
1301+ .queryWithTimeout (any (QueryJobConfiguration .class ), any (), any ());
1302+
1303+ ResultSet rs = joblessStatement .executeQuery ("SELECT * FROM test" );
1304+ assertNotNull (rs );
1305+ BigQueryResultSet bqRs = rs .unwrap (BigQueryResultSet .class );
1306+ assertNull (bqRs .getJobId ());
1307+ assertEquals ("stateless-query-id" , bqRs .getQueryId ());
1308+
1309+ QueryStatistics stats = bqRs .getQueryStatistics ();
1310+ assertNotNull (stats );
1311+ assertEquals (10485760L , stats .getTotalBytesProcessed ().longValue ());
1312+ assertEquals (10485760L , stats .getTotalBytesBilled ().longValue ());
1313+ assertEquals (320L , stats .getTotalSlotMs ().longValue ());
1314+ assertFalse (stats .getCacheHit ());
1315+ assertEquals (StatementType .SELECT , stats .getStatementType ());
1316+ assertEquals (expectedSessionInfo , stats .getSessionInfo ());
1317+ assertEquals (expectedSchema , stats .getSchema ());
1318+
1319+ verify (bigquery , Mockito .never ()).getJob (any (JobId .class ));
1320+ }
12731321}
0 commit comments