From 3eb95872b9cc820b0cd920ef125661fb9305c8ed Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Tue, 26 May 2026 23:50:10 +0000 Subject: [PATCH 1/4] chore(bigquery-jdbc): move all tests to junit5 --- java-bigquery-jdbc/pom.xml | 6 +- .../bigquery/jdbc/it/ITBigQueryJDBCTest.java | 106 +++++++++--------- .../bigquery/jdbc/it/ITConnectionTest.java | 22 ++-- .../jdbc/it/ITDatabaseMetadataTest.java | 31 +++-- .../cloud/bigquery/jdbc/it/ITDriverTest.java | 8 +- .../jdbc/it/ITResultSetMetadataTest.java | 12 +- .../bigquery/jdbc/it/ITStatementTest.java | 24 ++-- 7 files changed, 102 insertions(+), 107 deletions(-) diff --git a/java-bigquery-jdbc/pom.xml b/java-bigquery-jdbc/pom.xml index 9acf71bd4d0a..b9ffe98a0c81 100644 --- a/java-bigquery-jdbc/pom.xml +++ b/java-bigquery-jdbc/pom.xml @@ -323,11 +323,7 @@ - - junit - junit - test - + com.google.truth truth 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 26df941651e9..094f0bf9f4dc 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 @@ -58,7 +58,7 @@ import java.util.Properties; import java.util.Random; import java.util.function.BiFunction; -import org.junit.Assert; + import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; @@ -121,27 +121,27 @@ public void testValidAllDataTypesSerializationFromSelectQueryArrowDataset() thro Connection connection = DriverManager.getConnection(connection_uri); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(selectQuery); - Assert.assertNotNull(resultSet); + assertNotNull(resultSet); ResultSetMetaData resultSetMetaData = resultSet.getMetaData(); resultSet.next(); - Assert.assertEquals(15, resultSetMetaData.getColumnCount()); - Assert.assertTrue(resultSet.getBoolean(1)); - Assert.assertEquals(33, resultSet.getInt(2)); - Assert.assertEquals(50.05f, resultSet.getFloat(3), 0.0); - Assert.assertEquals(123.456, resultSet.getDouble(4), 0.0); - Assert.assertEquals(123.456789, resultSet.getDouble(5), 0.0); - Assert.assertEquals("testString", resultSet.getString(6)); - Assert.assertEquals("Test String", new String(resultSet.getBytes(7), StandardCharsets.UTF_8)); - Assert.assertEquals(Timestamp.valueOf("2020-04-27 18:07:25.356"), resultSet.getObject(10)); - Assert.assertEquals(Timestamp.valueOf("2020-04-27 18:07:25.356"), resultSet.getTimestamp(10)); - Assert.assertEquals(Date.valueOf("2019-1-12"), resultSet.getObject(11)); - Assert.assertEquals(Date.valueOf("2019-1-12"), resultSet.getDate(11)); - Assert.assertEquals(Time.valueOf("14:00:00"), resultSet.getObject(12)); - Assert.assertEquals(Time.valueOf("14:00:00"), resultSet.getTime(12)); - Assert.assertEquals(Timestamp.valueOf("2022-01-22 22:22:12.142265"), resultSet.getObject(13)); - Assert.assertEquals("POINT(1 2)", resultSet.getString(14)); - Assert.assertEquals( + assertEquals(15, resultSetMetaData.getColumnCount()); + assertTrue(resultSet.getBoolean(1)); + assertEquals(33, resultSet.getInt(2)); + assertEquals(50.05f, resultSet.getFloat(3), 0.0); + assertEquals(123.456, resultSet.getDouble(4), 0.0); + assertEquals(123.456789, resultSet.getDouble(5), 0.0); + assertEquals("testString", resultSet.getString(6)); + assertEquals("Test String", new String(resultSet.getBytes(7), StandardCharsets.UTF_8)); + assertEquals(Timestamp.valueOf("2020-04-27 18:07:25.356"), resultSet.getObject(10)); + assertEquals(Timestamp.valueOf("2020-04-27 18:07:25.356"), resultSet.getTimestamp(10)); + assertEquals(Date.valueOf("2019-1-12"), resultSet.getObject(11)); + assertEquals(Date.valueOf("2019-1-12"), resultSet.getDate(11)); + assertEquals(Time.valueOf("14:00:00"), resultSet.getObject(12)); + assertEquals(Time.valueOf("14:00:00"), resultSet.getTime(12)); + assertEquals(Timestamp.valueOf("2022-01-22 22:22:12.142265"), resultSet.getObject(13)); + assertEquals("POINT(1 2)", resultSet.getString(14)); + assertEquals( "{\"class\":{\"students\":[{\"name\":\"Jane\"}]}}", resultSet.getString(15)); connection.close(); connection.close(); @@ -162,7 +162,7 @@ public void testFastQueryPathEmpty() throws SQLException { DriverManager.getConnection(String.format(connectionUrl, DEFAULT_CATALOG)); Statement bigQueryStatement = connection.createStatement(); ResultSet jsonResultSet = bigQueryStatement.executeQuery(query); - Assert.assertEquals(0, resultSetRowCount(jsonResultSet)); + assertEquals(0, resultSetRowCount(jsonResultSet)); connection.close(); } @@ -214,10 +214,10 @@ public void testIterateOrderArrowMultiThread() throws SQLException { while (rs.next()) { double tripDis = rs.getDouble("trip_distance"); ++cnt; - Assert.assertTrue(oldTriDis <= tripDis); + assertTrue(oldTriDis <= tripDis); oldTriDis = tripDis; } - Assert.assertEquals(expectedCnt, cnt); // all the records were retrieved + assertEquals(expectedCnt, cnt); // all the records were retrieved connection.close(); } @@ -235,7 +235,7 @@ public void testReadAPIPathLarge() throws SQLException { int expectedCnt = 5000; String longQuery = String.format(BASE_QUERY, expectedCnt); ResultSet arrowResultSet = statement.executeQuery(longQuery); - Assert.assertEquals(expectedCnt, resultSetRowCount(arrowResultSet)); + assertEquals(expectedCnt, resultSetRowCount(arrowResultSet)); arrowResultSet.close(); connection.close(); } @@ -252,7 +252,7 @@ public void testReadAPIPathLargeWithThresholdParameters() throws SQLException { int expectedCnt = 1000; String longQuery = String.format(BASE_QUERY, expectedCnt); ResultSet arrowResultSet = statement.executeQuery(longQuery); - Assert.assertEquals(expectedCnt, resultSetRowCount(arrowResultSet)); + assertEquals(expectedCnt, resultSetRowCount(arrowResultSet)); arrowResultSet.close(); connection.close(); } @@ -269,7 +269,7 @@ public void testReadAPIPathLargeWithThresholdNotMet() throws SQLException { int expectedCnt = 5000; String longQuery = String.format(BASE_QUERY, expectedCnt); ResultSet arrowResultSet = statement.executeQuery(longQuery); - Assert.assertEquals(expectedCnt, resultSetRowCount(arrowResultSet)); + assertEquals(expectedCnt, resultSetRowCount(arrowResultSet)); arrowResultSet.close(); connection.close(); } @@ -285,12 +285,12 @@ public void testStatelessQueryPathSmall() throws SQLException { String query = "SELECT DISTINCT word FROM `bigquery-public-data.samples.shakespeare` LIMIT 850"; ResultSet jsonResultSet = statement.executeQuery(query); - Assert.assertEquals(850, resultSetRowCount(jsonResultSet)); + assertEquals(850, resultSetRowCount(jsonResultSet)); String queryEmpty = "SELECT DISTINCT word FROM `bigquery-public-data.samples.shakespeare` LIMIT 0"; ResultSet jsonResultSetEmpty = statement.executeQuery(queryEmpty); - Assert.assertEquals(0, resultSetRowCount(jsonResultSetEmpty)); + assertEquals(0, resultSetRowCount(jsonResultSetEmpty)); connectionUseStateless.close(); } @@ -583,16 +583,16 @@ public void testRollbackOnConnectionClosed() throws SQLException { Statement statement = connection.createStatement(); boolean status = statement.execute(insertQuery); - Assert.assertFalse(status); + assertFalse(status); int rows = statement.executeUpdate(updateQuery); - Assert.assertEquals(1, rows); + assertEquals(1, rows); status = statement.execute(selectQuery); - Assert.assertTrue(status); + assertTrue(status); connection.close(); // Separate query to check if transaction rollback worked ResultSet resultSet = bigQueryStatement.executeQuery(selectQuery); - Assert.assertFalse(resultSet.next()); + assertFalse(resultSet.next()); bigQueryStatement.execute( String.format("DROP TABLE IF EXISTS %S.%s", DATASET, TRANSACTION_TABLE)); @@ -652,16 +652,16 @@ public void testMultiStatementTransactionRollbackByUser() throws SQLException { Statement statement = connection.createStatement(); boolean status = statement.execute(insertQuery); - Assert.assertFalse(status); + assertFalse(status); int rows = statement.executeUpdate(updateQuery); - Assert.assertEquals(1, rows); + assertEquals(1, rows); status = statement.execute(selectQuery); - Assert.assertTrue(status); + assertTrue(status); connection.rollback(); // Separate query to check if transaction rollback worked ResultSet resultSet = bigQueryStatement.executeQuery(selectQuery); - Assert.assertFalse(resultSet.next()); + assertFalse(resultSet.next()); bigQueryStatement.execute( String.format("DROP TABLE IF EXISTS %S.%s", DATASET, TRANSACTION_TABLE)); @@ -711,10 +711,10 @@ public void testSingleStatementTransaction() throws SQLException { while (hasMoreResult || statement.getUpdateCount() != -1) { if (statement.getUpdateCount() == -1) { ResultSet result = statement.getResultSet(); - Assert.assertTrue(result.next()); - Assert.assertEquals(-1, statement.getUpdateCount()); + assertTrue(result.next()); + assertEquals(-1, statement.getUpdateCount()); } else { - Assert.assertTrue(statement.getUpdateCount() > -1); + assertTrue(statement.getUpdateCount() > -1); } hasMoreResult = statement.getMoreResults(); resultsCount++; @@ -725,9 +725,9 @@ public void testSingleStatementTransaction() throws SQLException { int rowCount = 0; while (resultSet.next()) { rowCount++; - Assert.assertEquals(14, resultSet.getInt(3)); + assertEquals(14, resultSet.getInt(3)); } - Assert.assertEquals(2, rowCount); + assertEquals(2, rowCount); bigQueryStatement.execute( String.format("DROP TABLE IF EXISTS %S.%s", DATASET, TRANSACTION_TABLE)); @@ -801,15 +801,15 @@ public void testMultiStatementTransactionDoesNotCommitWithoutCommit() throws SQL Statement statement = connection.createStatement(); boolean status = statement.execute(insertQuery); - Assert.assertFalse(status); + assertFalse(status); int rows = statement.executeUpdate(updateQuery); - Assert.assertEquals(1, rows); + assertEquals(1, rows); status = statement.execute(selectQuery); - Assert.assertTrue(status); + assertTrue(status); // Separate query to check nothing committed ResultSet resultSet = bigQueryStatement.executeQuery(selectQuery); - Assert.assertFalse(resultSet.next()); + assertFalse(resultSet.next()); bigQueryStatement.execute( String.format("DROP TABLE IF EXISTS %S.%s", DATASET, TRANSACTION_TABLE)); @@ -843,17 +843,17 @@ public void testValidMultiStatementTransactionCommits() throws SQLException { Statement statement = connection.createStatement(); boolean status = statement.execute(insertQuery); - Assert.assertFalse(status); + assertFalse(status); status = statement.execute(updateQuery); - Assert.assertFalse(status); + assertFalse(status); status = statement.execute(selectQuery); - Assert.assertTrue(status); + assertTrue(status); connection.commit(); // Separate query to check inserted and updated data committed ResultSet resultSet = bigQueryStatement.executeQuery(selectQuery); - Assert.assertTrue(resultSet.next()); - Assert.assertEquals(14, resultSet.getInt(3)); + assertTrue(resultSet.next()); + assertEquals(14, resultSet.getInt(3)); bigQueryStatement.execute( String.format("DROP TABLE IF EXISTS %S.%s", DATASET, TRANSACTION_TABLE)); @@ -898,7 +898,7 @@ public void testTransactionRollbackOnError() throws SQLException { // do a check to see if no vals inserted ResultSet resultSet = bigQueryStatement.executeQuery(selectQuery); - Assert.assertFalse(resultSet.next()); + assertFalse(resultSet.next()); bigQueryStatement.execute( String.format("DROP TABLE IF EXISTS %S.%s", DATASET, TRANSACTION_TABLE)); @@ -1746,7 +1746,7 @@ public void testNonEnabledUseLegacySQLThrowsSyntaxError() throws SQLException { Statement statement = connection.createStatement(); // act & assertion - Assert.assertThrows(SQLException.class, () -> statement.execute(selectLegacyQuery)); + assertThrows(SQLException.class, () -> statement.execute(selectLegacyQuery)); connection.close(); } @@ -1768,7 +1768,7 @@ public void testUseLegacySQLWithLargeResultsNotAllowedQueries() throws SQLExcept ResultSet resultSet = statement.executeQuery(selectLegacyQuery); // assertion - Assert.assertNotNull(resultSet); + assertNotNull(resultSet); connection.close(); } @@ -1856,7 +1856,7 @@ public void testUseLegacySQLWithLargeResultsAllowedWithNoDestinationTableDefault ResultSet resultSet = statement.executeQuery(selectLegacyQuery); // assertion - Assert.assertNotNull(resultSet); + assertNotNull(resultSet); connection.close(); } diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITConnectionTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITConnectionTest.java index a4921224ea3d..789957ec919f 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITConnectionTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITConnectionTest.java @@ -16,12 +16,12 @@ package com.google.cloud.bigquery.jdbc.it; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertThrows; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import com.google.cloud.ServiceOptions; import java.sql.Array; @@ -36,9 +36,9 @@ import java.sql.Statement; import java.util.Properties; import java.util.Random; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; public class ITConnectionTest { @@ -51,7 +51,7 @@ public class ITConnectionTest { private static String connectionUrl = "jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;ProjectId=%s;OAuthType=3;Timeout=3600;"; - @BeforeClass + @BeforeAll public static void beforeClass() throws InterruptedException { ITBase.setUpDataset(DATASET); @@ -59,7 +59,7 @@ public static void beforeClass() throws InterruptedException { ITBase.setUpProcedure(DATASET, TABLE_NAME); } - @AfterClass + @AfterAll public static void afterClass() throws InterruptedException { ITBase.cleanUp(DATASET); } diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDatabaseMetadataTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDatabaseMetadataTest.java index 6ca4d66d527a..b48dc997ca12 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDatabaseMetadataTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDatabaseMetadataTest.java @@ -18,9 +18,9 @@ import static java.sql.Types.TIME; import static java.sql.Types.TIMESTAMP; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; @@ -41,10 +41,9 @@ import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.junit.AfterClass; -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Assertions; public class ITDatabaseMetadataTest extends ITBase { @@ -68,13 +67,13 @@ public class ITDatabaseMetadataTest extends ITBase { private static String connectionUrl = "jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;ProjectId=%s;OAuthType=3;Timeout=3600;"; - @BeforeClass + @BeforeAll public static void beforeClass() throws InterruptedException, SQLException { // Set up Dataset ITBase.setUpTable(DATASET, TABLE_NAME); } - @AfterClass + @AfterAll public static void afterClass() throws SQLException {} @Test @@ -1681,8 +1680,8 @@ protected void verifyGetTablePrivileges( int count = 0; while (resultSet.next()) { for (int i = 1; i <= cols; i++) { - Assert.assertNotNull(resultSet.getMetaData().getColumnName(i)); - Assert.assertNotNull(resultSet.getString(i)); + assertNotNull(resultSet.getMetaData().getColumnName(i)); + assertNotNull(resultSet.getString(i)); } ++count; } @@ -1710,8 +1709,8 @@ protected void verifyGetColumnPrivileges( int count = 0; while (resultSet.next()) { for (int i = 1; i <= cols; i++) { - Assert.assertNotNull(resultSet.getMetaData().getColumnName(i)); - Assert.assertNotNull(resultSet.getString(i)); + assertNotNull(resultSet.getMetaData().getColumnName(i)); + assertNotNull(resultSet.getString(i)); } ++count; } @@ -1738,8 +1737,8 @@ protected void verifyForeignKeys(Connection connection, DatabaseMetaData metaDat int count = 0; while (resultSet.next()) { for (int i = 1; i <= cols; i++) { - Assert.assertNotNull(resultSet.getMetaData().getColumnName(i)); - Assert.assertNotNull(resultSet.getString(i)); + assertNotNull(resultSet.getMetaData().getColumnName(i)); + assertNotNull(resultSet.getString(i)); } ++count; } @@ -1763,7 +1762,7 @@ protected void verifyGetColumns(Connection connection, DatabaseMetaData metaData int count = 0; while (resultSet.next()) { for (int i = 1; i <= cols; i++) { - Assert.assertNotNull(resultSet.getMetaData().getColumnName(i)); + assertNotNull(resultSet.getMetaData().getColumnName(i)); } ++count; } 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 d0e17e75e46e..2a0cdcb2b8c7 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 @@ -16,9 +16,9 @@ package com.google.cloud.bigquery.jdbc.it; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import com.google.cloud.ServiceOptions; import com.google.cloud.bigquery.BigQuery; @@ -33,7 +33,7 @@ import java.sql.Statement; import java.util.Properties; import java.util.Random; -import org.junit.Test; +import org.junit.jupiter.api.Test; public class ITDriverTest { diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITResultSetMetadataTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITResultSetMetadataTest.java index cbf475868931..e2e6ae4f7a06 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITResultSetMetadataTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITResultSetMetadataTest.java @@ -16,7 +16,7 @@ package com.google.cloud.bigquery.jdbc.it; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import com.google.cloud.ServiceOptions; import java.sql.Connection; @@ -26,9 +26,9 @@ import java.sql.SQLException; import java.sql.Statement; import java.util.Random; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; public class ITResultSetMetadataTest { @@ -39,13 +39,13 @@ public class ITResultSetMetadataTest { private static final String DATASET = "JDBC_RSMETADATA_TEST_DATASET"; private static ResultSetMetaData metaData; - @BeforeClass + @BeforeAll public static void beforeClass() throws InterruptedException { ITBase.setUpDataset(DATASET); ITBase.setUpTable(DATASET, TABLE_NAME); } - @AfterClass + @AfterAll public static void afterClass() throws InterruptedException { ITBase.cleanUp(DATASET); } 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 1285b7e56a82..2e54c598ab32 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 @@ -16,13 +16,13 @@ package com.google.cloud.bigquery.jdbc.it; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertThrows; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import com.google.cloud.ServiceOptions; import java.sql.Connection; @@ -35,9 +35,9 @@ import java.sql.Statement; import java.util.Properties; import java.util.Random; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; public class ITStatementTest { private static final String DEFAULT_CATALOG = ServiceOptions.getDefaultProjectId(); @@ -48,13 +48,13 @@ public class ITStatementTest { private static int randomNumber = random.nextInt(999); private static final String TABLE_NAME = "JDBC_STATEMENT_TEST_TABLE" + randomNumber; - @BeforeClass + @BeforeAll public static void beforeClass() throws InterruptedException { ITBase.setUpDataset(DATASET); ITBase.setUpTable(DATASET, TABLE_NAME); } - @AfterClass + @AfterAll public static void afterClass() throws InterruptedException { ITBase.cleanUp(DATASET); } From 9de6098e5d66dfd69acc5c3258cfa9579d15be19 Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Tue, 26 May 2026 23:51:02 +0000 Subject: [PATCH 2/4] update presubmit --- .../cloud/bigquery/jdbc/it/suites/ITPresubmitTests.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/suites/ITPresubmitTests.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/suites/ITPresubmitTests.java index 90a569cc55cd..cdcece31a279 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/suites/ITPresubmitTests.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/suites/ITPresubmitTests.java @@ -24,6 +24,7 @@ import com.google.cloud.bigquery.jdbc.it.ITDatabaseMetadataTest; import com.google.cloud.bigquery.jdbc.it.ITDriverTest; import com.google.cloud.bigquery.jdbc.it.ITResultSetMetadataTest; +import com.google.cloud.bigquery.jdbc.it.ITStatementTest; import org.junit.platform.suite.api.SelectClasses; import org.junit.platform.suite.api.Suite; @@ -36,6 +37,7 @@ ITConnectionPoolingTest.class, ITDatabaseMetadataTest.class, ITDriverTest.class, - ITResultSetMetadataTest.class + ITResultSetMetadataTest.class, + ITStatementTest.class }) public class ITPresubmitTests {} From d449a0cc81b4e859464da433a111d27aad42678e Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Tue, 26 May 2026 23:59:51 +0000 Subject: [PATCH 3/4] lint --- .../com/google/cloud/bigquery/jdbc/it/ITBigQueryJDBCTest.java | 4 +--- .../google/cloud/bigquery/jdbc/it/ITDatabaseMetadataTest.java | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) 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 094f0bf9f4dc..ad1a32c390c6 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 @@ -58,7 +58,6 @@ import java.util.Properties; import java.util.Random; import java.util.function.BiFunction; - import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; @@ -141,8 +140,7 @@ public void testValidAllDataTypesSerializationFromSelectQueryArrowDataset() thro assertEquals(Time.valueOf("14:00:00"), resultSet.getTime(12)); assertEquals(Timestamp.valueOf("2022-01-22 22:22:12.142265"), resultSet.getObject(13)); assertEquals("POINT(1 2)", resultSet.getString(14)); - assertEquals( - "{\"class\":{\"students\":[{\"name\":\"Jane\"}]}}", resultSet.getString(15)); + assertEquals("{\"class\":{\"students\":[{\"name\":\"Jane\"}]}}", resultSet.getString(15)); connection.close(); connection.close(); } diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDatabaseMetadataTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDatabaseMetadataTest.java index b48dc997ca12..5a350bf79a2c 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDatabaseMetadataTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDatabaseMetadataTest.java @@ -20,9 +20,9 @@ import static java.sql.Types.TIMESTAMP; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import com.google.cloud.ServiceOptions; import java.sql.Connection; @@ -42,9 +42,9 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.Assertions; public class ITDatabaseMetadataTest extends ITBase { static final String PROJECT_ID = ServiceOptions.getDefaultProjectId(); From 6a25e989d678d2dac674176d5a192988bfb1a4ca Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Wed, 27 May 2026 01:25:48 +0000 Subject: [PATCH 4/4] fix tests --- .../bigquery/jdbc/BigQueryConnection.java | 34 ++++++++++++++++--- .../jdbc/BigQueryNoOpsConnection.java | 4 +-- .../jdbc/BigQueryPreparedStatement.java | 8 ++++- .../bigquery/jdbc/it/ITConnectionTest.java | 2 +- 4 files changed, 40 insertions(+), 8 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 9e40aaa3db5a..60d5dd34e4c9 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 @@ -50,6 +50,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.sql.SQLFeatureNotSupportedException; import java.sql.SQLWarning; import java.sql.Statement; import java.time.Duration; @@ -207,6 +208,7 @@ public class BigQueryConnection extends BigQueryNoOpsConnection { String partnerToken; DatabaseMetaData databaseMetaData; Boolean reqGoogleDriveScope; + private final Properties clientInfo = new Properties(); private boolean isReadOnlyTokenUsed = false; BigQueryConnection(String url) throws IOException { @@ -762,12 +764,16 @@ public void abort(Executor executor) throws SQLException { @Override public void setClientInfo(String name, String value) { - // no-op + if (value == null) { + this.clientInfo.remove(name); + } else { + this.clientInfo.setProperty(name, value); + } } @Override public String getClientInfo(String name) { - return null; + return this.clientInfo.getProperty(name); } @Override @@ -775,14 +781,34 @@ public String getCatalog() { return this.catalog; } + @Override + public String nativeSQL(String sql) throws SQLException { + checkClosed(); + return sql; + } + + @Override + public void setNetworkTimeout(java.util.concurrent.Executor executor, int milliseconds) + throws SQLException { + throw new SQLFeatureNotSupportedException("setNetworkTimeout is not supported."); + } + + @Override + public int getNetworkTimeout() throws SQLException { + throw new SQLFeatureNotSupportedException("getNetworkTimeout is not supported."); + } + @Override public Properties getClientInfo() { - return null; + return this.clientInfo; } @Override public void setClientInfo(Properties properties) { - // no-op + this.clientInfo.clear(); + if (properties != null) { + this.clientInfo.putAll(properties); + } } @Override diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsConnection.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsConnection.java index 1804cc14c442..2648ee95ba85 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsConnection.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsConnection.java @@ -182,10 +182,10 @@ public String getSchema() throws SQLException { public void setSchema(String schema) {} @Override - public void setNetworkTimeout(Executor executor, int milliseconds) {} + public void setNetworkTimeout(Executor executor, int milliseconds) throws SQLException {} @Override - public int getNetworkTimeout() { + public int getNetworkTimeout() throws SQLException { return 0; } } diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryPreparedStatement.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryPreparedStatement.java index a42cbd2a1545..c153b1935bb6 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryPreparedStatement.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryPreparedStatement.java @@ -219,7 +219,13 @@ public void setTime(int parameterIndex, Time x) throws SQLException { @Override public void setTimestamp(int parameterIndex, Timestamp x) throws SQLException { checkClosed(); - this.parameterHandler.setParameter(parameterIndex, x.toString(), String.class); + if (x == null) { + this.parameterHandler.setParameter(parameterIndex, null, String.class); + return; + } + Timestamp copy = new Timestamp(x.getTime()); + copy.setNanos((x.getNanos() / 1000) * 1000); + this.parameterHandler.setParameter(parameterIndex, copy.toString(), String.class); } @Override diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITConnectionTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITConnectionTest.java index 789957ec919f..544b0db76899 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITConnectionTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITConnectionTest.java @@ -75,7 +75,7 @@ public void testGetMetaData() throws SQLException { assertEquals(4, metaData.getJDBCMajorVersion()); assertEquals(2, metaData.getJDBCMinorVersion()); assertEquals("Google BigQuery", metaData.getDatabaseProductName()); - assertEquals("SimbaJDBCDriverforGoogleBigQuery", metaData.getDriverName()); + assertEquals("GoogleJDBCDriverForGoogleBigQuery", metaData.getDriverName()); } @Test