@@ -122,12 +122,13 @@ public void testBatchDml() {
122
122
}
123
123
124
124
@ Test
125
- public void testTransactionIsolationLevel () {
125
+ public void testBeginTransactionIsolationLevel () {
126
+ SpannerPool .closeSpannerPool ();
126
127
for (Dialect dialect : new Dialect [] {Dialect .POSTGRESQL , Dialect .GOOGLE_STANDARD_SQL }) {
127
128
mockSpanner .putStatementResult (
128
129
MockSpannerServiceImpl .StatementResult .detectDialectResult (dialect ));
129
130
130
- try (Connection connection = createConnection ()) {
131
+ try (Connection connection = super . createConnection ()) {
131
132
for (IsolationLevel isolationLevel :
132
133
new IsolationLevel [] {IsolationLevel .REPEATABLE_READ , IsolationLevel .SERIALIZABLE }) {
133
134
for (boolean useSql : new boolean [] {true , false }) {
@@ -158,4 +159,41 @@ public void testTransactionIsolationLevel() {
158
159
SpannerPool .closeSpannerPool ();
159
160
}
160
161
}
162
+
163
+ @ Test
164
+ public void testSetTransactionIsolationLevel () {
165
+ SpannerPool .closeSpannerPool ();
166
+ mockSpanner .putStatementResult (
167
+ MockSpannerServiceImpl .StatementResult .detectDialectResult (Dialect .POSTGRESQL ));
168
+
169
+ try (Connection connection = super .createConnection ()) {
170
+ for (boolean autocommit : new boolean [] {true , false }) {
171
+ connection .setAutocommit (autocommit );
172
+
173
+ for (IsolationLevel isolationLevel :
174
+ new IsolationLevel [] {IsolationLevel .REPEATABLE_READ , IsolationLevel .SERIALIZABLE }) {
175
+ // Manually start a transaction if autocommit is enabled.
176
+ if (autocommit ) {
177
+ connection .execute (Statement .of ("begin" ));
178
+ }
179
+ connection .execute (
180
+ Statement .of (
181
+ "set transaction isolation level " + isolationLevel .name ().replace ("_" , " " )));
182
+ connection .executeUpdate (INSERT_STATEMENT );
183
+ connection .commit ();
184
+
185
+ assertEquals (1 , mockSpanner .countRequestsOfType (ExecuteSqlRequest .class ));
186
+ ExecuteSqlRequest request = mockSpanner .getRequestsOfType (ExecuteSqlRequest .class ).get (0 );
187
+ assertTrue (request .getTransaction ().hasBegin ());
188
+ assertTrue (request .getTransaction ().getBegin ().hasReadWrite ());
189
+ assertEquals (isolationLevel , request .getTransaction ().getBegin ().getIsolationLevel ());
190
+ assertFalse (request .getLastStatement ());
191
+ assertEquals (1 , mockSpanner .countRequestsOfType (CommitRequest .class ));
192
+
193
+ mockSpanner .clearRequests ();
194
+ }
195
+ }
196
+ }
197
+ SpannerPool .closeSpannerPool ();
198
+ }
161
199
}
0 commit comments