private void checkNotDryRun(String op) { checkNotDryRun(getConfiguration(), op); }
private QueryResponse waitForQueryResults( RetrySettings waitSettings, final QueryResultsOption... resultsOptions) throws InterruptedException { if (getConfiguration().getType() != Type.QUERY) { throw new UnsupportedOperationException( "Waiting for query results is supported only for " + Type.QUERY + " jobs"); } try { return RetryHelper.poll( new Callable<QueryResponse>() { @Override public QueryResponse call() { return bigquery.getQueryResults(getJobId(), resultsOptions); } }, waitSettings, new BasicResultRetryAlgorithm<QueryResponse>() { @Override public boolean shouldRetry(Throwable prevThrowable, QueryResponse prevResponse) { return prevResponse != null && !prevResponse.getCompleted(); } }, options.getClock()); } catch (ExecutionException e) { throw BigQueryException.translateAndThrow(e); } }
throws InterruptedException, JobException { checkNotDryRun("getQueryResults"); if (getConfiguration().getType() != Type.QUERY) { throw new UnsupportedOperationException( "Getting query results is supported only for " + Type.QUERY + " jobs"); TableId table = ((QueryJobConfiguration) getConfiguration()).getDestinationTable(); return bigquery.listTableData( table, response.getSchema(), listOptions.toArray(new TableDataListOption[0]));
checkNotDryRun("waitFor"); Object completedJobResponse; if (getConfiguration().getType() == Type.QUERY) { completedJobResponse = waitForQueryResults(
@Test public void testQueryJobWithDryRun() throws InterruptedException, TimeoutException { String tableName = "test_query_job_table"; String query = "SELECT TimestampField, StringField, BooleanField FROM " + TABLE_ID.getTable(); TableId destinationTable = TableId.of(DATASET, tableName); QueryJobConfiguration configuration = QueryJobConfiguration.newBuilder(query) .setDefaultDataset(DatasetId.of(DATASET)) .setDestinationTable(destinationTable) .setDryRun(true) .build(); Job remoteJob = bigquery.create(JobInfo.of(configuration)); assertNull(remoteJob.getJobId().getJob()); assertEquals(DONE, remoteJob.getStatus().getState()); assertNotNull(remoteJob.getConfiguration()); }
@Test public void testBuilder() { initializeExpectedJob(2); replay(bigquery); Job builtJob = new Job.Builder(serviceMockReturnsOptions, COPY_CONFIGURATION) .setJobId(JOB_ID) .setStatistics(COPY_JOB_STATISTICS) .setJobId(JOB_ID) .setEtag(ETAG) .setGeneratedId(GENERATED_ID) .setSelfLink(SELF_LINK) .setUserEmail(EMAIL) .setStatus(JOB_STATUS) .build(); assertEquals(ETAG, builtJob.getEtag()); assertEquals(GENERATED_ID, builtJob.getGeneratedId()); assertEquals(SELF_LINK, builtJob.getSelfLink()); assertEquals(EMAIL, builtJob.getUserEmail()); assertEquals(JOB_ID, builtJob.getJobId()); assertEquals(JOB_STATUS, builtJob.getStatus()); assertEquals(COPY_CONFIGURATION, builtJob.getConfiguration()); assertEquals(COPY_JOB_STATISTICS, builtJob.getStatistics()); assertSame(serviceMockReturnsOptions, builtJob.getBigQuery()); }
assertEquals(1L, statistics.getInputFiles().longValue()); assertEquals(2L, statistics.getOutputRows().longValue()); LoadJobConfiguration jobConfiguration = job.getConfiguration(); assertEquals(TABLE_SCHEMA, jobConfiguration.getSchema()); assertNull(jobConfiguration.getSourceUris());
Job remoteJob = bigquery.getJob(createdJob.getJobId()); assertEquals(createdJob.getJobId(), remoteJob.getJobId()); CopyJobConfiguration createdConfiguration = createdJob.getConfiguration(); CopyJobConfiguration remoteConfiguration = remoteJob.getConfiguration(); assertEquals(createdConfiguration.getSourceTables(), remoteConfiguration.getSourceTables()); assertEquals(
CopyJobConfiguration configuration = CopyJobConfiguration.of(destinationTable, sourceTable); Job createdJob = bigquery.create(JobInfo.of(configuration), JobOption.fields(JobField.ETAG)); CopyJobConfiguration createdConfiguration = createdJob.getConfiguration(); assertNotNull(createdJob.getJobId()); assertNotNull(createdConfiguration.getSourceTables()); assertNull(createdJob.getUserEmail()); Job remoteJob = bigquery.getJob(createdJob.getJobId(), JobOption.fields(JobField.ETAG)); CopyJobConfiguration remoteConfiguration = remoteJob.getConfiguration(); assertEquals(createdJob.getJobId(), remoteJob.getJobId()); assertEquals(createdConfiguration.getSourceTables(), remoteConfiguration.getSourceTables());
private void checkNotDryRun(String op) { checkNotDryRun(getConfiguration(), op); }
private QueryResponse waitForQueryResults( RetrySettings waitSettings, final QueryResultsOption... resultsOptions) throws InterruptedException { if (getConfiguration().getType() != Type.QUERY) { throw new UnsupportedOperationException( "Waiting for query results is supported only for " + Type.QUERY + " jobs"); } try { return RetryHelper.poll( new Callable<QueryResponse>() { @Override public QueryResponse call() { return bigquery.getQueryResults(getJobId(), resultsOptions); } }, waitSettings, new BasicResultRetryAlgorithm<QueryResponse>() { @Override public boolean shouldRetry(Throwable prevThrowable, QueryResponse prevResponse) { return prevResponse != null && !prevResponse.getCompleted(); } }, options.getClock()); } catch (ExecutionException e) { throw BigQueryException.translateAndThrow(e); } }
throws InterruptedException, JobException { checkNotDryRun("getQueryResults"); if (getConfiguration().getType() != Type.QUERY) { throw new UnsupportedOperationException( "Getting query results is supported only for " + Type.QUERY + " jobs"); TableId table = ((QueryJobConfiguration) getConfiguration()).getDestinationTable(); return bigquery.listTableData( table, response.getSchema(), listOptions.toArray(new TableDataListOption[0]));
checkNotDryRun("waitFor"); Object completedJobResponse; if (getConfiguration().getType() == Type.QUERY) { completedJobResponse = waitForQueryResults(