67
67
*/
68
68
@ RunWith (Parameterized .class )
69
69
public class ExecuteMockServerTest extends AbstractMockServerTest {
70
+ private static final IllegalStateException REQUEST_NOT_FOUND =
71
+ new IllegalStateException ("request not found" );
70
72
private static Dialect currentDialect ;
71
73
72
74
@ Parameters (name = "dialect = {0}" )
@@ -220,9 +222,27 @@ public void testStatementExecuteQuery() throws SQLException {
220
222
try (ResultSet resultSet = statement .executeQuery (query )) {
221
223
verifyResultSet (resultSet );
222
224
}
225
+ ExecuteSqlRequest request =
226
+ mockSpanner .getRequestsOfType (ExecuteSqlRequest .class ).stream ()
227
+ .filter (r -> r .getSql ().equals (query ))
228
+ .findAny ()
229
+ .orElseThrow (() -> REQUEST_NOT_FOUND );
230
+ assertTrue (request .getTransaction ().hasSingleUse ());
231
+ assertTrue (request .getTransaction ().getSingleUse ().hasReadOnly ());
232
+ assertFalse (request .getLastStatement ());
233
+
223
234
try (ResultSet resultSet = statement .executeQuery (dmlReturning )) {
224
235
verifyResultSet (resultSet );
225
236
}
237
+ request =
238
+ mockSpanner .getRequestsOfType (ExecuteSqlRequest .class ).stream ()
239
+ .filter (r -> r .getSql ().equals (dmlReturning ))
240
+ .findAny ()
241
+ .orElseThrow (() -> REQUEST_NOT_FOUND );
242
+ assertTrue (request .getTransaction ().hasBegin ());
243
+ assertTrue (request .getTransaction ().getBegin ().hasReadWrite ());
244
+ assertTrue (request .getLastStatement ());
245
+
226
246
try (ResultSet resultSet = statement .executeQuery (clientSideQuery )) {
227
247
verifyClientSideResultSet (resultSet );
228
248
}
@@ -238,6 +258,15 @@ public void testStatementExecuteUpdate() throws SQLException {
238
258
try (Connection connection = createJdbcConnection ();
239
259
Statement statement = connection .createStatement ()) {
240
260
assertEquals (1 , statement .executeUpdate (dml ));
261
+ ExecuteSqlRequest request =
262
+ mockSpanner .getRequestsOfType (ExecuteSqlRequest .class ).stream ()
263
+ .filter (r -> r .getSql ().equals (dml ))
264
+ .findAny ()
265
+ .orElseThrow (() -> REQUEST_NOT_FOUND );
266
+ assertTrue (request .getTransaction ().hasBegin ());
267
+ assertTrue (request .getTransaction ().getBegin ().hasReadWrite ());
268
+ assertTrue (request .getLastStatement ());
269
+
241
270
assertEquals (0 , statement .executeUpdate (DDL ));
242
271
243
272
connection .setAutoCommit (false );
@@ -257,6 +286,14 @@ public void testStatementExecuteUpdateReturnGeneratedKeys() throws SQLException
257
286
Statement statement = connection .createStatement ()) {
258
287
// TODO: Add tests for RETURN_GENERATED_KEYS when that is supported.
259
288
assertEquals (1 , statement .executeUpdate (dml , Statement .NO_GENERATED_KEYS ));
289
+ ExecuteSqlRequest request =
290
+ mockSpanner .getRequestsOfType (ExecuteSqlRequest .class ).stream ()
291
+ .findAny ()
292
+ .orElseThrow (() -> REQUEST_NOT_FOUND );
293
+ assertTrue (request .getTransaction ().hasBegin ());
294
+ assertTrue (request .getTransaction ().getBegin ().hasReadWrite ());
295
+ assertTrue (request .getLastStatement ());
296
+
260
297
assertEquals (0 , statement .executeUpdate (DDL , Statement .NO_GENERATED_KEYS ));
261
298
assertEquals (0 , statement .executeUpdate (clientSideUpdate , Statement .NO_GENERATED_KEYS ));
262
299
@@ -272,6 +309,14 @@ public void testStatementExecuteUpdateReturnColumnNames() throws SQLException {
272
309
try (Connection connection = createJdbcConnection ();
273
310
Statement statement = connection .createStatement ()) {
274
311
assertEquals (1 , statement .executeUpdate (dml , new String [] {"id" }));
312
+ ExecuteSqlRequest request =
313
+ mockSpanner .getRequestsOfType (ExecuteSqlRequest .class ).stream ()
314
+ .findAny ()
315
+ .orElseThrow (() -> REQUEST_NOT_FOUND );
316
+ assertTrue (request .getTransaction ().hasBegin ());
317
+ assertTrue (request .getTransaction ().getBegin ().hasReadWrite ());
318
+ assertTrue (request .getLastStatement ());
319
+
275
320
assertEquals (0 , statement .executeUpdate (DDL , new String [] {"id" }));
276
321
assertEquals (0 , statement .executeUpdate (clientSideUpdate , new String [] {"id" }));
277
322
@@ -290,6 +335,14 @@ public void testStatementExecuteUpdateReturnColumnIndexes() throws SQLException
290
335
try (Connection connection = createJdbcConnection ();
291
336
Statement statement = connection .createStatement ()) {
292
337
assertEquals (1 , statement .executeUpdate (dml , new int [] {1 }));
338
+ ExecuteSqlRequest request =
339
+ mockSpanner .getRequestsOfType (ExecuteSqlRequest .class ).stream ()
340
+ .findAny ()
341
+ .orElseThrow (() -> REQUEST_NOT_FOUND );
342
+ assertTrue (request .getTransaction ().hasBegin ());
343
+ assertTrue (request .getTransaction ().getBegin ().hasReadWrite ());
344
+ assertTrue (request .getLastStatement ());
345
+
293
346
assertEquals (0 , statement .executeUpdate (DDL , new int [] {1 }));
294
347
assertEquals (0 , statement .executeUpdate (clientSideUpdate , new int [] {1 }));
295
348
verifyOverflow (() -> statement .executeUpdate (largeDml , new int [] {1 }));
@@ -304,6 +357,14 @@ public void testStatementLargeExecuteUpdate() throws SQLException {
304
357
try (Connection connection = createJdbcConnection ();
305
358
Statement statement = connection .createStatement ()) {
306
359
assertEquals (1L , statement .executeLargeUpdate (dml ));
360
+ ExecuteSqlRequest request =
361
+ mockSpanner .getRequestsOfType (ExecuteSqlRequest .class ).stream ()
362
+ .findAny ()
363
+ .orElseThrow (() -> REQUEST_NOT_FOUND );
364
+ assertTrue (request .getTransaction ().hasBegin ());
365
+ assertTrue (request .getTransaction ().getBegin ().hasReadWrite ());
366
+ assertTrue (request .getLastStatement ());
367
+
307
368
assertEquals (0L , statement .executeLargeUpdate (DDL ));
308
369
assertEquals (0L , statement .executeLargeUpdate (clientSideUpdate ));
309
370
assertEquals (LARGE_UPDATE_COUNT , statement .executeLargeUpdate (largeDml ));
@@ -319,6 +380,14 @@ public void testStatementExecuteLargeUpdateReturnGeneratedKeys() throws SQLExcep
319
380
Statement statement = connection .createStatement ()) {
320
381
// TODO: Add tests for RETURN_GENERATED_KEYS when that is supported.
321
382
assertEquals (1 , statement .executeLargeUpdate (dml , Statement .NO_GENERATED_KEYS ));
383
+ ExecuteSqlRequest request =
384
+ mockSpanner .getRequestsOfType (ExecuteSqlRequest .class ).stream ()
385
+ .findAny ()
386
+ .orElseThrow (() -> REQUEST_NOT_FOUND );
387
+ assertTrue (request .getTransaction ().hasBegin ());
388
+ assertTrue (request .getTransaction ().getBegin ().hasReadWrite ());
389
+ assertTrue (request .getLastStatement ());
390
+
322
391
assertEquals (0 , statement .executeLargeUpdate (DDL , Statement .NO_GENERATED_KEYS ));
323
392
assertEquals (0 , statement .executeLargeUpdate (clientSideUpdate , Statement .NO_GENERATED_KEYS ));
324
393
assertEquals (
@@ -871,14 +940,13 @@ public void testExecuteAutoBatchDml() throws SQLException {
871
940
assertEquals (3 , request .getStatementsCount ());
872
941
assertEquals (1 , mockSpanner .countRequestsOfType (CommitRequest .class ));
873
942
}
874
-
943
+
875
944
@ Test
876
945
public void testLastStatement_AutoCommit_Query () throws SQLException {
877
946
try (Connection connection = createJdbcConnection ();
878
947
Statement statement = connection .createStatement ()) {
879
948
//noinspection EmptyTryBlock
880
- try (ResultSet ignore = statement .executeQuery (query )) {
881
- }
949
+ try (ResultSet ignore = statement .executeQuery (query )) {}
882
950
}
883
951
assertEquals (1 , mockSpanner .countRequestsOfType (ExecuteSqlRequest .class ));
884
952
assertFalse (mockSpanner .getRequestsOfType (ExecuteSqlRequest .class ).get (0 ).getLastStatement ());
@@ -899,8 +967,7 @@ public void testLastStatement_AutoCommit_DmlReturning() throws SQLException {
899
967
try (Connection connection = createJdbcConnection ();
900
968
Statement statement = connection .createStatement ()) {
901
969
//noinspection EmptyTryBlock
902
- try (ResultSet ignore = statement .executeQuery (dmlReturning )) {
903
- }
970
+ try (ResultSet ignore = statement .executeQuery (dmlReturning )) {}
904
971
}
905
972
assertEquals (1 , mockSpanner .countRequestsOfType (ExecuteSqlRequest .class ));
906
973
assertTrue (mockSpanner .getRequestsOfType (ExecuteSqlRequest .class ).get (0 ).getLastStatement ());
@@ -915,7 +982,8 @@ public void testLastStatement_AutoCommit_BatchDml() throws SQLException {
915
982
statement .executeBatch ();
916
983
}
917
984
assertEquals (1 , mockSpanner .countRequestsOfType (ExecuteBatchDmlRequest .class ));
918
- assertTrue (mockSpanner .getRequestsOfType (ExecuteBatchDmlRequest .class ).get (0 ).getLastStatements ());
985
+ assertTrue (
986
+ mockSpanner .getRequestsOfType (ExecuteBatchDmlRequest .class ).get (0 ).getLastStatements ());
919
987
}
920
988
921
989
@ Test
@@ -924,8 +992,7 @@ public void testLastStatement_Transaction_Query() throws SQLException {
924
992
Statement statement = connection .createStatement ()) {
925
993
connection .setAutoCommit (false );
926
994
//noinspection EmptyTryBlock
927
- try (ResultSet ignore = statement .executeQuery (query )) {
928
- }
995
+ try (ResultSet ignore = statement .executeQuery (query )) {}
929
996
connection .commit ();
930
997
}
931
998
assertEquals (1 , mockSpanner .countRequestsOfType (ExecuteSqlRequest .class ));
@@ -950,8 +1017,7 @@ public void testLastStatement_Transaction_DmlReturning() throws SQLException {
950
1017
Statement statement = connection .createStatement ()) {
951
1018
connection .setAutoCommit (false );
952
1019
//noinspection EmptyTryBlock
953
- try (ResultSet ignore = statement .executeQuery (dmlReturning )) {
954
- }
1020
+ try (ResultSet ignore = statement .executeQuery (dmlReturning )) {}
955
1021
connection .commit ();
956
1022
}
957
1023
assertEquals (1 , mockSpanner .countRequestsOfType (ExecuteSqlRequest .class ));
@@ -969,6 +1035,7 @@ public void testLastStatement_Transaction_BatchDml() throws SQLException {
969
1035
connection .commit ();
970
1036
}
971
1037
assertEquals (1 , mockSpanner .countRequestsOfType (ExecuteBatchDmlRequest .class ));
972
- assertFalse (mockSpanner .getRequestsOfType (ExecuteBatchDmlRequest .class ).get (0 ).getLastStatements ());
1038
+ assertFalse (
1039
+ mockSpanner .getRequestsOfType (ExecuteBatchDmlRequest .class ).get (0 ).getLastStatements ());
973
1040
}
974
1041
}
0 commit comments