private async Task <bool> InitializeInstanceAsync() { InstanceAdminClient instanceAdminClient = await InstanceAdminClient.CreateAsync(); InstanceName instanceName = InstanceName.FromProjectInstance(ProjectId, InstanceId); try { Instance response = await instanceAdminClient.GetInstanceAsync(instanceName); return(true); } catch (RpcException ex) when(ex.Status.StatusCode == StatusCode.NotFound) { CreateInstanceSample createInstanceSample = new CreateInstanceSample(); await SafeCreateInstanceAsync(() => Task.FromResult(createInstanceSample.CreateInstance(ProjectId, InstanceId))); return(false); } }
public void TestCreateInstance() { CreateInstanceSample createInstanceSample = new CreateInstanceSample(); RpcException exception; int attempt = 0; while (true) { // Instance already exists since it was created in the test setup so it should throw an exception. exception = Assert.Throws <RpcException>(() => createInstanceSample.CreateInstance(_spannerFixture.ProjectId, _spannerFixture.InstanceId)); attempt++; // Retry the test if we get a temporary Unavailable error. if (StatusCode.Unavailable == exception.StatusCode && attempt < MaxAttempts) { var delay = ExtractRetryDelay(exception); Thread.Sleep(delay.Milliseconds); continue; } break; } Assert.Equal(StatusCode.AlreadyExists, exception.StatusCode); }