Skip to content

Commit 9ce5ec6

Browse files
test(bigquery-jdbc): isolate PCNT tests and add disable_tpc tag (googleapis#14388)
b/561965004 This PR decouples PCNT ITs from core connection and metadata test classes into a dedicated class tagged with `@Tag("disable_tpc")`. ### Changes - **`ITPcntTest`**: Created a dedicated integration test class containing the 5 PCNT tests (2 connection, 3 metadata) and tagged it with `@Tag("disable_tpc")` at class level - **`ITConnectionTest` & `ITDatabaseMetadataTest`**: Removed PCNT table lifecycle (`setUpPcntTable` / `cleanUpPcntTable`) and PCNT test methods. Core tests now run independently in TPC. - **`ITPresubmitTests`**: Added `ITPcntTest` to preserve full test coverage in standard GCP presubmit CI.
1 parent 151e5c0 commit 9ce5ec6

6 files changed

Lines changed: 170 additions & 132 deletions

File tree

‎java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITConnectionTest.java‎

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import java.sql.Statement;
3636
import java.util.Properties;
3737
import java.util.Random;
38-
import org.junit.jupiter.api.AfterAll;
3938
import org.junit.jupiter.api.BeforeAll;
4039
import org.junit.jupiter.api.Disabled;
4140
import org.junit.jupiter.api.Tag;
@@ -48,21 +47,12 @@ public class ITConnectionTest {
4847
static Random random = new Random();
4948
static int randomNumber = random.nextInt(999);
5049
private static final String TABLE_NAME = "JDBC_CONNECTION_TEST_TABLE" + randomNumber;
51-
private static final String PCNT_TABLE_NAME = "PCNT_CONN_TEST_TABLE_" + randomNumber;
5250

5351
@BeforeAll
5452
public static void beforeClass() throws InterruptedException {
5553
DATASET = ITBase.getSharedDataset();
5654
ITBase.setUpTable(DATASET, TABLE_NAME);
5755
ITBase.setUpProcedure(DATASET, TABLE_NAME);
58-
ITBase.setUpPcntTable(ITBase.PCNT_SCHEMA, PCNT_TABLE_NAME);
59-
}
60-
61-
@AfterAll
62-
public static void afterClass() throws InterruptedException {
63-
// Shared dataset cleanup is handled by ITBase shutdown hook.
64-
// Clean up dynamic table created in the shared PCNT namespace.
65-
ITBase.cleanUpPcntTable(ITBase.PCNT_SCHEMA, PCNT_TABLE_NAME);
6656
}
6757

6858
@Test
@@ -455,46 +445,4 @@ public void testDefaultDatasetColonDelimiter() throws SQLException {
455445
}
456446
}
457447
}
458-
459-
@Test
460-
public void testPcntDefaultDataset2TierNamespace() throws SQLException {
461-
String urlWithPcnt = ITBase.connectionUrl + ";DefaultDataset=" + ITBase.PCNT_SCHEMA + ";";
462-
try (Connection connection = DriverManager.getConnection(urlWithPcnt)) {
463-
assertNotNull(connection);
464-
assertFalse(connection.isClosed());
465-
try (Statement stmt = connection.createStatement();
466-
ResultSet rs = stmt.executeQuery("SELECT * FROM " + PCNT_TABLE_NAME + " ORDER BY id")) {
467-
assertTrue(rs.next());
468-
assertEquals(1, rs.getInt("id"));
469-
assertEquals("Alice", rs.getString("name"));
470-
assertTrue(rs.next());
471-
assertEquals(2, rs.getInt("id"));
472-
assertEquals("Bob", rs.getString("name"));
473-
}
474-
}
475-
}
476-
477-
@Test
478-
public void testPcntDefaultDataset3TierNamespace() throws SQLException {
479-
String urlWithPcnt =
480-
ITBase.connectionUrl
481-
+ ";DefaultDataset="
482-
+ DEFAULT_CATALOG
483-
+ ":"
484-
+ ITBase.PCNT_SCHEMA
485-
+ ";";
486-
try (Connection connection = DriverManager.getConnection(urlWithPcnt)) {
487-
assertNotNull(connection);
488-
assertFalse(connection.isClosed());
489-
try (Statement stmt = connection.createStatement();
490-
ResultSet rs = stmt.executeQuery("SELECT * FROM " + PCNT_TABLE_NAME + " ORDER BY id")) {
491-
assertTrue(rs.next());
492-
assertEquals(1, rs.getInt("id"));
493-
assertEquals("Alice", rs.getString("name"));
494-
assertTrue(rs.next());
495-
assertEquals(2, rs.getInt("id"));
496-
assertEquals("Bob", rs.getString("name"));
497-
}
498-
}
499-
}
500448
}

