internal async Task EnsureTableProvisionAsync(
            bool isCircuitBreakerTripped,
            TableAutoscalingConfigurationSet configuration,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            cancellationToken.ThrowIfCancellationRequested();

            var tableName = configuration.TableName;
            var provisioned = await throughputClient.GetTableThroughputLevelAsync(tableName, cancellationToken).ConfigureAwait(false);
            var metrics = await metricsClient.GetTableMetricsAsync(tableName, cancellationToken).ConfigureAwait(false);
            LogStats(configuration, provisioned, metrics);

            var updated = EnsureProvision(isCircuitBreakerTripped, provisioned, metrics, configuration);
            var provisioner = new TableProvisioner(tableName, throughputClient, structuredLogger);
            await provisioner.ProvisionAsync(configuration, provisioned, updated, cancellationToken).ConfigureAwait(false);
        }
 public void SetUp()
 {
     throughputClientMock = new Mock<IDynamoDbTableThroughputClient>();
     tableProvisioner = new TableProvisioner(tableName, throughputClientMock.Object, structuredLogger);
 }