From 91a6a55e0a6677f019648976da4b8188b57ce45d Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Tue, 23 Jun 2026 23:39:12 +0000 Subject: [PATCH 1/4] chore(bigquery-jdbc): update integration tests to work in dockerized proxy environment --- .../bigquery/jdbc/BigQueryConnection.java | 2 +- .../google/cloud/bigquery/jdbc/it/ITBase.java | 18 ++++++++++++------ .../bigquery/jdbc/it/ITBigQueryJDBCTest.java | 2 -- .../cloud/bigquery/jdbc/it/ITDriverTest.java | 10 +++------- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java index 1146f4d46d95..0ed48e4d277a 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java @@ -418,7 +418,7 @@ BigQueryWriteClient getBigQueryWriteClient() { return this.bigQueryWriteClient; } - BigQuery getBigQuery() { + public BigQuery getBigQuery() { return this.bigQuery; } diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITBase.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITBase.java index 87446355d4ca..a9c4603498a5 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITBase.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITBase.java @@ -22,9 +22,11 @@ import com.google.cloud.bigquery.BigQuery; import com.google.cloud.bigquery.BigQueryOptions; import com.google.cloud.bigquery.QueryJobConfiguration; +import com.google.cloud.bigquery.jdbc.BigQueryConnection; import com.google.cloud.bigquery.jdbc.BigQueryJdbcBaseTest; import com.google.cloud.bigquery.jdbc.utils.TestUtilities; import java.sql.Connection; +import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; @@ -153,7 +155,6 @@ public static synchronized String getSharedDataset2() { } private static void createSharedResources(String dataset) throws InterruptedException { - BigQuery bigQuery = BigQueryOptions.getDefaultInstance().getService(); String project = DEFAULT_CATALOG; String script = String.format(CREATE_RESOURCES_SCRIPT, project, dataset); bigQuery.query(QueryJobConfiguration.of(script)); @@ -165,7 +166,6 @@ private static void registerShutdownHook(final String dataset) { new Thread( () -> { try { - BigQuery bigQuery = BigQueryOptions.getDefaultInstance().getService(); bigQuery.query( QueryJobConfiguration.of( String.format(dropSchema, DEFAULT_CATALOG, dataset))); @@ -185,6 +185,16 @@ public static String getBaseConnectionUrl() { public static final String connectionUrl = getBaseConnectionUrl() + "ProjectId=" + DEFAULT_CATALOG + ";OAuthType=3;Timeout=3600;"; + public static final BigQuery bigQuery; + static { + BigQuery bq = null; + try{ + bq = ((DriverManager.getConnection(connectionUrl)).unwrap(BigQueryConnection.class)).getBigQuery(); + } + catch(SQLException ex){ + } + bigQuery = bq; + } public static final String createDatasetQuery = "CREATE SCHEMA IF NOT EXISTS `%s.%s` OPTIONS(default_table_expiration_days = 5)"; @@ -258,7 +268,6 @@ public static String getBaseConnectionUrl() { public static void setUpProcedure(String dataset, String table) throws InterruptedException { { - BigQuery bigQuery = BigQueryOptions.getDefaultInstance().getService(); bigQuery.query( QueryJobConfiguration.of( String.format( @@ -267,13 +276,11 @@ public static void setUpProcedure(String dataset, String table) throws Interrupt } public static void setUpDataset(String dataset) throws InterruptedException { - BigQuery bigQuery = BigQueryOptions.getDefaultInstance().getService(); bigQuery.query( QueryJobConfiguration.of(String.format(createDatasetQuery, DEFAULT_CATALOG, dataset))); } public static void setUpTable(String dataset, String table) throws InterruptedException { - BigQuery bigQuery = BigQueryOptions.getDefaultInstance().getService(); bigQuery.query( QueryJobConfiguration.of(String.format(createTableQuery, DEFAULT_CATALOG, dataset, table))); bigQuery.query( @@ -283,7 +290,6 @@ public static void setUpTable(String dataset, String table) throws InterruptedEx } public static void cleanUp(String dataset) throws InterruptedException { - BigQuery bigQuery = BigQueryOptions.getDefaultInstance().getService(); bigQuery.query(QueryJobConfiguration.of(String.format(dropSchema, DEFAULT_CATALOG, dataset))); } diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITBigQueryJDBCTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITBigQueryJDBCTest.java index 44a8160f726d..faab9a1892d9 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITBigQueryJDBCTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITBigQueryJDBCTest.java @@ -74,7 +74,6 @@ public class ITBigQueryJDBCTest extends ITBase { private static String DATASET; private static final Object EXCEPTION_REPLACEMENT = "EXCEPTION-WAS-RAISED"; static Connection bigQueryConnection; - static BigQuery bigQuery; static Statement bigQueryStatement; static Connection bigQueryConnectionNoReadApi; static Statement bigQueryStatementNoReadApi; @@ -89,7 +88,6 @@ public static void beforeClass() throws SQLException { noReadApi.setProperty("EnableHighThroughputAPI", "0"); bigQueryConnectionNoReadApi = DriverManager.getConnection(connection_uri, noReadApi); bigQueryStatementNoReadApi = bigQueryConnectionNoReadApi.createStatement(); - bigQuery = BigQueryOptions.newBuilder().build().getService(); } @AfterAll diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDriverTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDriverTest.java index c52e47b293b8..07f8ff202ac6 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDriverTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDriverTest.java @@ -36,7 +36,7 @@ import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -public class ITDriverTest { +public class ITDriverTest extends ITBase { private static final String DEFAULT_CATALOG = ServiceOptions.getDefaultProjectId(); static Random random = new Random(); @@ -96,14 +96,11 @@ public void testDriverLocation() throws SQLException, InterruptedException { String datasetUS = "JDBC_DRIVER_US_TEST_DATASET" + random.nextInt(999); String tableNameUS = "JDBC_DRIVER_US_TEST_TABLE" + randomNumber; - String OAUTH_TYPE = "3"; - String CONNECTION_URL = - "jdbc:bigquery://https://bigquery.googleapis.com/bigquery/v2/:443;ProjectId=%s;OAuthType=%s;LOCATION=%s;"; + String CONNECTION_URL = ITBase.connectionUrl + "LOCATION=us-east5;"; // US Connection Connection connectionUS = - DriverManager.getConnection( - String.format(CONNECTION_URL, DEFAULT_CATALOG, OAUTH_TYPE, "us-east5")); + DriverManager.getConnection(CONNECTION_URL); Statement statementUS = connectionUS.createStatement(); statementUS.execute(String.format(createDataset, DEFAULT_CATALOG, datasetUS)); statementUS.execute(String.format(createQuery, DEFAULT_CATALOG, datasetUS, tableNameUS)); @@ -114,7 +111,6 @@ public void testDriverLocation() throws SQLException, InterruptedException { ResultSet res = statementUS.getResultSet(); assertTrue(res.next()); - BigQuery bigQuery = BigQueryOptions.getDefaultInstance().getService(); Dataset retrievedDataset = bigQuery.getDataset(DatasetId.of(DEFAULT_CATALOG, datasetUS)); assertEquals("us-east5", retrievedDataset.getLocation()); ITBase.cleanUp(datasetUS); From 5f8e3143234d1e5484cdcaf085075de5fcb0f4e3 Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Wed, 1 Jul 2026 00:23:16 +0000 Subject: [PATCH 2/4] fix all tests in proxy container --- .../com/google/cloud/bigquery/jdbc/it/ITAuthTests.java | 5 ++--- .../com/google/cloud/bigquery/jdbc/it/ITStatementTest.java | 7 ++----- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITAuthTests.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITAuthTests.java index 1d6bac0cd257..6698b08d5c1c 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITAuthTests.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITAuthTests.java @@ -300,10 +300,9 @@ public void testValidExternalAccountAuthenticationRawJson() throws SQLException public void testValidPreGeneratedAccessTokenAuthentication(String scope, boolean isReadOnly) throws Exception { final JsonObject authJson = getAuthJson(); - InputStream stream = - new ByteArrayInputStream(authJson.toString().getBytes(StandardCharsets.UTF_8)); + GoogleCredentials credentials = - GoogleCredentials.fromStream(stream).createScoped(Arrays.asList(scope)); + ((GoogleCredentials)bigQuery.getOptions().getCredentials()).createScoped(Arrays.asList(scope)); credentials.refresh(); String accessToken = credentials.getAccessToken().getTokenValue(); diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITStatementTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITStatementTest.java index addbbb3f0b27..c6a6abf72996 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITStatementTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITStatementTest.java @@ -378,21 +378,18 @@ public void testRangeSelectDataset() throws SQLException { @Test public void testTemporaryDatasetLocation() throws SQLException, InterruptedException { - String projectId = DEFAULT_CATALOG; String location = "europe-west3"; String randomSuffix = String.valueOf(100 + new Random().nextInt(900)); String tempDatasetName = "jdbc_temp_dataset_" + System.currentTimeMillis() + "_" + randomSuffix; String customConnectionUrl = - "jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;ProjectId=" - + projectId - + ";OAuthType=3;Timeout=3600;Location=" + ITBase.connectionUrl + + ";Location=" + location + ";AllowLargeResults=true;LargeResultDataset=" + tempDatasetName + ";"; - BigQuery bigQuery = BigQueryOptions.getDefaultInstance().getService(); try (Connection connection = DriverManager.getConnection(customConnectionUrl)) { Statement statement = connection.createStatement(); String query = "SELECT 1 as val;"; From 38f7dada2e19a4343b525427d86c41278b59e19d Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Wed, 1 Jul 2026 06:26:31 +0000 Subject: [PATCH 3/4] Lint + move getBigQuery to basic package --- .../cloud/bigquery/jdbc/BigQueryConnection.java | 2 +- .../cloud/bigquery/jdbc/BigQueryJdbcBaseTest.java | 13 +++++++++++++ .../google/cloud/bigquery/jdbc/it/ITAuthTests.java | 7 +++---- .../com/google/cloud/bigquery/jdbc/it/ITBase.java | 14 +------------- .../cloud/bigquery/jdbc/it/ITBigQueryJDBCTest.java | 2 -- .../cloud/bigquery/jdbc/it/ITDriverTest.java | 5 +---- .../cloud/bigquery/jdbc/it/ITStatementTest.java | 5 ++--- 7 files changed, 21 insertions(+), 27 deletions(-) diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java index a1104f2e97e3..218225ede208 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java @@ -431,7 +431,7 @@ BigQueryWriteClient getBigQueryWriteClient() { return this.bigQueryWriteClient; } - public BigQuery getBigQuery() { + BigQuery getBigQuery() { return this.bigQuery; } diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcBaseTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcBaseTest.java index d9b1ce473324..8be466e8178c 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcBaseTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcBaseTest.java @@ -16,8 +16,11 @@ package com.google.cloud.bigquery.jdbc; +import com.google.cloud.bigquery.BigQuery; import com.google.cloud.bigquery.jdbc.utils.TestUtilities; import com.google.cloud.bigquery.jdbc.utils.URIBuilder; +import java.sql.DriverManager; +import java.sql.SQLException; public class BigQueryJdbcBaseTest { @@ -43,6 +46,16 @@ public class BigQueryJdbcBaseTest { + // "-----END PRIVATE KEY-----"; + protected static BigQuery getBigQuery(String connectionUrl) { + try { + return DriverManager.getConnection(connectionUrl) + .unwrap(BigQueryConnection.class) + .getBigQuery(); + } catch (SQLException e) { + throw new RuntimeException("Failed to initialize BigQuery client", e); + } + } + protected static URIBuilder getBaseUri() { return new URIBuilder(TestUtilities.getBaseConnectionUrl()); } diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITAuthTests.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITAuthTests.java index 6698b08d5c1c..a95a05229f9b 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITAuthTests.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITAuthTests.java @@ -25,12 +25,10 @@ import com.google.cloud.ServiceOptions; import com.google.gson.JsonObject; import com.google.gson.JsonParser; -import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.sql.Connection; @@ -300,9 +298,10 @@ public void testValidExternalAccountAuthenticationRawJson() throws SQLException public void testValidPreGeneratedAccessTokenAuthentication(String scope, boolean isReadOnly) throws Exception { final JsonObject authJson = getAuthJson(); - + GoogleCredentials credentials = - ((GoogleCredentials)bigQuery.getOptions().getCredentials()).createScoped(Arrays.asList(scope)); + ((GoogleCredentials) bigQuery.getOptions().getCredentials()) + .createScoped(Arrays.asList(scope)); credentials.refresh(); String accessToken = credentials.getAccessToken().getTokenValue(); diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITBase.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITBase.java index e2287fa0c174..13ff9ed0b84c 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITBase.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITBase.java @@ -20,13 +20,10 @@ import com.google.cloud.ServiceOptions; import com.google.cloud.bigquery.BigQuery; -import com.google.cloud.bigquery.BigQueryOptions; import com.google.cloud.bigquery.QueryJobConfiguration; -import com.google.cloud.bigquery.jdbc.BigQueryConnection; import com.google.cloud.bigquery.jdbc.BigQueryJdbcBaseTest; import com.google.cloud.bigquery.jdbc.utils.TestUtilities; import java.sql.Connection; -import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; @@ -190,16 +187,7 @@ public static String getBaseConnectionUrl() { public static final String connectionUrl = getBaseConnectionUrl() + "ProjectId=" + DEFAULT_CATALOG + ";OAuthType=3;Timeout=3600;"; - public static final BigQuery bigQuery; - static { - BigQuery bq = null; - try{ - bq = ((DriverManager.getConnection(connectionUrl)).unwrap(BigQueryConnection.class)).getBigQuery(); - } - catch(SQLException ex){ - } - bigQuery = bq; - } + public static final BigQuery bigQuery = BigQueryJdbcBaseTest.getBigQuery(connectionUrl); public static final String createDatasetQuery = "CREATE SCHEMA IF NOT EXISTS `%s.%s` OPTIONS(default_table_expiration_days = 5)"; diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITBigQueryJDBCTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITBigQueryJDBCTest.java index c0cd29ba16a4..ba50d699cb21 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITBigQueryJDBCTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITBigQueryJDBCTest.java @@ -25,9 +25,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import com.google.cloud.ServiceOptions; -import com.google.cloud.bigquery.BigQuery; import com.google.cloud.bigquery.BigQueryError; -import com.google.cloud.bigquery.BigQueryOptions; import com.google.cloud.bigquery.DatasetId; import com.google.cloud.bigquery.Job; import com.google.cloud.bigquery.JobInfo; diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDriverTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDriverTest.java index 07f8ff202ac6..93d8727482f9 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDriverTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDriverTest.java @@ -21,8 +21,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import com.google.cloud.ServiceOptions; -import com.google.cloud.bigquery.BigQuery; -import com.google.cloud.bigquery.BigQueryOptions; import com.google.cloud.bigquery.Dataset; import com.google.cloud.bigquery.DatasetId; import java.sql.Connection; @@ -99,8 +97,7 @@ public void testDriverLocation() throws SQLException, InterruptedException { String CONNECTION_URL = ITBase.connectionUrl + "LOCATION=us-east5;"; // US Connection - Connection connectionUS = - DriverManager.getConnection(CONNECTION_URL); + Connection connectionUS = DriverManager.getConnection(CONNECTION_URL); Statement statementUS = connectionUS.createStatement(); statementUS.execute(String.format(createDataset, DEFAULT_CATALOG, datasetUS)); statementUS.execute(String.format(createQuery, DEFAULT_CATALOG, datasetUS, tableNameUS)); diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITStatementTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITStatementTest.java index c6a6abf72996..c4f822c21e79 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITStatementTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITStatementTest.java @@ -28,7 +28,6 @@ import com.google.api.gax.paging.Page; import com.google.cloud.ServiceOptions; import com.google.cloud.bigquery.BigQuery; -import com.google.cloud.bigquery.BigQueryOptions; import com.google.cloud.bigquery.Dataset; import com.google.cloud.bigquery.DatasetId; import com.google.cloud.bigquery.FieldValueList; @@ -383,8 +382,8 @@ public void testTemporaryDatasetLocation() throws SQLException, InterruptedExcep String tempDatasetName = "jdbc_temp_dataset_" + System.currentTimeMillis() + "_" + randomSuffix; String customConnectionUrl = - ITBase.connectionUrl + - ";Location=" + ITBase.connectionUrl + + ";Location=" + location + ";AllowLargeResults=true;LargeResultDataset=" + tempDatasetName From 2b276b5ae238a70e46dca771870edb6be370c118 Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Tue, 30 Jun 2026 23:34:48 -0700 Subject: [PATCH 4/4] Update java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITStatementTest.java Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- .../java/com/google/cloud/bigquery/jdbc/it/ITStatementTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITStatementTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITStatementTest.java index c4f822c21e79..5d69867b01fe 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITStatementTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITStatementTest.java @@ -383,7 +383,7 @@ public void testTemporaryDatasetLocation() throws SQLException, InterruptedExcep String customConnectionUrl = ITBase.connectionUrl - + ";Location=" + + "Location=" + location + ";AllowLargeResults=true;LargeResultDataset=" + tempDatasetName