@Override
  protected TableServiceClient buildTableServiceClient(HttpClient httpClient, Configuration configuration,
      RetryOptions retryOptions, AzureCloudConfig azureCloudConfig) {
    try {
      return new TableServiceClientBuilder().connectionString(azureCloudConfig.azureTableConnectionString)
          .httpClient(httpClient)
          .retryOptions(retryOptions)
          .configuration(configuration)
          .buildClient();
    } catch (Throwable e) {
      String err = String.format("Failed to build table service client with connection string %s due to %s",
          azureCloudConfig.azureTableConnectionString, e.getMessage());
      logger.error(err);
      throw e;
    }
  }
Constructor for {@link ConnectionStringBasedStorageClient} object for testing.
@param blobServiceAsyncClient {@link BlobServiceClient} object.
@param blobBatchAsyncClient {@link BlobBatchClient} object.
@param azureMetrics {@link AzureMetrics} object.
@param blobLayoutStrategy {@link AzureBlobLayoutStrategy} object.
@param azureCloudConfig {@link AzureCloudConfig} object.
ambry-cloud/src/main/java/com/github/ambry/cloud/azure/ConnectionStringBasedStorageClient.java