@@ -201,7 +201,17 @@ public void asyncRunnerUpdateAbortedWithoutGettingResult() throws Exception {
201201 executor );
202202 assertThat (result .get ()).isNull ();
203203 assertThat (attempt .get ()).isEqualTo (2 );
204- if (isMultiplexedSessionsEnabled ()) {
204+ if (isMultiplexedSessionsEnabledForRW ()) {
205+ assertThat (mockSpanner .getRequestTypes ())
206+ .containsExactly (
207+ CreateSessionRequest .class ,
208+ ExecuteSqlRequest .class ,
209+ // The retry will use an explicit BeginTransaction RPC because the first statement of
210+ // the transaction did not return a transaction id during the initial attempt.
211+ BeginTransactionRequest .class ,
212+ ExecuteSqlRequest .class ,
213+ CommitRequest .class );
214+ } else if (isMultiplexedSessionsEnabled ()) {
205215 assertThat (mockSpanner .getRequestTypes ())
206216 .containsExactly (
207217 CreateSessionRequest .class ,
@@ -260,7 +270,11 @@ public void asyncRunnerWaitsUntilAsyncUpdateHasFinished() throws Exception {
260270 },
261271 executor );
262272 res .get ();
263- if (isMultiplexedSessionsEnabled ()) {
273+ if (isMultiplexedSessionsEnabledForRW ()) {
274+ assertThat (mockSpanner .getRequestTypes ())
275+ .containsAtLeast (
276+ CreateSessionRequest .class , ExecuteSqlRequest .class , CommitRequest .class );
277+ } else if (isMultiplexedSessionsEnabled ()) {
264278 // The mock server could have received a CreateSession request for a multiplexed session, but
265279 // it could also be that that request has not yet reached the server.
266280 assertThat (mockSpanner .getRequestTypes ())
@@ -404,7 +418,17 @@ public void asyncRunnerBatchUpdateAbortedWithoutGettingResult() throws Exception
404418 executor );
405419 assertThat (result .get ()).isNull ();
406420 assertThat (attempt .get ()).isEqualTo (2 );
407- if (isMultiplexedSessionsEnabled ()) {
421+ if (isMultiplexedSessionsEnabledForRW ()) {
422+ assertThat (mockSpanner .getRequestTypes ())
423+ .containsExactly (
424+ CreateSessionRequest .class ,
425+ ExecuteSqlRequest .class ,
426+ ExecuteBatchDmlRequest .class ,
427+ CommitRequest .class ,
428+ ExecuteSqlRequest .class ,
429+ ExecuteBatchDmlRequest .class ,
430+ CommitRequest .class );
431+ } else if (isMultiplexedSessionsEnabled ()) {
408432 assertThat (mockSpanner .getRequestTypes ())
409433 .containsExactly (
410434 CreateSessionRequest .class ,
@@ -463,7 +487,11 @@ public void asyncRunnerWaitsUntilAsyncBatchUpdateHasFinished() throws Exception
463487 },
464488 executor );
465489 res .get ();
466- if (isMultiplexedSessionsEnabled ()) {
490+ if (isMultiplexedSessionsEnabledForRW ()) {
491+ assertThat (mockSpanner .getRequestTypes ())
492+ .containsExactly (
493+ CreateSessionRequest .class , ExecuteBatchDmlRequest .class , CommitRequest .class );
494+ } else if (isMultiplexedSessionsEnabled ()) {
467495 assertThat (mockSpanner .getRequestTypes ())
468496 .containsExactly (
469497 CreateSessionRequest .class ,
@@ -576,4 +604,11 @@ private boolean isMultiplexedSessionsEnabled() {
576604 }
577605 return spanner .getOptions ().getSessionPoolOptions ().getUseMultiplexedSession ();
578606 }
607+
608+ private boolean isMultiplexedSessionsEnabledForRW () {
609+ if (spanner .getOptions () == null || spanner .getOptions ().getSessionPoolOptions () == null ) {
610+ return false ;
611+ }
612+ return spanner .getOptions ().getSessionPoolOptions ().getUseMultiplexedSessionForRW ();
613+ }
579614}
0 commit comments