Skip to content

Commit 57c9dfc

Browse files
committed
test: autocommit_dml_mode with PG
1 parent d2f7f06 commit 57c9dfc

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

src/test/java/liquibase/ext/spanner/SimpleMockServerTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@
22

33
import static com.google.common.truth.Truth.assertThat;
44

5+
import com.google.cloud.spanner.Dialect;
56
import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult;
67
import com.google.common.collect.ImmutableList;
78
import com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest;
9+
import com.google.spanner.v1.BeginTransactionRequest;
10+
import com.google.spanner.v1.ExecuteSqlRequest;
811
import java.sql.Connection;
912
import java.sql.SQLException;
13+
import java.sql.Statement;
1014
import liquibase.Liquibase;
1115
import org.junit.jupiter.api.Test;
1216
import org.junit.jupiter.api.parallel.Execution;
@@ -34,6 +38,29 @@ void testCreateTableStatement() throws SQLException {
3438
receivedRequestWithNonLiquibaseToken.set(false);
3539
}
3640

41+
42+
@Test
43+
void testAutocommitDmlMode() throws SQLException {
44+
mockSpanner.putStatementResult(StatementResult.update(com.google.cloud.spanner.Statement.of("update foo set bar=1 where true"), 10000L));
45+
46+
// Configure the mock server to return POSTGRESQL as the dialect that is used by the database.
47+
mockSpanner.putStatementResult(StatementResult.detectDialectResult(Dialect.POSTGRESQL));
48+
49+
try (Connection con = createConnection(); Statement stmt = con.createStatement()) {
50+
stmt.execute("set spanner.autocommit_dml_mode='partitioned_non_atomic'");
51+
stmt.execute("update foo set bar=1 where true");
52+
}
53+
assertThat(mockSpanner.getRequestsOfType(BeginTransactionRequest.class)).hasSize(1);
54+
BeginTransactionRequest request = mockSpanner.getRequestsOfType(BeginTransactionRequest.class).get(0);
55+
assertThat(request.getOptions().hasPartitionedDml()).isTrue();
56+
57+
// This test does not use Liquibase but JDBC directly, so it is expected to send requests that
58+
// do not contain a Liquibase client lib token.
59+
assertThat(receivedRequestWithNonLiquibaseToken.get()).isTrue();
60+
// Clear the flag to prevent the check after each test to fail.
61+
receivedRequestWithNonLiquibaseToken.set(false);
62+
}
63+
3764
@Test
3865
void testInitLiquibase() throws Exception {
3966
mockSpanner.putStatementResult(

0 commit comments

Comments
 (0)