test(spanner): fix retry unit tests with RESOURCE_EXHAUSTED errors (#10117)
* test(spanner): fix retry unit tests with RESOURCE_EXHAUSTED errors
* fix comments
diff --git a/spanner/client_test.go b/spanner/client_test.go
index 2dea747..61915b8 100644
--- a/spanner/client_test.go
+++ b/spanner/client_test.go
@@ -3989,7 +3989,6 @@
}
func TestClient_CallOptions(t *testing.T) {
- t.Skip("https://github.com/googleapis/google-cloud-go/issues/10069")
t.Parallel()
co := &vkit.CallOptions{
CreateSession: []gax.CallOption{
@@ -4016,7 +4015,7 @@
cs := &gax.CallSettings{}
// This is the default retry setting.
c.CallOptions.CreateSession[1].Resolve(cs)
- if got, want := fmt.Sprintf("%v", cs.Retry()), "&{{250000000 32000000000 1.3 0} [14]}"; got != want {
+ if got, want := fmt.Sprintf("%v", cs.Retry()), "&{{250000000 32000000000 1.3 0} [14 8]}"; got != want {
t.Fatalf("merged CallOptions is incorrect: got %v, want %v", got, want)
}
diff --git a/spanner/internal/testutil/inmem_spanner_server.go b/spanner/internal/testutil/inmem_spanner_server.go
index a85f028..968f109 100644
--- a/spanner/internal/testutil/inmem_spanner_server.go
+++ b/spanner/internal/testutil/inmem_spanner_server.go
@@ -730,8 +730,9 @@
sessionsToCreate := req.SessionCount
s.mu.Lock()
defer s.mu.Unlock()
+ // return a non-retryable error if the limit is reached
if s.maxSessionsReturnedByServerInTotal > int32(0) && int32(len(s.sessions)) >= s.maxSessionsReturnedByServerInTotal {
- return nil, gstatus.Error(codes.ResourceExhausted, "No more sessions available")
+ return nil, gstatus.Error(codes.OutOfRange, "No more sessions available")
}
if sessionsToCreate > s.maxSessionsReturnedByServerPerBatchRequest {
sessionsToCreate = s.maxSessionsReturnedByServerPerBatchRequest
diff --git a/spanner/sessionclient_test.go b/spanner/sessionclient_test.go
index 34afa96..02234ee 100644
--- a/spanner/sessionclient_test.go
+++ b/spanner/sessionclient_test.go
@@ -424,7 +424,6 @@
}
func TestBatchCreateSessions_ServerExhausted(t *testing.T) {
- t.Skip("https://github.com/googleapis/google-cloud-go/issues/10070")
t.Parallel()
numChannels := 4
@@ -443,12 +442,12 @@
consumer := newTestConsumer(numSessions)
client.sc.batchCreateSessions(numSessions, true, consumer)
<-consumer.receivedAll
- // Session creation should end with at least one RESOURCE_EXHAUSTED error.
+ // Session creation should end with at least one non-retryable error.
if len(consumer.errors) == 0 {
t.Fatalf("Error count mismatch\nGot: %d\nWant: > %d", len(consumer.errors), 0)
}
for _, e := range consumer.errors {
- if g, w := status.Code(e.err), codes.ResourceExhausted; g != w {
+ if g, w := status.Code(e.err), codes.OutOfRange; g != w {
t.Fatalf("Error code mismath\nGot: %v\nWant: %v", g, w)
}
}