6767 */
6868@ RunWith (Parameterized .class )
6969public class ExecuteMockServerTest extends AbstractMockServerTest {
70+ private static final IllegalStateException REQUEST_NOT_FOUND =
71+ new IllegalStateException ("request not found" );
7072 private static Dialect currentDialect ;
7173
7274 @ Parameters (name = "dialect = {0}" )
@@ -220,9 +222,27 @@ public void testStatementExecuteQuery() throws SQLException {
220222 try (ResultSet resultSet = statement .executeQuery (query )) {
221223 verifyResultSet (resultSet );
222224 }
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+
223234 try (ResultSet resultSet = statement .executeQuery (dmlReturning )) {
224235 verifyResultSet (resultSet );
225236 }
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+
226246 try (ResultSet resultSet = statement .executeQuery (clientSideQuery )) {
227247 verifyClientSideResultSet (resultSet );
228248 }
@@ -238,6 +258,15 @@ public void testStatementExecuteUpdate() throws SQLException {
238258 try (Connection connection = createJdbcConnection ();
239259 Statement statement = connection .createStatement ()) {
240260 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+
241270 assertEquals (0 , statement .executeUpdate (DDL ));
242271
243272 connection .setAutoCommit (false );
@@ -257,6 +286,14 @@ public void testStatementExecuteUpdateReturnGeneratedKeys() throws SQLException
257286 Statement statement = connection .createStatement ()) {
258287 // TODO: Add tests for RETURN_GENERATED_KEYS when that is supported.
259288 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+
260297 assertEquals (0 , statement .executeUpdate (DDL , Statement .NO_GENERATED_KEYS ));
261298 assertEquals (0 , statement .executeUpdate (clientSideUpdate , Statement .NO_GENERATED_KEYS ));
262299
@@ -272,6 +309,14 @@ public void testStatementExecuteUpdateReturnColumnNames() throws SQLException {
272309 try (Connection connection = createJdbcConnection ();
273310 Statement statement = connection .createStatement ()) {
274311 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+
275320 assertEquals (0 , statement .executeUpdate (DDL , new String [] {"id" }));
276321 assertEquals (0 , statement .executeUpdate (clientSideUpdate , new String [] {"id" }));
277322
@@ -290,6 +335,14 @@ public void testStatementExecuteUpdateReturnColumnIndexes() throws SQLException
290335 try (Connection connection = createJdbcConnection ();
291336 Statement statement = connection .createStatement ()) {
292337 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+
293346 assertEquals (0 , statement .executeUpdate (DDL , new int [] {1 }));
294347 assertEquals (0 , statement .executeUpdate (clientSideUpdate , new int [] {1 }));
295348 verifyOverflow (() -> statement .executeUpdate (largeDml , new int [] {1 }));
@@ -304,6 +357,14 @@ public void testStatementLargeExecuteUpdate() throws SQLException {
304357 try (Connection connection = createJdbcConnection ();
305358 Statement statement = connection .createStatement ()) {
306359 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+
307368 assertEquals (0L , statement .executeLargeUpdate (DDL ));
308369 assertEquals (0L , statement .executeLargeUpdate (clientSideUpdate ));
309370 assertEquals (LARGE_UPDATE_COUNT , statement .executeLargeUpdate (largeDml ));
@@ -319,6 +380,14 @@ public void testStatementExecuteLargeUpdateReturnGeneratedKeys() throws SQLExcep
319380 Statement statement = connection .createStatement ()) {
320381 // TODO: Add tests for RETURN_GENERATED_KEYS when that is supported.
321382 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+
322391 assertEquals (0 , statement .executeLargeUpdate (DDL , Statement .NO_GENERATED_KEYS ));
323392 assertEquals (0 , statement .executeLargeUpdate (clientSideUpdate , Statement .NO_GENERATED_KEYS ));
324393 assertEquals (
@@ -871,14 +940,13 @@ public void testExecuteAutoBatchDml() throws SQLException {
871940 assertEquals (3 , request .getStatementsCount ());
872941 assertEquals (1 , mockSpanner .countRequestsOfType (CommitRequest .class ));
873942 }
874-
943+
875944 @ Test
876945 public void testLastStatement_AutoCommit_Query () throws SQLException {
877946 try (Connection connection = createJdbcConnection ();
878947 Statement statement = connection .createStatement ()) {
879948 //noinspection EmptyTryBlock
880- try (ResultSet ignore = statement .executeQuery (query )) {
881- }
949+ try (ResultSet ignore = statement .executeQuery (query )) {}
882950 }
883951 assertEquals (1 , mockSpanner .countRequestsOfType (ExecuteSqlRequest .class ));
884952 assertFalse (mockSpanner .getRequestsOfType (ExecuteSqlRequest .class ).get (0 ).getLastStatement ());
@@ -899,8 +967,7 @@ public void testLastStatement_AutoCommit_DmlReturning() throws SQLException {
899967 try (Connection connection = createJdbcConnection ();
900968 Statement statement = connection .createStatement ()) {
901969 //noinspection EmptyTryBlock
902- try (ResultSet ignore = statement .executeQuery (dmlReturning )) {
903- }
970+ try (ResultSet ignore = statement .executeQuery (dmlReturning )) {}
904971 }
905972 assertEquals (1 , mockSpanner .countRequestsOfType (ExecuteSqlRequest .class ));
906973 assertTrue (mockSpanner .getRequestsOfType (ExecuteSqlRequest .class ).get (0 ).getLastStatement ());
@@ -915,7 +982,8 @@ public void testLastStatement_AutoCommit_BatchDml() throws SQLException {
915982 statement .executeBatch ();
916983 }
917984 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 ());
919987 }
920988
921989 @ Test
@@ -924,8 +992,7 @@ public void testLastStatement_Transaction_Query() throws SQLException {
924992 Statement statement = connection .createStatement ()) {
925993 connection .setAutoCommit (false );
926994 //noinspection EmptyTryBlock
927- try (ResultSet ignore = statement .executeQuery (query )) {
928- }
995+ try (ResultSet ignore = statement .executeQuery (query )) {}
929996 connection .commit ();
930997 }
931998 assertEquals (1 , mockSpanner .countRequestsOfType (ExecuteSqlRequest .class ));
@@ -950,8 +1017,7 @@ public void testLastStatement_Transaction_DmlReturning() throws SQLException {
9501017 Statement statement = connection .createStatement ()) {
9511018 connection .setAutoCommit (false );
9521019 //noinspection EmptyTryBlock
953- try (ResultSet ignore = statement .executeQuery (dmlReturning )) {
954- }
1020+ try (ResultSet ignore = statement .executeQuery (dmlReturning )) {}
9551021 connection .commit ();
9561022 }
9571023 assertEquals (1 , mockSpanner .countRequestsOfType (ExecuteSqlRequest .class ));
@@ -969,6 +1035,7 @@ public void testLastStatement_Transaction_BatchDml() throws SQLException {
9691035 connection .commit ();
9701036 }
9711037 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 ());
9731040 }
9741041}
0 commit comments