‎java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDatabaseMetadataTest.java‎

Lines changed: 0 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
import java.util.Set;
4242
import java.util.regex.Matcher;
4343
import java.util.regex.Pattern;
44-
import org.junit.jupiter.api.AfterAll;
4544
import org.junit.jupiter.api.Assertions;
4645
import org.junit.jupiter.api.BeforeAll;
4746
import org.junit.jupiter.api.Disabled;
@@ -62,7 +61,6 @@ public class ITDatabaseMetadataTest extends ITBase {
6261
Pattern.compile("^(\\d+)\\.(\\d+)(?:\\.\\d+)+\\s*.*");
6362
private static final String DEFAULT_CATALOG = ServiceOptions.getDefaultProjectId();
6463
private static final String TABLE_NAME = "JDBC_DBMETADATA_TEST_TABLE" + randomNumber;
65-
private static final String PCNT_TABLE_NAME = "PCNT_METADATA_TEST_TABLE_" + randomNumber;
6664

6765
@BeforeAll
6866
public static void beforeClass() throws InterruptedException, SQLException {
@@ -71,14 +69,6 @@ public static void beforeClass() throws InterruptedException, SQLException {
7169
CONSTRAINTS_DATASET = ITBase.getSharedDataset();
7270
// Set up Dataset
7371
ITBase.setUpTable(DATASET, TABLE_NAME);
74-
ITBase.setUpPcntTable(ITBase.PCNT_SCHEMA, PCNT_TABLE_NAME);
75-
}
76-
77-
@AfterAll
78-
public static void afterClass() throws SQLException, InterruptedException {
79-
// Shared dataset cleanup is handled by ITBase shutdown hook.
80-
// Clean up dynamic table created in the shared PCNT namespace.
81-
ITBase.cleanUpPcntTable(ITBase.PCNT_SCHEMA, PCNT_TABLE_NAME);
8272
}
8373

8474
@Disabled
@@ -1821,73 +1811,4 @@ protected void verifyGetColumns(Connection connection, DatabaseMetaData metaData
18211811
assertTrue(count > 0);
18221812
connection.createStatement().execute("drop table if exists " + dataset + "." + jdbctesttable);
18231813
}
1824-
1825-
@Test
1826-
public void testDatabaseMetadataGetSchemasPcnt() throws SQLException {
1827-
try (Connection connection = DriverManager.getConnection(ITBase.connectionUrl)) {
1828-
DatabaseMetaData metaData = connection.getMetaData();
1829-
try (ResultSet rs = metaData.getSchemas(DEFAULT_CATALOG, PCNT_SCHEMA)) {
1830-
assertNotNull(rs, "ResultSet from getSchemas() should not be null");
1831-
assertTrue(
1832-
rs.next(), "Expected PCNT schema " + PCNT_SCHEMA + " in catalog " + DEFAULT_CATALOG);
1833-
assertEquals(PCNT_SCHEMA, rs.getString("TABLE_SCHEM"));
1834-
assertEquals(DEFAULT_CATALOG, rs.getString("TABLE_CATALOG"));
1835-
}
1836-
}
1837-
}
1838-
1839-
@Test
1840-
public void testDatabaseMetadataGetTablesPcnt() throws SQLException {
1841-
try (Connection connection = DriverManager.getConnection(ITBase.connectionUrl)) {
1842-
DatabaseMetaData metaData = connection.getMetaData();
1843-
try (ResultSet rs = metaData.getTables(DEFAULT_CATALOG, PCNT_SCHEMA, PCNT_TABLE_NAME, null)) {
1844-
assertNotNull(rs, "ResultSet from getTables() should not be null");
1845-
assertTrue(
1846-
rs.next(), "Expected PCNT table " + PCNT_TABLE_NAME + " under schema " + PCNT_SCHEMA);
1847-
assertEquals(DEFAULT_CATALOG, rs.getString("TABLE_CAT"));
1848-
assertEquals(PCNT_SCHEMA, rs.getString("TABLE_SCHEM"));
1849-
assertEquals(PCNT_TABLE_NAME, rs.getString("TABLE_NAME"));
1850-
assertEquals("TABLE", rs.getString("TABLE_TYPE"));
1851-
}
1852-
}
1853-
}
1854-
1855-
@Test
1856-
public void testDatabaseMetadataGetColumnsPcnt() throws SQLException {
1857-
try (Connection connection = DriverManager.getConnection(ITBase.connectionUrl)) {
1858-
DatabaseMetaData metaData = connection.getMetaData();
1859-
try (ResultSet rs = metaData.getColumns(DEFAULT_CATALOG, PCNT_SCHEMA, PCNT_TABLE_NAME, "%")) {
1860-
assertNotNull(rs, "ResultSet from getColumns() should not be null");
1861-
int columnCount = 0;
1862-
boolean foundId = false;
1863-
boolean foundName = false;
1864-
while (rs.next()) {
1865-
columnCount++;
1866-
assertEquals(DEFAULT_CATALOG, rs.getString("TABLE_CAT"));
1867-
assertEquals(PCNT_SCHEMA, rs.getString("TABLE_SCHEM"));
1868-
assertEquals(PCNT_TABLE_NAME, rs.getString("TABLE_NAME"));
1869-
String colName = rs.getString("COLUMN_NAME");
1870-
String typeName = rs.getString("TYPE_NAME");
1871-
if ("id".equals(colName)) {
1872-
foundId = true;
1873-
assertEquals(1, rs.getInt("ORDINAL_POSITION"));
1874-
assertTrue(
1875-
typeName.equalsIgnoreCase("INT64")
1876-
|| typeName.equalsIgnoreCase("INTEGER")
1877-
|| typeName.equalsIgnoreCase("BIGINT"));
1878-
} else if ("name".equals(colName)) {
1879-
foundName = true;
1880-
assertEquals(2, rs.getInt("ORDINAL_POSITION"));
1881-
assertTrue(
1882-
typeName.equalsIgnoreCase("STRING")
1883-
|| typeName.equalsIgnoreCase("NVARCHAR")
1884-
|| typeName.equalsIgnoreCase("VARCHAR"));
1885-
}
1886-
}
1887-
assertEquals(2, columnCount, "Expected 2 columns in PCNT table " + PCNT_TABLE_NAME);
1888-
assertTrue(foundId, "Expected column 'id' in PCNT table");
1889-
assertTrue(foundName, "Expected column 'name' in PCNT table");
1890-
}
1891-
}
1892-
}
18931814
}
Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
/*
2+
* Copyright 2026 Google LLC
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.google.cloud.bigquery.jdbc.it;
18+
19+
import static org.junit.jupiter.api.Assertions.assertEquals;
20+
import static org.junit.jupiter.api.Assertions.assertFalse;
21+
import static org.junit.jupiter.api.Assertions.assertNotNull;
22+
import static org.junit.jupiter.api.Assertions.assertTrue;
23+
24+
import java.sql.Connection;
25+
import java.sql.DatabaseMetaData;
26+
import java.sql.DriverManager;
27+
import java.sql.ResultSet;
28+
import java.sql.SQLException;
29+
import java.sql.Statement;
30+
import java.util.Random;
31+
import org.junit.jupiter.api.AfterAll;
32+
import org.junit.jupiter.api.BeforeAll;
33+
import org.junit.jupiter.api.Tag;
34+
import org.junit.jupiter.api.Test;
35+
36+
@Tag("disable_tpc")
37+
public class ITPcntTest extends ITBase {
38+
39+
private static final Random random = new Random();
40+
private static final int randomNumber = random.nextInt(9999);
41+
private static final String PCNT_TABLE_NAME = "PCNT_TEST_TABLE_" + randomNumber;
42+
43+
@BeforeAll
44+
public static void beforeClass() throws InterruptedException {
45+
ITBase.setUpPcntTable(ITBase.PCNT_SCHEMA, PCNT_TABLE_NAME);
46+
}
47+
48+
@AfterAll
49+
public static void afterClass() throws InterruptedException {
50+
ITBase.cleanUpPcntTable(ITBase.PCNT_SCHEMA, PCNT_TABLE_NAME);
51+
}
52+
53+
@Test
54+
public void testPcntDefaultDataset2TierNamespace() throws SQLException {
55+
String urlWithPcnt = ITBase.connectionUrl + ";DefaultDataset=" + ITBase.PCNT_SCHEMA + ";";
56+
try (Connection connection = DriverManager.getConnection(urlWithPcnt)) {
57+
assertNotNull(connection);
58+
assertFalse(connection.isClosed());
59+
try (Statement stmt = connection.createStatement();
60+
ResultSet rs = stmt.executeQuery("SELECT * FROM " + PCNT_TABLE_NAME + " ORDER BY id")) {
61+
assertTrue(rs.next());
62+
assertEquals(1, rs.getInt("id"));
63+
assertEquals("Alice", rs.getString("name"));
64+
assertTrue(rs.next());
65+
assertEquals(2, rs.getInt("id"));
66+
assertEquals("Bob", rs.getString("name"));
67+
}
68+
}
69+
}
70+
71+
@Test
72+
public void testPcntDefaultDataset3TierNamespace() throws SQLException {
73+
String urlWithPcnt =
74+
ITBase.connectionUrl
75+
+ ";DefaultDataset="
76+
+ DEFAULT_CATALOG
77+
+ ":"
78+
+ ITBase.PCNT_SCHEMA
79+
+ ";";
80+
try (Connection connection = DriverManager.getConnection(urlWithPcnt)) {
81+
assertNotNull(connection);
82+
assertFalse(connection.isClosed());
83+
try (Statement stmt = connection.createStatement();
84+
ResultSet rs = stmt.executeQuery("SELECT * FROM " + PCNT_TABLE_NAME + " ORDER BY id")) {
85+
assertTrue(rs.next());
86+
assertEquals(1, rs.getInt("id"));
87+
assertEquals("Alice", rs.getString("name"));
88+
assertTrue(rs.next());
89+
assertEquals(2, rs.getInt("id"));
90+
assertEquals("Bob", rs.getString("name"));
91+
}
92+
}
93+
}
94+
95+
@Test
96+
public void testDatabaseMetadataGetSchemasPcnt() throws SQLException {
97+
try (Connection connection = DriverManager.getConnection(ITBase.connectionUrl)) {
98+
DatabaseMetaData metaData = connection.getMetaData();
99+
try (ResultSet rs = metaData.getSchemas(DEFAULT_CATALOG, PCNT_SCHEMA)) {
100+
assertNotNull(rs, "ResultSet from getSchemas() should not be null");
101+
assertTrue(
102+
rs.next(), "Expected PCNT schema " + PCNT_SCHEMA + " in catalog " + DEFAULT_CATALOG);
103+
assertEquals(PCNT_SCHEMA, rs.getString("TABLE_SCHEM"));
104+
assertEquals(DEFAULT_CATALOG, rs.getString("TABLE_CATALOG"));
105+
}
106+
}
107+
}
108+
109+
@Test
110+
public void testDatabaseMetadataGetTablesPcnt() throws SQLException {
111+
try (Connection connection = DriverManager.getConnection(ITBase.connectionUrl)) {
112+
DatabaseMetaData metaData = connection.getMetaData();
113+
try (ResultSet rs = metaData.getTables(DEFAULT_CATALOG, PCNT_SCHEMA, PCNT_TABLE_NAME, null)) {
114+
assertNotNull(rs, "ResultSet from getTables() should not be null");
115+
assertTrue(
116+
rs.next(), "Expected PCNT table " + PCNT_TABLE_NAME + " under schema " + PCNT_SCHEMA);
117+
assertEquals(DEFAULT_CATALOG, rs.getString("TABLE_CAT"));
118+
assertEquals(PCNT_SCHEMA, rs.getString("TABLE_SCHEM"));
119+
assertEquals(PCNT_TABLE_NAME, rs.getString("TABLE_NAME"));
120+
assertEquals("TABLE", rs.getString("TABLE_TYPE"));
121+
}
122+
}
123+
}
124+
125+
@Test
126+
public void testDatabaseMetadataGetColumnsPcnt() throws SQLException {
127+
try (Connection connection = DriverManager.getConnection(ITBase.connectionUrl)) {
128+
DatabaseMetaData metaData = connection.getMetaData();
129+
try (ResultSet rs = metaData.getColumns(DEFAULT_CATALOG, PCNT_SCHEMA, PCNT_TABLE_NAME, "%")) {
130+
assertNotNull(rs, "ResultSet from getColumns() should not be null");
131+
int columnCount = 0;
132+
boolean foundId = false;
133+
boolean foundName = false;
134+
while (rs.next()) {
135+
columnCount++;
136+
assertEquals(DEFAULT_CATALOG, rs.getString("TABLE_CAT"));
137+
assertEquals(PCNT_SCHEMA, rs.getString("TABLE_SCHEM"));
138+
assertEquals(PCNT_TABLE_NAME, rs.getString("TABLE_NAME"));
139+
String colName = rs.getString("COLUMN_NAME");
140+
String typeName = rs.getString("TYPE_NAME");
141+
if ("id".equals(colName)) {
142+
foundId = true;
143+
assertEquals(1, rs.getInt("ORDINAL_POSITION"));
144+
assertTrue(
145+
typeName.equalsIgnoreCase("INT64")
146+
|| typeName.equalsIgnoreCase("INTEGER")
147+
|| typeName.equalsIgnoreCase("BIGINT"));
148+
} else if ("name".equals(colName)) {
149+
foundName = true;
150+
assertEquals(2, rs.getInt("ORDINAL_POSITION"));
151+
assertTrue(
152+
typeName.equalsIgnoreCase("STRING")
153+
|| typeName.equalsIgnoreCase("NVARCHAR")
154+
|| typeName.equalsIgnoreCase("VARCHAR"));
155+
}
156+
}
157+
assertEquals(2, columnCount, "Expected 2 columns in PCNT table " + PCNT_TABLE_NAME);
158+
assertTrue(foundId, "Expected column 'id' in PCNT table");
159+
assertTrue(foundName, "Expected column 'name' in PCNT table");
160+
}
161+
}
162+
}
163+
}

‎java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/suites/ITDriverAgnosticTests.java‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.google.cloud.bigquery.jdbc.it.ITConnectionTest;
2121
import com.google.cloud.bigquery.jdbc.it.ITDatabaseMetadataTest;
2222
import com.google.cloud.bigquery.jdbc.it.ITDriverTest;
23+
import com.google.cloud.bigquery.jdbc.it.ITPcntTest;
2324
import com.google.cloud.bigquery.jdbc.it.ITResultSetMetadataTest;
2425
import org.junit.platform.suite.api.SelectClasses;
2526
import org.junit.platform.suite.api.Suite;
@@ -30,6 +31,7 @@
3031
ITConnectionTest.class,
3132
ITDatabaseMetadataTest.class,
3233
ITDriverTest.class,
34+
ITPcntTest.class,
3335
ITResultSetMetadataTest.class
3436
})
3537
public class ITDriverAgnosticTests {}

‎java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/suites/ITNightlyTests.java‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.google.cloud.bigquery.jdbc.it.ITBigQueryJDBCTest;
2121
import com.google.cloud.bigquery.jdbc.it.ITNightlyBigQueryTest;
2222
import com.google.cloud.bigquery.jdbc.it.ITOpenTelemetryTest;
23+
import com.google.cloud.bigquery.jdbc.it.ITPcntTest;
2324
import org.junit.platform.suite.api.SelectClasses;
2425
import org.junit.platform.suite.api.Suite;
2526

@@ -28,6 +29,7 @@
2829
ITAuthTests.class,
2930
ITBigQueryJDBCTest.class,
3031
ITNightlyBigQueryTest.class,
31-
ITOpenTelemetryTest.class
32+
ITOpenTelemetryTest.class,
33+
ITPcntTest.class
3234
})
3335
public class ITNightlyTests {}

‎java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/suites/ITPresubmitTests.java‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.google.cloud.bigquery.jdbc.it.ITDatabaseMetadataTest;
2525
import com.google.cloud.bigquery.jdbc.it.ITDriverTest;
2626
import com.google.cloud.bigquery.jdbc.it.ITLocalSslValidationTest;
27+
import com.google.cloud.bigquery.jdbc.it.ITPcntTest;
2728
import com.google.cloud.bigquery.jdbc.it.ITResultSetMetadataTest;
2829
import com.google.cloud.bigquery.jdbc.it.ITStatementTest;
2930
import org.junit.platform.suite.api.SelectClasses;
@@ -39,6 +40,7 @@
3940
ITDatabaseMetadataTest.class,
4041
ITDriverTest.class,
4142
ITLocalSslValidationTest.class,
43+
ITPcntTest.class,
4244
ITResultSetMetadataTest.class,
4345
ITStatementTest.class
4446
})

0 commit comments

Comments
 (0)