Esempio n. 1
0
    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);
    }