Skip to content

Commit 4912eac

Browse files
committed
speed up tests
1 parent 7811ab0 commit 4912eac

2 files changed

Lines changed: 40 additions & 15 deletions

File tree

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

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
import java.util.concurrent.TimeUnit;
5656
import java.util.concurrent.atomic.AtomicInteger;
5757
import org.junit.AfterClass;
58+
import org.junit.Before;
5859
import org.junit.BeforeClass;
5960
import org.junit.Test;
6061
import org.junit.runner.RunWith;
@@ -82,27 +83,40 @@ public class LocationAwareSharedBackendReplicaHarnessTest {
8283
.build())
8384
.build())
8485
.build();
86+
private static SharedBackendReplicaHarness harness;
8587

8688
@BeforeClass
87-
public static void enableLocationAwareRouting() {
89+
public static void enableLocationAwareRouting() throws Exception {
8890
SpannerOptions.useEnvironment(
8991
new SpannerOptions.SpannerEnvironment() {
9092
@Override
9193
public boolean isEnableLocationApi() {
9294
return true;
9395
}
9496
});
97+
harness = SharedBackendReplicaHarness.create(2);
98+
}
99+
100+
@Before
101+
public void resetHarness() {
102+
harness.reset();
95103
}
96104

97105
@AfterClass
98-
public static void restoreEnvironment() {
99-
SpannerOptions.useDefaultEnvironment();
106+
public static void restoreEnvironment() throws Exception {
107+
try {
108+
if (harness != null) {
109+
harness.close();
110+
}
111+
} finally {
112+
harness = null;
113+
SpannerOptions.useDefaultEnvironment();
114+
}
100115
}
101116

102117
@Test
103118
public void singleUseReadReroutesOnResourceExhaustedForBypassTraffic() throws Exception {
104-
try (SharedBackendReplicaHarness harness = SharedBackendReplicaHarness.create(2);
105-
Spanner spanner = createSpanner(harness)) {
119+
try (Spanner spanner = createSpanner(harness)) {
106120
configureBackend(harness, singleRowReadResultSet("b"));
107121
DatabaseClient client = spanner.getDatabaseClient(DatabaseId.of(PROJECT, INSTANCE, DATABASE));
108122

@@ -173,8 +187,7 @@ public void singleUseReadReroutesOnResourceExhaustedForBypassTraffic() throws Ex
173187

174188
@Test
175189
public void singleUseReadCooldownSkipsReplicaOnNextRequestForBypassTraffic() throws Exception {
176-
try (SharedBackendReplicaHarness harness = SharedBackendReplicaHarness.create(2);
177-
Spanner spanner = createSpanner(harness)) {
190+
try (Spanner spanner = createSpanner(harness)) {
178191
configureBackend(harness, singleRowReadResultSet("b"));
179192
DatabaseClient client = spanner.getDatabaseClient(DatabaseId.of(PROJECT, INSTANCE, DATABASE));
180193

@@ -260,8 +273,7 @@ public void singleUseReadCooldownSkipsReplicaOnNextRequestForBypassTraffic() thr
260273

261274
@Test
262275
public void singleUseReadReroutesOnUnavailableForBypassTraffic() throws Exception {
263-
try (SharedBackendReplicaHarness harness = SharedBackendReplicaHarness.create(2);
264-
Spanner spanner = createSpanner(harness)) {
276+
try (Spanner spanner = createSpanner(harness)) {
265277
configureBackend(harness, singleRowReadResultSet("b"));
266278
DatabaseClient client = spanner.getDatabaseClient(DatabaseId.of(PROJECT, INSTANCE, DATABASE));
267279

@@ -332,8 +344,7 @@ public void singleUseReadReroutesOnUnavailableForBypassTraffic() throws Exceptio
332344
@Test
333345
public void singleUseReadCooldownSkipsUnavailableReplicaOnNextRequestForBypassTraffic()
334346
throws Exception {
335-
try (SharedBackendReplicaHarness harness = SharedBackendReplicaHarness.create(2);
336-
Spanner spanner = createSpanner(harness)) {
347+
try (Spanner spanner = createSpanner(harness)) {
337348
configureBackend(harness, singleRowReadResultSet("b"));
338349
DatabaseClient client = spanner.getDatabaseClient(DatabaseId.of(PROJECT, INSTANCE, DATABASE));
339350

@@ -419,8 +430,7 @@ public void singleUseReadCooldownSkipsUnavailableReplicaOnNextRequestForBypassTr
419430
@Test
420431
public void singleUseReadMidStreamRecvFailureWithoutRetryInfoRetriesForBypassTraffic()
421432
throws Exception {
422-
try (SharedBackendReplicaHarness harness = SharedBackendReplicaHarness.create(2);
423-
Spanner spanner = createSpanner(harness)) {
433+
try (Spanner spanner = createSpanner(harness)) {
424434
configureBackend(harness, multiRowReadResultSet("b", "c", "d"));
425435
DatabaseClient client = spanner.getDatabaseClient(DatabaseId.of(PROJECT, INSTANCE, DATABASE));
426436

@@ -501,8 +511,7 @@ public void singleUseReadMidStreamRecvFailureWithoutRetryInfoRetriesForBypassTra
501511
@Test
502512
public void readWriteTransactionAbortedCommitUsesReadAffinityReplicaForBypassTraffic()
503513
throws Exception {
504-
try (SharedBackendReplicaHarness harness = SharedBackendReplicaHarness.create(2);
505-
Spanner spanner = createSpanner(harness)) {
514+
try (Spanner spanner = createSpanner(harness)) {
506515
configureBackend(harness, singleRowReadResultSet("b"), /* leaderReplicaIndex= */ 1);
507516
DatabaseClient client = spanner.getDatabaseClient(DatabaseId.of(PROJECT, INSTANCE, DATABASE));
508517

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,10 @@ synchronized void clearRequests() {
9797
requestIds.clear();
9898
}
9999

100+
synchronized void clearMethodErrors() {
101+
methodErrors.clear();
102+
}
103+
100104
private synchronized void recordRequest(String method, AbstractMessage request) {
101105
requests.computeIfAbsent(method, ignored -> new ArrayList<>()).add(request);
102106
}
@@ -287,6 +291,18 @@ void clearRequests() {
287291
}
288292
}
289293

294+
void reset() {
295+
backend.reset();
296+
backend.removeAllExecutionTimes();
297+
backend.setAbortProbability(0.0D);
298+
defaultReplica.clearRequests();
299+
defaultReplica.clearMethodErrors();
300+
for (HookedReplicaSpannerService replica : replicas) {
301+
replica.clearRequests();
302+
replica.clearMethodErrors();
303+
}
304+
}
305+
290306
@Override
291307
public void close() throws IOException {
292308
IOException failure = null;

0 commit comments

Comments
 (0)