Skip to content

Commit a03d3ea

Browse files
fix(spanner): Fix unit tests for Partitioned Query and Partitioned DML Multiplexed support launch.
1 parent 606e272 commit a03d3ea

File tree

3 files changed

+25
-23
lines changed

3 files changed

+25
-23
lines changed

google-cloud-spanner/src/test/java/com/google/cloud/spanner/BatchClientImplTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ public void setUp() {
102102
@SuppressWarnings("resource")
103103
SpannerImpl spanner = new SpannerImpl(gapicRpc, spannerOptions);
104104
client = new BatchClientImpl(spanner.getSessionClient(db), isMultiplexedSession);
105+
BatchClientImpl.unimplementedForPartitionedOps.set(false);
105106
}
106107

107108
@SuppressWarnings("unchecked")

google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractMockServerTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,14 @@ boolean isMultiplexedSessionsEnabled(Spanner spanner) {
328328
return spanner.getOptions().getSessionPoolOptions().getUseMultiplexedSession();
329329
}
330330

331+
boolean isMultiplexedSessionsEnabledForPartitionedOps(Spanner spanner) {
332+
if (spanner.getOptions() == null || spanner.getOptions().getSessionPoolOptions() == null) {
333+
return false;
334+
}
335+
return spanner.getOptions().getSessionPoolOptions().getUseMultiplexedSessionPartitionedOps()
336+
&& spanner.getOptions().getSessionPoolOptions().getUseMultiplexedSession();
337+
}
338+
331339
boolean isMultiplexedSessionsEnabledForRW(Spanner spanner) {
332340
if (spanner.getOptions() == null || spanner.getOptions().getSessionPoolOptions() == null) {
333341
return false;

google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/PartitionedQueryMockServerTest.java

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,7 @@ public void testPartitionQuery() {
9393
assertFalse(resultSet.next());
9494
}
9595
}
96-
if (isMultiplexedSessionsEnabled(connection.getSpanner())) {
97-
assertEquals(3, mockSpanner.countRequestsOfType(CreateSessionRequest.class));
98-
} else {
99-
assertEquals(2, mockSpanner.countRequestsOfType(CreateSessionRequest.class));
100-
}
96+
assertEquals(2, mockSpanner.countRequestsOfType(CreateSessionRequest.class));
10197
}
10298
assertEquals(2, mockSpanner.countRequestsOfType(BeginTransactionRequest.class));
10399
assertEquals(2, mockSpanner.countRequestsOfType(PartitionQueryRequest.class));
@@ -155,11 +151,7 @@ public void testMixNormalAndPartitionQueryInReadOnlyTransaction() {
155151
readTimestamps.add(connection.getReadTimestamp());
156152
connection.commit();
157153
}
158-
if (isMultiplexedSessionsEnabled(connection.getSpanner())) {
159-
assertEquals(3, mockSpanner.countRequestsOfType(CreateSessionRequest.class));
160-
} else {
161-
assertEquals(2, mockSpanner.countRequestsOfType(CreateSessionRequest.class));
162-
}
154+
assertEquals(2, mockSpanner.countRequestsOfType(CreateSessionRequest.class));
163155
}
164156
// The above will start two transactions:
165157
// 1. The initial 'normal' read-only transaction.
@@ -228,6 +220,10 @@ public void testRunPartition() {
228220
if (createSessionRequestCounts == expectedCreateSessionsRPC + 1) {
229221
isMultiplexedSessionCreated = true;
230222
}
223+
} else if (isMultiplexedSessionsEnabledForPartitionedOps(connection.getSpanner())
224+
&& isMultiplexedSessionCreated) {
225+
// When multiplexed session will be reused for each iteration.
226+
assertEquals(0, mockSpanner.countRequestsOfType(CreateSessionRequest.class));
231227
} else {
232228
assertEquals(
233229
expectedCreateSessionsRPC,
@@ -261,6 +257,7 @@ public void testRunPartitionUsingSql() {
261257
String prefix = dialect == Dialect.POSTGRESQL ? "spanner." : "";
262258

263259
int maxPartitions = 5;
260+
boolean isMultiplexedSessionCreated = false;
264261
try (Connection connection = createConnection()) {
265262
connection.execute(Statement.of("set autocommit=true"));
266263
assertTrue(connection.isAutocommit());
@@ -284,7 +281,6 @@ public void testRunPartitionUsingSql() {
284281
assertFalse(resultSet.next());
285282
}
286283

287-
boolean isMultiplexedSessionCreated = false;
288284
for (boolean useLiteral : new boolean[] {true, false}) {
289285
try (ResultSet partitions =
290286
connection.executeQuery(
@@ -328,6 +324,10 @@ public void testRunPartitionUsingSql() {
328324
if (createSessionRequestCounts == expectedCreateSessionsRPC + 1) {
329325
isMultiplexedSessionCreated = true;
330326
}
327+
} else if (isMultiplexedSessionsEnabledForPartitionedOps(connection.getSpanner())
328+
&& isMultiplexedSessionCreated) {
329+
// When multiplexed session will be reused for each iteration.
330+
assertEquals(0, mockSpanner.countRequestsOfType(CreateSessionRequest.class));
331331
} else {
332332
assertEquals(
333333
expectedCreateSessionsRPC,
@@ -570,11 +570,7 @@ public void testRunPartitionedQueryUsingSql() {
570570
assertEquals(maxPartitions * generatedRowCount, rowCount);
571571
}
572572
}
573-
if (isMultiplexedSessionsEnabled(connection.getSpanner())) {
574-
assertEquals(3, mockSpanner.countRequestsOfType(CreateSessionRequest.class));
575-
} else {
576-
assertEquals(2, mockSpanner.countRequestsOfType(CreateSessionRequest.class));
577-
}
573+
assertEquals(2, mockSpanner.countRequestsOfType(CreateSessionRequest.class));
578574
}
579575
// We have 2 requests of each, as we run the query with data boost both enabled and disabled.
580576
assertEquals(2, mockSpanner.countRequestsOfType(BeginTransactionRequest.class));
@@ -679,8 +675,8 @@ public void testRunPartitionedQueryWithMaxParallelism() {
679675
assertEquals(maxPartitions * generatedRowCount, rowCount);
680676
}
681677
}
682-
if (isMultiplexedSessionsEnabled(connection.getSpanner())) {
683-
assertEquals(6, mockSpanner.countRequestsOfType(CreateSessionRequest.class));
678+
if (isMultiplexedSessionsEnabledForPartitionedOps(connection.getSpanner())) {
679+
assertEquals(2, mockSpanner.countRequestsOfType(CreateSessionRequest.class));
684680
} else {
685681
assertEquals(5, mockSpanner.countRequestsOfType(CreateSessionRequest.class));
686682
}
@@ -758,11 +754,8 @@ public void testAutoPartitionMode() {
758754
exception
759755
.getMessage()
760756
.contains("Partition query is not supported for read/write transaction"));
761-
if (isMultiplexedSessionsEnabled(connection.getSpanner())) {
762-
assertEquals(3, mockSpanner.countRequestsOfType(CreateSessionRequest.class));
763-
} else {
764-
assertEquals(2, mockSpanner.countRequestsOfType(CreateSessionRequest.class));
765-
}
757+
758+
assertEquals(2, mockSpanner.countRequestsOfType(CreateSessionRequest.class));
766759
}
767760
assertEquals(2, mockSpanner.countRequestsOfType(BeginTransactionRequest.class));
768761
assertEquals(2, mockSpanner.countRequestsOfType(PartitionQueryRequest.class));

0 commit comments

Comments
 (0)