Skip to content

Commit 90f35b3

Browse files
authored
test: enable integration tests for PG on emulator (#1526)
The emulator now supports PostgreSQL, so we can enable the integration tests for PostgreSQL when running on the emulator. This change also changes some of the tests that had workarounds for features that were initially missing in PostgreSQL, such as support for DATE and TIMESTAMPTZ.
1 parent a3c26da commit 90f35b3

16 files changed

+241
-233
lines changed

src/test/java/com/google/cloud/spanner/jdbc/it/ITAbstractJdbcTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,15 @@
1616

1717
package com.google.cloud.spanner.jdbc.it;
1818

19+
import static com.google.cloud.spanner.testing.EmulatorSpannerHelper.isUsingEmulator;
20+
1921
import com.google.cloud.spanner.Database;
2022
import com.google.cloud.spanner.Dialect;
2123
import com.google.cloud.spanner.GceTestEnvConfig;
2224
import com.google.cloud.spanner.connection.AbstractSqlScriptVerifier;
2325
import com.google.cloud.spanner.connection.ITAbstractSpannerTest;
2426
import com.google.cloud.spanner.jdbc.CloudSpannerJdbcConnection;
2527
import com.google.cloud.spanner.jdbc.JdbcSqlScriptVerifier.JdbcGenericConnection;
26-
import com.google.cloud.spanner.testing.EmulatorSpannerHelper;
2728
import com.google.common.base.Preconditions;
2829
import com.google.common.base.Strings;
2930
import java.nio.file.Files;
@@ -116,7 +117,7 @@ static Collection<String> getMusicTablesDdl(Dialect dialect) {
116117
default:
117118
scriptFile = "CreateMusicTables.sql";
118119
}
119-
if (EmulatorSpannerHelper.isUsingEmulator()) {
120+
if (dialect != Dialect.POSTGRESQL && isUsingEmulator()) {
120121
scriptFile = "CreateMusicTables_Emulator.sql";
121122
}
122123
return AbstractSqlScriptVerifier.readStatementsFromFile(scriptFile, ITAbstractJdbcTest.class)
@@ -130,7 +131,7 @@ public Dialect getDialect() {
130131
}
131132

132133
public String getDefaultCatalog(Database database) {
133-
if (getDialect() == Dialect.POSTGRESQL) {
134+
if (getDialect() == Dialect.POSTGRESQL && !isUsingEmulator()) {
134135
return database.getId().getDatabase();
135136
}
136137
return "";

src/test/java/com/google/cloud/spanner/jdbc/it/ITJdbcConnectTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,7 @@ private String createBaseUrl() {
7373
if (EmulatorSpannerHelper.isUsingEmulator()) {
7474
url.append("//").append(System.getenv("SPANNER_EMULATOR_HOST"));
7575
}
76-
// Extract "//x.y.googleapis.com" from "https://x.y.googleapis.com" and append it to
77-
// url.
76+
// Extract "//x.y.googleapis.com" from "https://x.y.googleapis.com" and append it to url.
7877
if (options.getHost() != null) {
7978
url.append(options.getHost().substring(options.getHost().indexOf(':') + 1));
8079
}

src/test/java/com/google/cloud/spanner/jdbc/it/ITJdbcDdlTest.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,10 @@
1616

1717
package com.google.cloud.spanner.jdbc.it;
1818

19-
import static org.junit.Assume.assumeFalse;
20-
2119
import com.google.cloud.spanner.Database;
2220
import com.google.cloud.spanner.Dialect;
2321
import com.google.cloud.spanner.ParallelIntegrationTest;
2422
import com.google.cloud.spanner.jdbc.JdbcSqlScriptVerifier;
25-
import com.google.cloud.spanner.testing.EmulatorSpannerHelper;
2623
import com.google.common.collect.ImmutableMap;
2724
import java.util.ArrayList;
2825
import java.util.Collections;
@@ -64,9 +61,6 @@ public static List<DialectTestParameter> data() {
6461

6562
@Before
6663
public void setup() {
67-
assumeFalse(
68-
"Emulator does not support PostgreSQL",
69-
dialect.dialect == Dialect.POSTGRESQL && EmulatorSpannerHelper.isUsingEmulator());
7064
database = env.getOrCreateDatabase(getDialect(), Collections.emptyList());
7165
}
7266

src/test/java/com/google/cloud/spanner/jdbc/it/ITJdbcPgDatabaseMetaDataTest.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,10 @@
2121
import static org.junit.Assert.assertNotNull;
2222
import static org.junit.Assert.assertNull;
2323
import static org.junit.Assert.assertTrue;
24-
import static org.junit.Assume.assumeFalse;
2524

2625
import com.google.cloud.spanner.Database;
2726
import com.google.cloud.spanner.Dialect;
2827
import com.google.cloud.spanner.ParallelIntegrationTest;
29-
import com.google.cloud.spanner.testing.EmulatorSpannerHelper;
3028
import java.sql.Connection;
3129
import java.sql.DatabaseMetaData;
3230
import java.sql.ResultSet;
@@ -35,7 +33,6 @@
3533
import java.util.Arrays;
3634
import java.util.List;
3735
import org.junit.Before;
38-
import org.junit.BeforeClass;
3936
import org.junit.ClassRule;
4037
import org.junit.Ignore;
4138
import org.junit.Test;
@@ -57,20 +54,14 @@ public class ITJdbcPgDatabaseMetaDataTest extends ITAbstractJdbcTest {
5754
private static final String TABLE_WITH_ALL_COLS = "TableWithAllColumnTypes";
5855
private static final String TABLE_WITH_REF = "TableWithRef";
5956

60-
@BeforeClass
61-
public static void skipOnEmulator() {
62-
assumeFalse(
63-
"PostgreSQL dialect is not yet supported on the emulator",
64-
EmulatorSpannerHelper.isUsingEmulator());
65-
}
66-
6757
private Database database;
6858

6959
@Before
7060
public void setup() {
7161
database = env.getOrCreateDatabase(getDialect(), getMusicTablesDdl(getDialect()));
7262
}
7363

64+
@Override
7465
public Dialect getDialect() {
7566
return Dialect.POSTGRESQL;
7667
}

src/test/java/com/google/cloud/spanner/jdbc/it/ITJdbcPgNumericTest.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616

1717
package com.google.cloud.spanner.jdbc.it;
1818

19+
import static com.google.cloud.spanner.testing.EmulatorSpannerHelper.isUsingEmulator;
1920
import static org.junit.Assert.assertEquals;
2021
import static org.junit.Assert.assertNull;
2122
import static org.junit.Assert.assertThrows;
22-
import static org.junit.Assume.assumeFalse;
2323

2424
import com.google.cloud.spanner.Database;
2525
import com.google.cloud.spanner.DatabaseAdminClient;
@@ -30,7 +30,6 @@
3030
import com.google.cloud.spanner.Value;
3131
import com.google.cloud.spanner.connection.ConnectionOptions;
3232
import com.google.cloud.spanner.jdbc.JdbcSqlExceptionFactory.JdbcSqlExceptionImpl;
33-
import com.google.cloud.spanner.testing.EmulatorSpannerHelper;
3433
import com.google.cloud.spanner.testing.RemoteSpannerHelper;
3534
import java.math.BigDecimal;
3635
import java.sql.Connection;
@@ -64,8 +63,6 @@ public class ITJdbcPgNumericTest {
6463

6564
@BeforeClass
6665
public static void setup() throws Exception {
67-
assumeFalse(
68-
"PgNumeric is not supported in the emulator", EmulatorSpannerHelper.isUsingEmulator());
6966
testHelper = env.getTestHelper();
7067
final String projectId = testHelper.getInstanceId().getProject();
7168
final String instanceId = testHelper.getInstanceId().getInstance();
@@ -83,6 +80,9 @@ public static void setup() throws Exception {
8380
.createDatabase(databaseToCreate, Collections.emptyList())
8481
.get(OPERATION_TIMEOUT.toMillis(), TimeUnit.MILLISECONDS);
8582
url = "jdbc:cloudspanner://" + host + "/" + database.getId() + "?dialect=postgresql";
83+
if (isUsingEmulator()) {
84+
url += ";usePlainText=true";
85+
}
8686
}
8787

8888
@AfterClass
@@ -95,8 +95,6 @@ public static void teardown() {
9595

9696
@Test
9797
public void testResultSet() throws SQLException {
98-
assumeFalse(
99-
"PgNumeric is not supported in the emulator", EmulatorSpannerHelper.isUsingEmulator());
10098
final String table = testHelper.getUniqueDatabaseId();
10199
final String positiveBigNumeric =
102100
String.join("", Collections.nCopies(131072, "1"))
@@ -124,7 +122,7 @@ public void testResultSet() throws SQLException {
124122

125123
try (Connection connection = DriverManager.getConnection(url);
126124
Statement statement = connection.createStatement();
127-
ResultSet resultSet = statement.executeQuery("SELECT * FROM " + table)) {
125+
ResultSet resultSet = statement.executeQuery("SELECT * FROM " + table + " ORDER BY id")) {
128126

129127
resultSet.next();
130128
assertEquals("1.23", resultSet.getString("col1"));
@@ -190,8 +188,6 @@ public void testResultSet() throws SQLException {
190188

191189
@Test
192190
public void testPreparedStatement() throws Exception {
193-
assumeFalse(
194-
"PgNumeric is not supported in the emulator", EmulatorSpannerHelper.isUsingEmulator());
195191
final String table = testHelper.getUniqueDatabaseId();
196192
try (Connection connection = DriverManager.getConnection(url);
197193
Statement statement = connection.createStatement(); ) {
@@ -253,7 +249,7 @@ public void testPreparedStatement() throws Exception {
253249

254250
try (Connection connection = DriverManager.getConnection(url);
255251
Statement statement = connection.createStatement();
256-
ResultSet resultSet = statement.executeQuery("SELECT * FROM " + table)) {
252+
ResultSet resultSet = statement.executeQuery("SELECT * FROM " + table + " ORDER BY id")) {
257253
resultSet.next();
258254
assertNull(resultSet.getObject("col1"));
259255

0 commit comments

Comments
 (0)