|
32 | 32 | import static org.mockito.ArgumentMatchers.nullable; |
33 | 33 | import static org.mockito.Mockito.doReturn; |
34 | 34 | import static org.mockito.Mockito.mock; |
| 35 | +import static org.mockito.Mockito.never; |
35 | 36 | import static org.mockito.Mockito.times; |
36 | 37 | import static org.mockito.Mockito.verify; |
37 | 38 | import static org.mockito.Mockito.when; |
@@ -2393,6 +2394,56 @@ void testFastQueryRequestCompleted() throws InterruptedException, IOException { |
2393 | 2394 | .queryRpcSkipExceptionTranslation(eq(PROJECT), requestPbCapture.capture()); |
2394 | 2395 | } |
2395 | 2396 |
|
| 2397 | + @Test |
| 2398 | + void testQueryRequestRequiredJobCreationCompleted() throws InterruptedException, IOException { |
| 2399 | + JobId queryJob = JobId.of(PROJECT, JOB); |
| 2400 | + com.google.api.services.bigquery.model.QueryResponse queryResponsePb = |
| 2401 | + new com.google.api.services.bigquery.model.QueryResponse() |
| 2402 | + .setCacheHit(false) |
| 2403 | + .setJobComplete(true) |
| 2404 | + .setKind("bigquery#queryResponse") |
| 2405 | + .setPageToken(null) |
| 2406 | + .setRows(ImmutableList.of(TABLE_ROW)) |
| 2407 | + .setSchema(TABLE_SCHEMA.toPb()) |
| 2408 | + .setTotalBytesProcessed(42L) |
| 2409 | + .setTotalRows(BigInteger.valueOf(1L)) |
| 2410 | + .setJobReference(queryJob.toPb()); |
| 2411 | + |
| 2412 | + QueryJobConfiguration config = |
| 2413 | + QUERY_JOB_CONFIGURATION_FOR_QUERY.toBuilder() |
| 2414 | + .setJobCreationMode(QueryJobConfiguration.JobCreationMode.JOB_CREATION_REQUIRED) |
| 2415 | + .build(); |
| 2416 | + |
| 2417 | + when(bigqueryRpcMock.queryRpcSkipExceptionTranslation(eq(PROJECT), requestPbCapture.capture())) |
| 2418 | + .thenReturn(queryResponsePb); |
| 2419 | + |
| 2420 | + bigquery = options.getService(); |
| 2421 | + TableResult result = bigquery.query(config); |
| 2422 | + assertNull(result.getNextPage()); |
| 2423 | + assertNull(result.getNextPageToken()); |
| 2424 | + assertFalse(result.hasNextPage()); |
| 2425 | + assertThat(result.getSchema()).isEqualTo(TABLE_SCHEMA); |
| 2426 | + assertThat(result.getTotalRows()).isEqualTo(1); |
| 2427 | + assertThat(result.getJobId()).isEqualTo(queryJob); |
| 2428 | + for (FieldValueList row : result.getValues()) { |
| 2429 | + assertThat(row.get(0).getBooleanValue()).isFalse(); |
| 2430 | + assertThat(row.get(1).getLongValue()).isEqualTo(1); |
| 2431 | + } |
| 2432 | + |
| 2433 | + QueryRequest requestPb = requestPbCapture.getValue(); |
| 2434 | + assertEquals(config.getQuery(), requestPb.getQuery()); |
| 2435 | + assertEquals( |
| 2436 | + config.getDefaultDataset().getDataset(), requestPb.getDefaultDataset().getDatasetId()); |
| 2437 | + assertEquals(config.useQueryCache(), requestPb.getUseQueryCache()); |
| 2438 | + assertNull(requestPb.getLocation()); |
| 2439 | + |
| 2440 | + verify(bigqueryRpcMock) |
| 2441 | + .queryRpcSkipExceptionTranslation(eq(PROJECT), requestPbCapture.capture()); |
| 2442 | + verify(bigqueryRpcMock, never()) |
| 2443 | + .createSkipExceptionTranslation( |
| 2444 | + any(com.google.api.services.bigquery.model.Job.class), any()); |
| 2445 | + } |
| 2446 | + |
2396 | 2447 | @Test |
2397 | 2448 | void testFastQueryRequestCompletedWithLocation() throws InterruptedException, IOException { |
2398 | 2449 | com.google.api.services.bigquery.model.QueryResponse queryResponsePb = |
|
0 commit comments