@@ -1318,4 +1318,33 @@ public void testJoblessQueryPopulatesQueryStatistics() throws Exception {
13181318
13191319 verify (bigquery , Mockito .never ()).getJob (any (JobId .class ));
13201320 }
1321+
1322+ @ Test
1323+ public void testProcessArrowResultSetUsesBoundedQueueCapacity () throws SQLException {
1324+ BigQueryStatement defaultStmtSpy = Mockito .spy (bigQueryStatement );
1325+ BigQueryReadClient bigQueryReadClient = mock (BigQueryReadClient .class );
1326+ Schema schema = Schema .of (fieldList );
1327+ ReadSession readSession = ReadSession .getDefaultInstance ();
1328+ doReturn (bigQueryReadClient ).when (defaultStmtSpy ).getBigQueryReadClient ();
1329+ doReturn (readSession ).when (defaultStmtSpy ).getReadSession (any (CreateReadSessionRequest .class ));
1330+ Future <?> mockWorker = mock (Future .class );
1331+ @ SuppressWarnings ("unchecked" )
1332+ ArgumentCaptor <BlockingQueue <BigQueryArrowBatchWrapper >> defaultQueueCaptor =
1333+ ArgumentCaptor .forClass (BlockingQueue .class );
1334+ doReturn (mockWorker )
1335+ .when (defaultStmtSpy )
1336+ .populateArrowBufferedQueue (
1337+ any (ReadSession .class ), defaultQueueCaptor .capture (), any (BigQueryReadClient .class ));
1338+ doReturn (arrowSchema ).when (defaultStmtSpy ).getArrowSchema (any (ReadSession .class ));
1339+
1340+ TableResult result = mock (TableResult .class );
1341+ doReturn (schema ).when (result ).getSchema ();
1342+ doReturn (10L ).when (result ).getTotalRows ();
1343+ doReturn (TABLE_ID ).when (defaultStmtSpy ).getDestinationTable (any ());
1344+
1345+ defaultStmtSpy .processArrowResultSet (result , null );
1346+ assertEquals (
1347+ BigQueryStatement .DEFAULT_ARROW_BUFFER_SIZE ,
1348+ defaultQueueCaptor .getValue ().remainingCapacity ());
1349+ }
13211350}
0 commit comments