diff --git a/sdk/storage/Azure.Storage.Blobs/src/AppendBlobClient.cs b/sdk/storage/Azure.Storage.Blobs/src/AppendBlobClient.cs
index 9fcc1a1a531d..dfdc962451d1 100644
--- a/sdk/storage/Azure.Storage.Blobs/src/AppendBlobClient.cs
+++ b/sdk/storage/Azure.Storage.Blobs/src/AppendBlobClient.cs
@@ -330,6 +330,143 @@ await CreateInternal(
cancellationToken)
.ConfigureAwait(false);
+ ///
+ /// The operation creates a new 0-length
+ /// append blob. If the append blob already exists, the content of
+ /// the existing append blob will remain unchanged. To add content to the append
+ /// blob, call the operation.
+ ///
+ /// For more information, see .
+ ///
+ ///
+ /// Optional standard HTTP header properties that can be set for the
+ /// new append blob.
+ ///
+ ///
+ /// Optional custom metadata to set for this append blob.
+ ///
+ ///
+ /// Optional to propagate
+ /// notifications that the operation should be cancelled.
+ ///
+ ///
+ /// A describing the
+ /// newly created append blob.
+ ///
+ ///
+ /// A will be thrown if
+ /// a failure occurs.
+ ///
+ public virtual Response CreateIfNotExists(
+ BlobHttpHeaders? httpHeaders = default,
+ Metadata metadata = default,
+ CancellationToken cancellationToken = default) =>
+ CreateIfNotExistsInternal(
+ httpHeaders,
+ metadata,
+ false, // async
+ cancellationToken)
+ .EnsureCompleted();
+
+ ///
+ /// The operation creates a new 0-length
+ /// append blob. If the append blob already exists, the content of
+ /// the existing append blob will remain unchanged. To add content to the append
+ /// blob, call the operation.
+ ///
+ /// For more information, see .
+ ///
+ ///
+ /// Optional standard HTTP header properties that can be set for the
+ /// new append blob.
+ ///
+ ///
+ /// Optional custom metadata to set for this append blob.
+ ///
+ ///
+ /// Optional to propagate
+ /// notifications that the operation should be cancelled.
+ ///
+ ///
+ /// A describing the
+ /// newly created append blob.
+ ///
+ ///
+ /// A will be thrown if
+ /// a failure occurs.
+ ///
+ public virtual async Task> CreateIfNotExistsAsync(
+ BlobHttpHeaders? httpHeaders = default,
+ Metadata metadata = default,
+ CancellationToken cancellationToken = default) =>
+ await CreateIfNotExistsInternal(
+ httpHeaders,
+ metadata,
+ true, // async
+ cancellationToken)
+ .ConfigureAwait(false);
+
+ ///
+ /// The operation creates a new 0-length
+ /// append blob. If the append blob already exists, the content of
+ /// the existing append blob will remain unchanged. To add content to the append
+ /// blob, call the operation.
+ ///
+ /// For more information, see .
+ ///
+ ///
+ /// Optional standard HTTP header properties that can be set for the
+ /// new append blob.
+ ///
+ ///
+ /// Optional custom metadata to set for this append blob.
+ ///
+ ///
+ /// Whether to invoke the operation asynchronously.
+ ///
+ ///
+ /// Optional to propagate
+ /// notifications that the operation should be cancelled.
+ ///
+ ///
+ /// A describing the
+ /// newly created append blob.
+ ///
+ ///
+ /// A will be thrown if
+ /// a failure occurs.
+ ///
+ private async Task> CreateIfNotExistsInternal(
+ BlobHttpHeaders? httpHeaders,
+ Metadata metadata,
+ bool async,
+ CancellationToken cancellationToken)
+ {
+ AppendBlobAccessConditions accessConditions = new AppendBlobAccessConditions
+ {
+ HttpAccessConditions = new HttpAccessConditions
+ {
+ IfNoneMatch = new ETag(Constants.Wildcard)
+ }
+ };
+ try
+ {
+ return await CreateInternal(
+ httpHeaders,
+ metadata,
+ accessConditions,
+ async,
+ cancellationToken,
+ Constants.Blob.Append.CreateIfNotExistsOperationName)
+ .ConfigureAwait(false);
+ }
+ catch (StorageRequestFailedException storageRequestFailedException)
+ when (storageRequestFailedException.ErrorCode == Constants.Blob.AlreadyExists)
+ {
+ return default;
+ }
+ }
+
///
/// The operation creates a new 0-length
/// append blob. The content of any existing blob is overwritten with
@@ -356,6 +493,9 @@ await CreateInternal(
/// Optional to propagate
/// notifications that the operation should be cancelled.
///
+ ///
+ /// Optional. To indicate if the name of the operation.
+ ///
///
/// A describing the
/// newly created append blob.
@@ -369,7 +509,8 @@ private async Task> CreateInternal(
Metadata metadata,
AppendBlobAccessConditions? accessConditions,
bool async,
- CancellationToken cancellationToken)
+ CancellationToken cancellationToken,
+ string operationName = Constants.Blob.Append.CreateOperationName)
{
using (Pipeline.BeginLoggingScope(nameof(AppendBlobClient)))
{
@@ -403,7 +544,7 @@ private async Task> CreateInternal(
ifMatch: accessConditions?.HttpAccessConditions?.IfMatch,
ifNoneMatch: accessConditions?.HttpAccessConditions?.IfNoneMatch,
async: async,
- operationName: "Azure.Storage.Blobs.Specialized.AppendBlobClient.Create",
+ operationName: operationName,
cancellationToken: cancellationToken)
.ConfigureAwait(false);
}
diff --git a/sdk/storage/Azure.Storage.Blobs/src/BlobBaseClient.cs b/sdk/storage/Azure.Storage.Blobs/src/BlobBaseClient.cs
index 342843497abc..0af6d273a24b 100644
--- a/sdk/storage/Azure.Storage.Blobs/src/BlobBaseClient.cs
+++ b/sdk/storage/Azure.Storage.Blobs/src/BlobBaseClient.cs
@@ -1894,6 +1894,142 @@ await DeleteInternal(
cancellationToken)
.ConfigureAwait(false);
+ ///
+ /// The operation marks the specified blob
+ /// or snapshot for deletion, if the blob exists. The blob is later deleted
+ /// during garbage collection.
+ ///
+ /// Note that in order to delete a blob, you must delete all of its
+ /// snapshots. You can delete both at the same time using
+ /// .
+ ///
+ /// For more information, see .
+ ///
+ ///
+ /// Specifies options for deleting blob snapshots.
+ ///
+ ///
+ /// Optional to add conditions on
+ /// deleting this blob.
+ ///
+ ///
+ /// Optional to propagate
+ /// notifications that the operation should be cancelled.
+ ///
+ ///
+ /// A on successfully deleting.
+ ///
+ ///
+ /// A will be thrown if
+ /// a failure occurs.
+ ///
+ public virtual Response DeleteIfExists(
+ DeleteSnapshotsOption? deleteOptions = default,
+ BlobAccessConditions? accessConditions = default,
+ CancellationToken cancellationToken = default) =>
+ DeleteIfExistsInternal(
+ deleteOptions,
+ accessConditions ?? default,
+ false, // async
+ cancellationToken)
+ .EnsureCompleted();
+
+ ///
+ /// The operation marks the specified blob
+ /// or snapshot for deletion, if the blob exists. The blob is later deleted
+ /// during garbage collection.
+ ///
+ /// Note that in order to delete a blob, you must delete all of its
+ /// snapshots. You can delete both at the same time using
+ /// .
+ ///
+ /// For more information, see .
+ ///
+ ///
+ /// Specifies options for deleting blob snapshots.
+ ///
+ ///
+ /// Optional to add conditions on
+ /// deleting this blob.
+ ///
+ ///
+ /// Optional to propagate
+ /// notifications that the operation should be cancelled.
+ ///
+ ///
+ /// A on successfully deleting.
+ ///
+ ///
+ /// A will be thrown if
+ /// a failure occurs.
+ ///
+ public virtual async Task> DeleteIfExistsAsync(
+ DeleteSnapshotsOption? deleteOptions = default,
+ BlobAccessConditions? accessConditions = default,
+ CancellationToken cancellationToken = default) =>
+ await DeleteIfExistsInternal(
+ deleteOptions,
+ accessConditions ?? default,
+ true, // async
+ cancellationToken)
+ .ConfigureAwait(false);
+
+ ///
+ /// The operation marks the specified blob
+ /// or snapshot for deletion, if the blob exists. The blob is later deleted
+ /// during garbage collection.
+ ///
+ /// Note that in order to delete a blob, you must delete all of its
+ /// snapshots. You can delete both at the same time using
+ /// .
+ ///
+ /// For more information, see .
+ ///
+ ///
+ /// Specifies options for deleting blob snapshots.
+ ///
+ ///
+ /// Optional to add conditions on
+ /// deleting this blob.
+ ///
+ ///
+ /// Whether to invoke the operation asynchronously.
+ ///
+ ///
+ /// Optional to propagate
+ /// notifications that the operation should be cancelled.
+ ///
+ ///
+ /// A on successfully deleting.
+ ///
+ ///
+ /// A will be thrown if
+ /// a failure occurs.
+ ///
+ private async Task> DeleteIfExistsInternal(
+ DeleteSnapshotsOption? deleteOptions,
+ BlobAccessConditions accessConditions,
+ bool async,
+ CancellationToken cancellationToken)
+ {
+ try
+ {
+ Response response = await DeleteInternal(
+ deleteOptions,
+ accessConditions,
+ async,
+ cancellationToken,
+ Constants.Blob.Base.DeleteIfExists)
+ .ConfigureAwait(false);
+ return Response.FromValue(response, true);
+ }
+ catch (StorageRequestFailedException storageRequestFailedException)
+ when (storageRequestFailedException.ErrorCode == Constants.Blob.NotFound)
+ {
+ return Response.FromValue(default, false);
+ }
+ }
+
///
/// The operation marks the specified blob
/// or snapshot for deletion. The blob is later deleted during
@@ -1919,6 +2055,9 @@ await DeleteInternal(
/// Optional to propagate
/// notifications that the operation should be cancelled.
///
+ ///
+ /// Optional. To indicate if the name of the operation.
+ ///
///
/// A on successfully deleting.
///
@@ -1930,7 +2069,8 @@ private async Task DeleteInternal(
DeleteSnapshotsOption? deleteOptions,
BlobAccessConditions? accessConditions,
bool async,
- CancellationToken cancellationToken)
+ CancellationToken cancellationToken,
+ string operationName = Constants.Blob.Base.Delete)
{
using (Pipeline.BeginLoggingScope(nameof(BlobBaseClient)))
{
@@ -1952,7 +2092,7 @@ private async Task DeleteInternal(
ifMatch: accessConditions?.HttpAccessConditions?.IfMatch,
ifNoneMatch: accessConditions?.HttpAccessConditions?.IfNoneMatch,
async: async,
- operationName: "Azure.Storage.Blobs.Specialized.BlobBaseClient.Delete",
+ operationName: operationName,
cancellationToken: cancellationToken)
.ConfigureAwait(false);
}
diff --git a/sdk/storage/Azure.Storage.Blobs/src/BlobContainerClient.cs b/sdk/storage/Azure.Storage.Blobs/src/BlobContainerClient.cs
index e05eb15cb446..e8c9ecb282bc 100644
--- a/sdk/storage/Azure.Storage.Blobs/src/BlobContainerClient.cs
+++ b/sdk/storage/Azure.Storage.Blobs/src/BlobContainerClient.cs
@@ -364,7 +364,99 @@ await CreateInternal(
.ConfigureAwait(false);
///
- /// The operation creates a new container
+ /// The operation creates a new container
+ /// under the specified account. If the container with the same name
+ /// already exists, the operation fails.
+ ///
+ /// For more information, see .
+ ///
+ ///
+ /// Optionally specifies whether data in the container may be accessed
+ /// publicly and the level of access.
+ /// specifies full public read access for container and blob data.
+ /// Clients can enumerate blobs within the container via anonymous
+ /// request, but cannot enumerate containers within the storage
+ /// account. specifies public
+ /// read access for blobs. Blob data within this container can be
+ /// read via anonymous request, but container data is not available.
+ /// Clients cannot enumerate blobs within the container via anonymous
+ /// request. specifies that the
+ /// container data is private to the account owner.
+ ///
+ ///
+ /// Optional custom metadata to set for this container.
+ ///
+ ///
+ /// Optional to propagate
+ /// notifications that the operation should be cancelled.
+ ///
+ ///
+ /// A describing the newly
+ /// created container.
+ ///
+ ///
+ /// A will be thrown if
+ /// a failure occurs.
+ ///
+ public virtual Response CreateIfNotExists(
+ PublicAccessType publicAccessType = PublicAccessType.None,
+ Metadata metadata = default,
+ CancellationToken cancellationToken = default) =>
+ CreateIfNotExistsInternal(
+ publicAccessType,
+ metadata,
+ false, // async
+ cancellationToken)
+ .EnsureCompleted();
+
+ ///
+ /// The operation creates a new container
+ /// under the specified account. If the container with the same name
+ /// already exists, the operation fails.
+ ///
+ /// For more information, see .
+ ///
+ ///
+ /// Optionally specifies whether data in the container may be accessed
+ /// publicly and the level of access.
+ /// specifies full public read access for container and blob data.
+ /// Clients can enumerate blobs within the container via anonymous
+ /// request, but cannot enumerate containers within the storage
+ /// account. specifies public
+ /// read access for blobs. Blob data within this container can be
+ /// read via anonymous request, but container data is not available.
+ /// Clients cannot enumerate blobs within the container via anonymous
+ /// request. specifies that the
+ /// container data is private to the account owner.
+ ///
+ ///
+ /// Optional custom metadata to set for this container.
+ ///
+ ///
+ /// Optional to propagate
+ /// notifications that the operation should be cancelled.
+ ///
+ ///
+ /// A describing the newly
+ /// created container.
+ ///
+ ///
+ /// A will be thrown if
+ /// a failure occurs.
+ ///
+ public virtual async Task> CreateIfNotExistsAsync(
+ PublicAccessType publicAccessType = PublicAccessType.None,
+ Metadata metadata = default,
+ CancellationToken cancellationToken = default) =>
+ await CreateIfNotExistsInternal(
+ publicAccessType,
+ metadata,
+ true, // async
+ cancellationToken)
+ .ConfigureAwait(false);
+
+ ///
+ /// The operation creates a new container
/// under the specified account. If the container with the same name
/// already exists, the operation fails.
///
@@ -401,11 +493,78 @@ await CreateInternal(
/// A will be thrown if
/// a failure occurs.
///
- private async Task> CreateInternal(
+ private async Task> CreateIfNotExistsInternal(
PublicAccessType publicAccessType,
Metadata metadata,
bool async,
CancellationToken cancellationToken)
+ {
+ Response response;
+ try
+ {
+ response = await CreateInternal(
+ publicAccessType,
+ metadata,
+ async,
+ cancellationToken,
+ Constants.Blob.Container.CreateIfNotExistsOperationName)
+ .ConfigureAwait(false);
+ }
+ catch (StorageRequestFailedException storageRequestFailedException)
+ when (storageRequestFailedException.ErrorCode == Constants.Blob.Container.AlreadyExists)
+ {
+ response = default;
+ }
+ return response;
+ }
+
+ ///
+ /// The operation creates a new container
+ /// under the specified account, if it does not already exist.
+ /// If the container with the same name already exists, the operation fails.
+ ///
+ /// For more information, see .
+ ///
+ ///
+ /// Optionally specifies whether data in the container may be accessed
+ /// publicly and the level of access.
+ /// specifies full public read access for container and blob data.
+ /// Clients can enumerate blobs within the container via anonymous
+ /// request, but cannot enumerate containers within the storage
+ /// account. specifies public
+ /// read access for blobs. Blob data within this container can be
+ /// read via anonymous request, but container data is not available.
+ /// Clients cannot enumerate blobs within the container via anonymous
+ /// request. specifies that the
+ /// container data is private to the account owner.
+ ///
+ ///
+ /// Optional custom metadata to set for this container.
+ ///
+ ///
+ /// Whether to invoke the operation asynchronously.
+ ///
+ ///
+ /// Optional to propagate
+ /// notifications that the operation should be cancelled.
+ ///
+ ///
+ /// Optional. To indicate if the name of the operation.
+ ///
+ ///
+ /// A describing the newly
+ /// created container.
+ ///
+ ///
+ /// A will be thrown if
+ /// a failure occurs.
+ ///
+ private async Task> CreateInternal(
+ PublicAccessType publicAccessType,
+ Metadata metadata,
+ bool async,
+ CancellationToken cancellationToken,
+ string operationName = Constants.Blob.Container.CreateOperationName)
{
using (Pipeline.BeginLoggingScope(nameof(BlobContainerClient)))
{
@@ -422,7 +581,7 @@ private async Task> CreateInternal(
metadata: metadata,
access: publicAccessType,
async: async,
- operationName: Constants.Blob.Container.CreateOperationName,
+ operationName: operationName,
cancellationToken: cancellationToken)
.ConfigureAwait(false);
}
@@ -502,6 +661,118 @@ await DeleteInternal(
cancellationToken)
.ConfigureAwait(false);
+ ///
+ /// The operation marks the specified
+ /// container for deletion if it exists. The container and any blobs
+ /// contained within it are later deleted during garbage collection.
+ ///
+ /// For more information, see .
+ ///
+ ///
+ /// Optional to add
+ /// conditions on the deletion of this container.
+ ///
+ ///
+ /// Optional to propagate
+ /// notifications that the operation should be cancelled.
+ ///
+ ///
+ /// A Returns true if container exists and was
+ /// deleted, return false otherwise.
+ ///
+ ///
+ /// A will be thrown if
+ /// a failure occurs.
+ ///
+ public virtual Response DeleteIfExists(
+ BlobContainerAccessConditions? accessConditions = default,
+ CancellationToken cancellationToken = default) =>
+ DeleteIfExistsInternal(
+ accessConditions,
+ false, // async
+ cancellationToken)
+ .EnsureCompleted();
+
+ ///
+ /// The operation marks the specified
+ /// container for deletion if it exists. The container and any blobs
+ /// contained within it are later deleted during garbage collection.
+ ///
+ /// For more information, see .
+ ///
+ ///
+ /// Optional to add
+ /// conditions on the deletion of this container.
+ ///
+ ///
+ /// Optional to propagate
+ /// notifications that the operation should be cancelled.
+ ///
+ ///
+ /// A Returns true if container exists and was
+ /// deleted, return false otherwise.
+ ///
+ ///
+ /// A will be thrown if
+ /// a failure occurs.
+ ///
+ public virtual async Task> DeleteIfExistsAsync(
+ BlobContainerAccessConditions? accessConditions = default,
+ CancellationToken cancellationToken = default) =>
+ await DeleteIfExistsInternal(
+ accessConditions,
+ true, // async
+ cancellationToken)
+ .ConfigureAwait(false);
+
+ ///
+ /// The operation marks the specified
+ /// container for deletion if it exists. The container and any blobs
+ /// contained within it are later deleted during garbage collection.
+ ///
+ /// For more information, see .
+ ///
+ ///
+ /// Optional to add
+ /// conditions on the deletion of this container.
+ ///
+ ///
+ /// Whether to invoke the operation asynchronously.
+ ///
+ ///
+ /// Optional to propagate
+ /// notifications that the operation should be cancelled.
+ ///
+ ///
+ /// A Returns true if container exists and was
+ /// deleted, return false otherwise.
+ ///
+ ///
+ /// A will be thrown if
+ /// a failure occurs.
+ ///
+ private async Task> DeleteIfExistsInternal(
+ BlobContainerAccessConditions? accessConditions,
+ bool async,
+ CancellationToken cancellationToken)
+ {
+ try
+ {
+ Response response = await DeleteInternal(
+ accessConditions,
+ async,
+ cancellationToken,
+ Constants.Blob.Container.DeleteIfExistsOperationName)
+ .ConfigureAwait(false);
+ return Response.FromValue(response, true);
+ }
+ catch (StorageRequestFailedException storageRequestFailedException)
+ when (storageRequestFailedException.ErrorCode == Constants.Blob.Container.NotFound)
+ {
+ return Response.FromValue(default, false);
+ }
+ }
+
///
/// The operation marks the specified
/// container for deletion. The container and any blobs contained
@@ -520,6 +791,9 @@ await DeleteInternal(
/// Optional to propagate
/// notifications that the operation should be cancelled.
///
+ ///
+ /// Optional. To indicate if the name of the operation.
+ ///
///
/// A if successful.
///
@@ -530,7 +804,8 @@ await DeleteInternal(
private async Task DeleteInternal(
BlobContainerAccessConditions? accessConditions,
bool async,
- CancellationToken cancellationToken)
+ CancellationToken cancellationToken,
+ string operationName = Constants.Blob.Container.DeleteOperationName)
{
using (Pipeline.BeginLoggingScope(nameof(BlobContainerClient)))
{
@@ -554,7 +829,7 @@ private async Task DeleteInternal(
ifModifiedSince: accessConditions?.HttpAccessConditions?.IfModifiedSince,
ifUnmodifiedSince: accessConditions?.HttpAccessConditions?.IfUnmodifiedSince,
async: async,
- operationName: Constants.Blob.Container.DeleteOperationName,
+ operationName: operationName,
cancellationToken: cancellationToken)
.ConfigureAwait(false);
}
@@ -1710,6 +1985,91 @@ await GetBlobClient(blobName)
accessConditions,
cancellationToken)
.ConfigureAwait(false);
+
+ ///
+ /// The operation marks the specified
+ /// blob or snapshot for deletion, if the blob or snapshot exists. The blob
+ /// is later deleted during garbage collection.
+ ///
+ /// Note that in order to delete a blob, you must delete all of its
+ /// snapshots. You can delete both at the same time using
+ /// .
+ ///
+ /// For more information, see .
+ ///
+ /// The name of the blob to delete.
+ ///
+ /// Specifies options for deleting blob snapshots.
+ ///
+ ///
+ /// Optional to add conditions on
+ /// deleting this blob.
+ ///
+ ///
+ /// Optional to propagate
+ /// notifications that the operation should be cancelled.
+ ///
+ ///
+ /// A on successfully deleting.
+ ///
+ ///
+ /// A will be thrown if
+ /// a failure occurs.
+ ///
+ [ForwardsClientCalls]
+ public virtual Response DeleteBlobIfExists(
+ string blobName,
+ DeleteSnapshotsOption? deleteOptions = default,
+ BlobAccessConditions? accessConditions = default,
+ CancellationToken cancellationToken = default) =>
+ GetBlobClient(blobName).
+ DeleteIfExists(
+ deleteOptions,
+ accessConditions ?? default,
+ cancellationToken);
+
+ ///
+ /// The operation marks the specified
+ /// blob or snapshot for deletion, if the blob or snapshot exists. The blob
+ /// is later deleted during garbage collection.
+ ///
+ /// Note that in order to delete a blob, you must delete all of its
+ /// snapshots. You can delete both at the same time using
+ /// .
+ ///
+ /// For more information, see .
+ ///
+ /// The name of the blob to delete.
+ ///
+ /// Specifies options for deleting blob snapshots.
+ ///
+ ///
+ /// Optional to add conditions on
+ /// deleting this blob.
+ ///
+ ///
+ /// Optional to propagate
+ /// notifications that the operation should be cancelled.
+ ///
+ ///
+ /// A on successfully deleting.
+ ///
+ ///
+ /// A will be thrown if
+ /// a failure occurs.
+ ///
+ [ForwardsClientCalls]
+ public virtual async Task> DeleteBlobIfExistsAsync(
+ string blobName,
+ DeleteSnapshotsOption? deleteOptions = default,
+ BlobAccessConditions? accessConditions = default,
+ CancellationToken cancellationToken = default) =>
+ await GetBlobClient(blobName).DeleteIfExistsAsync(
+ deleteOptions,
+ accessConditions ?? default,
+ cancellationToken)
+ .ConfigureAwait(false);
+
#endregion DeleteBlob
}
}
diff --git a/sdk/storage/Azure.Storage.Blobs/src/PageBlobClient.cs b/sdk/storage/Azure.Storage.Blobs/src/PageBlobClient.cs
index 1393e649b494..e94f6b235031 100644
--- a/sdk/storage/Azure.Storage.Blobs/src/PageBlobClient.cs
+++ b/sdk/storage/Azure.Storage.Blobs/src/PageBlobClient.cs
@@ -380,6 +380,186 @@ await CreateInternal(
cancellationToken)
.ConfigureAwait(false);
+ ///
+ /// The operation creates a new page blob
+ /// of the specified . If the blob already exists, the content of
+ /// the existing blob will remain unchanged. If the blob does not already exists,
+ /// a new page blob with the specified will be created.
+ /// operation.
+ ///
+ /// For more information, see https://docs.microsoft.com/rest/api/storageservices/put-blob.
+ ///
+ ///
+ /// Specifies the maximum size for the page blob, up to 8 TB. The
+ /// size must be aligned to a 512-byte boundary.
+ ///
+ ///
+ /// Optional user-controlled value that you can use to track requests.
+ /// The value of the must be between
+ /// 0 and 2^63 - 1. The default value is 0.
+ ///
+ ///
+ /// Optional standard HTTP header properties that can be set for the
+ /// new page blob.
+ ///
+ ///
+ /// Optional custom metadata to set for this page blob.
+ ///
+ /// ///
+ /// Optional to propagate
+ /// notifications that the operation should be cancelled.
+ ///
+ ///
+ /// A describing the
+ /// newly created page blob.
+ ///
+ ///
+ /// A will be thrown if
+ /// a failure occurs.
+ ///
+ public virtual Response CreateIfNotExists(
+ long size,
+ long? sequenceNumber = default,
+ BlobHttpHeaders? httpHeaders = default,
+ Metadata metadata = default,
+ CancellationToken cancellationToken = default) =>
+ CreateIfNotExistsInternal(
+ size,
+ sequenceNumber,
+ httpHeaders,
+ metadata,
+ false, // async
+ cancellationToken)
+ .EnsureCompleted();
+
+ ///
+ /// The operation creates a new page blob
+ /// of the specified . If the blob already exists, the content of
+ /// the existing blob will remain unchanged. If the blob does not already exists,
+ /// a new page blob with the specified will be created.
+ /// operation.
+ ///
+ /// For more information, see https://docs.microsoft.com/rest/api/storageservices/put-blob.
+ ///
+ ///
+ /// Specifies the maximum size for the page blob, up to 8 TB. The
+ /// size must be aligned to a 512-byte boundary.
+ ///
+ ///
+ /// Optional user-controlled value that you can use to track requests.
+ /// The value of the must be between
+ /// 0 and 2^63 - 1. The default value is 0.
+ ///
+ ///
+ /// Optional standard HTTP header properties that can be set for the
+ /// new page blob.
+ ///
+ ///
+ /// Optional custom metadata to set for this page blob.
+ ///
+ ///
+ /// Optional to propagate
+ /// notifications that the operation should be cancelled.
+ ///
+ ///
+ /// A describing the
+ /// newly created page blob.
+ ///
+ ///
+ /// A will be thrown if
+ /// a failure occurs.
+ ///
+ public virtual async Task> CreateIfNotExistsAsync(
+ long size,
+ long? sequenceNumber = default,
+ BlobHttpHeaders? httpHeaders = default,
+ Metadata metadata = default,
+ CancellationToken cancellationToken = default) =>
+ await CreateIfNotExistsInternal(
+ size,
+ sequenceNumber,
+ httpHeaders,
+ metadata,
+ true, // async
+ cancellationToken)
+ .ConfigureAwait(false);
+
+ ///
+ /// The operation creates a new page blob
+ /// of the specified . If the blob already exists, the content of
+ /// the existing blob will remain unchanged. If the blob does not already exists,
+ /// a new page blob with the specified will be created.
+ /// To add content to the page blob, call the
+ /// operation.
+ ///
+ /// For more information, see https://docs.microsoft.com/rest/api/storageservices/put-blob.
+ ///
+ ///
+ /// Specifies the maximum size for the page blob, up to 8 TB. The
+ /// size must be aligned to a 512-byte boundary.
+ ///
+ ///
+ /// Optional user-controlled value that you can use to track requests.
+ /// The value of the must be between
+ /// 0 and 2^63 - 1. The default value is 0.
+ ///
+ ///
+ /// Optional standard HTTP header properties that can be set for the
+ /// new page blob.
+ ///
+ ///
+ /// Optional custom metadata to set for this page blob.
+ ///
+ ///
+ /// Whether to invoke the operation asynchronously.
+ ///
+ ///
+ /// Optional to propagate
+ /// notifications that the operation should be cancelled.
+ ///
+ ///
+ /// A describing the
+ /// newly created page blob.
+ ///
+ ///
+ /// A will be thrown if
+ /// a failure occurs.
+ ///
+ private async Task> CreateIfNotExistsInternal(
+ long size,
+ long? sequenceNumber,
+ BlobHttpHeaders? httpHeaders,
+ Metadata metadata,
+ bool async,
+ CancellationToken cancellationToken)
+ {
+ PageBlobAccessConditions accessConditions = new PageBlobAccessConditions
+ {
+ HttpAccessConditions = new HttpAccessConditions
+ {
+ IfNoneMatch = new ETag(Constants.Wildcard)
+ }
+ };
+ try
+ {
+ return await CreateInternal(
+ size,
+ sequenceNumber,
+ httpHeaders,
+ metadata,
+ accessConditions,
+ async,
+ cancellationToken,
+ Constants.Blob.Page.CreateIfNotExistsOperationName)
+ .ConfigureAwait(false);
+ }
+ catch (StorageRequestFailedException storageRequestFailedException)
+ when (storageRequestFailedException.ErrorCode == Constants.Blob.AlreadyExists)
+ {
+ return default;
+ }
+ }
+
///
/// The operation creates a new page blob
/// of the specified . The content of any
@@ -416,6 +596,9 @@ await CreateInternal(
/// Optional to propagate
/// notifications that the operation should be cancelled.
///
+ ///
+ /// Optional. To indicate if the name of the operation.
+ ///
///
/// A describing the
/// newly created page blob.
@@ -431,7 +614,8 @@ private async Task> CreateInternal(
Metadata metadata,
PageBlobAccessConditions? accessConditions,
bool async,
- CancellationToken cancellationToken)
+ CancellationToken cancellationToken,
+ string operationName = Constants.Blob.Page.CreateOperationName)
{
using (Pipeline.BeginLoggingScope(nameof(PageBlobClient)))
{
@@ -468,7 +652,7 @@ private async Task> CreateInternal(
blobContentLength: size,
blobSequenceNumber: sequenceNumber,
async: async,
- operationName: Constants.Blob.Page.CreateOperationName,
+ operationName: operationName,
cancellationToken: cancellationToken)
.ConfigureAwait(false);
}
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/AppendBlobClientTests.cs b/sdk/storage/Azure.Storage.Blobs/tests/AppendBlobClientTests.cs
index 4ce6720bf8f5..9fac36d47913 100644
--- a/sdk/storage/Azure.Storage.Blobs/tests/AppendBlobClientTests.cs
+++ b/sdk/storage/Azure.Storage.Blobs/tests/AppendBlobClientTests.cs
@@ -256,6 +256,65 @@ await TestHelper.AssertExpectedExceptionAsync(
}
}
+ [Test]
+ public async Task CreateIfNotExistsAsync()
+ {
+ using (GetNewContainer(out BlobContainerClient container))
+ {
+ // Arrange
+ var blobName = GetNewBlobName();
+ AppendBlobClient blob = InstrumentClient(container.GetAppendBlobClient(blobName));
+
+ // Act
+ Response response = await blob.CreateIfNotExistsAsync();
+
+ // Assert
+ Assert.IsNotNull(response.GetRawResponse().Headers.RequestId);
+
+ IList blobs = await container.GetBlobsAsync().ToListAsync();
+ Assert.AreEqual(1, blobs.Count);
+ Assert.AreEqual(blobName, blobs.First().Name);
+ }
+ }
+
+ [Test]
+ public async Task CreateIfNotExistsAsync_Exists()
+ {
+ using (GetNewContainer(out BlobContainerClient container))
+ {
+ // Arrange
+ var blobName = GetNewBlobName();
+ AppendBlobClient blob = InstrumentClient(container.GetAppendBlobClient(blobName));
+ Response response = await blob.CreateAsync();
+
+ // Act
+ Response responseExists = await blob.CreateIfNotExistsAsync();
+
+ // Assert
+ Assert.IsNotNull(response.GetRawResponse().Headers.RequestId);
+
+ IList blobs = await container.GetBlobsAsync().ToListAsync();
+ Assert.AreEqual(1, blobs.Count);
+ Assert.AreEqual(blobName, blobs.First().Name);
+ }
+ }
+
+ [Test]
+ public async Task CreateIfNotExistsAsync_Error()
+ {
+ using (GetNewContainer(out BlobContainerClient container))
+ {
+ // Arrange
+ AppendBlobClient blob = InstrumentClient(container.GetAppendBlobClient(String.Empty));
+
+ // Act
+ await TestHelper.AssertExpectedExceptionAsync(
+ blob.CreateIfNotExistsAsync(),
+ actualException => Assert.AreEqual("InvalidUri", actualException.ErrorCode)
+ );
+ }
+ }
+
[Test]
public async Task AppendBlockAsync()
{
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/BlobBaseClientTests.cs b/sdk/storage/Azure.Storage.Blobs/tests/BlobBaseClientTests.cs
index b57f90a0801a..b956b7d7d50b 100644
--- a/sdk/storage/Azure.Storage.Blobs/tests/BlobBaseClientTests.cs
+++ b/sdk/storage/Azure.Storage.Blobs/tests/BlobBaseClientTests.cs
@@ -1065,6 +1065,42 @@ await TestHelper.AssertExpectedExceptionAsync(
}
}
+ [Test]
+ public async Task DeleteIfExistsAsync()
+ {
+ using (GetNewContainer(out BlobContainerClient container))
+ {
+ // Arrange
+ BlobBaseClient blob = await GetNewBlobClient(container);
+
+ // Act
+ Response response = await blob.DeleteIfExistsAsync();
+
+ // Assert
+ Assert.IsTrue(response.Value);
+ Assert.ThrowsAsync(
+ async () => await blob.GetPropertiesAsync());
+ }
+ }
+
+ [Test]
+ public async Task DeleteIfExistsAsync_Exists()
+ {
+ using (GetNewContainer(out BlobContainerClient container))
+ {
+ // Arrange
+ BlockBlobClient blob = InstrumentClient(container.GetBlockBlobClient(GetNewBlobName()));
+
+ // Act
+ Response response = await blob.DeleteIfExistsAsync();
+
+ // Assert
+ Assert.IsFalse(response.Value);
+ Assert.ThrowsAsync(
+ async () => await blob.GetPropertiesAsync());
+ }
+ }
+
//[Test]
//public async Task DeleteAsync_Batch()
//{
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/ContainerClientTests.cs b/sdk/storage/Azure.Storage.Blobs/tests/ContainerClientTests.cs
index b2a5d4805ffb..9a6bd903f866 100644
--- a/sdk/storage/Azure.Storage.Blobs/tests/ContainerClientTests.cs
+++ b/sdk/storage/Azure.Storage.Blobs/tests/ContainerClientTests.cs
@@ -218,6 +218,43 @@ await TestHelper.AssertExpectedExceptionAsync(
await container.DeleteAsync();
}
+ [Test]
+ public async Task CreateIfNotExistsAsync()
+ {
+ // Arrange
+ BlobServiceClient service = GetServiceClient_SharedKey();
+ BlobContainerClient container = InstrumentClient(service.GetBlobContainerClient(GetNewContainerName()));
+
+ // Act
+ await container.CreateIfNotExistsAsync();
+
+ // Assert
+ Response response = await container.GetPropertiesAsync();
+ Assert.IsNotNull(response.Value.Properties.ETag);
+
+ // Cleanup
+ await container.DeleteAsync();
+ }
+
+ [Test]
+ public async Task CreateIfNotExistsAsync_Exists()
+ {
+ // Arrange
+ BlobServiceClient service = GetServiceClient_SharedKey();
+ BlobContainerClient container = InstrumentClient(service.GetBlobContainerClient(GetNewContainerName()));
+ await container.CreateAsync();
+
+ // Act
+ await container.CreateIfNotExistsAsync();
+
+ // Assert
+ Response response = await container.GetPropertiesAsync();
+ Assert.IsNotNull(response.Value.Properties.ETag);
+
+ // Cleanup
+ await container.DeleteAsync();
+ }
+
[Test]
public async Task DeleteAsync()
{
@@ -293,6 +330,35 @@ await TestHelper.AssertExpectedExceptionAsync(
}
}
+ [Test]
+ public async Task DeleteIfExistsAsync()
+ {
+ // Arrange
+ BlobServiceClient service = GetServiceClient_SharedKey();
+ BlobContainerClient container = InstrumentClient(service.GetBlobContainerClient(GetNewContainerName()));
+ await container.CreateAsync();
+
+ // Act
+ Response response = await container.DeleteIfExistsAsync();
+
+ // Assert
+ Assert.IsTrue(response.Value);
+ }
+
+ [Test]
+ public async Task DeleteIfExistsAsync_Exists()
+ {
+ // Arrange
+ BlobServiceClient service = GetServiceClient_SharedKey();
+ BlobContainerClient container = InstrumentClient(service.GetBlobContainerClient(GetNewContainerName()));
+
+ // Act
+ Response response = await container.DeleteIfExistsAsync();
+
+ // Assert
+ Assert.IsFalse(response.Value);
+ }
+
[Test]
public async Task GetPropertiesAsync()
{
@@ -1562,6 +1628,66 @@ public async Task DeleteBlobAsync()
}
}
+ [Test]
+ public async Task DeleteBlobIfExistsAsync()
+ {
+ using (GetNewContainer(out BlobContainerClient container))
+ {
+ // Arrange
+ var name = GetNewBlobName();
+ BlockBlobClient blob = InstrumentClient(container.GetBlockBlobClient(name));
+ using (var stream = new MemoryStream(GetRandomBuffer(100)))
+ {
+ await blob.UploadAsync(stream);
+ }
+
+ // Act
+ Response response= await container.DeleteBlobIfExistsAsync(name);
+
+ // Assert
+ Assert.IsTrue(response.Value);
+ Assert.ThrowsAsync(
+ async () => await blob.GetPropertiesAsync());
+ }
+ }
+
+ [Test]
+ public async Task DeleteBlobIfExistsAsync_Exists()
+ {
+ using (GetNewContainer(out BlobContainerClient container))
+ {
+ // Arrange
+ var name = GetNewBlobName();
+ BlockBlobClient blob = InstrumentClient(container.GetBlockBlobClient(name));
+ using (var stream = new MemoryStream(GetRandomBuffer(100)))
+ {
+ await blob.UploadAsync(stream);
+ }
+ await container.DeleteBlobAsync(name);
+
+ //Act
+ Response response = await container.DeleteBlobIfExistsAsync(name);
+
+ // Assert
+ Assert.IsFalse(response.Value);
+ Assert.ThrowsAsync(
+ async () => await blob.GetPropertiesAsync());
+ }
+ }
+
+ [Test]
+ public async Task DeleteBlobIfExistsAsync_Error()
+ {
+ // Arrange
+ BlobServiceClient service = GetServiceClient_SharedKey();
+ BlobContainerClient container = InstrumentClient(service.GetBlobContainerClient(GetNewContainerName()));
+
+ // Act
+ await TestHelper.AssertExpectedExceptionAsync(
+ container.DeleteBlobIfExistsAsync(GetNewBlobName()),
+ e => Assert.AreEqual("ContainerNotFound", e.ErrorCode.Split('\n')[0]));
+ }
+
#region Secondary Storage
[Test]
public async Task ListContainersSegmentAsync_SecondaryStorageFirstRetrySuccessful()
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/PageBlobClientTests.cs b/sdk/storage/Azure.Storage.Blobs/tests/PageBlobClientTests.cs
index 9fa2fa124f6c..cd30f189a831 100644
--- a/sdk/storage/Azure.Storage.Blobs/tests/PageBlobClientTests.cs
+++ b/sdk/storage/Azure.Storage.Blobs/tests/PageBlobClientTests.cs
@@ -1865,6 +1865,60 @@ public void WithSnapshot()
Assert.AreEqual("", builder.Snapshot);
}
+ [Test]
+ public async Task CreateIfNotExistsAsync()
+ {
+ using (GetNewContainer(out BlobContainerClient container))
+ {
+ // Arrange
+ PageBlobClient blob = InstrumentClient(container.GetPageBlobClient(GetNewBlobName()));
+
+ // Act
+ Response response = await blob.CreateIfNotExistsAsync(Constants.KB);
+
+ // Assert
+ Assert.IsNotNull(response.GetRawResponse().Headers.RequestId);
+ }
+ }
+
+ [Test]
+ public async Task CreateIfNotExistsAsync_Exists()
+ {
+ using (GetNewContainer(out BlobContainerClient container))
+ {
+ // Arrange
+ PageBlobClient blob = InstrumentClient(container.GetPageBlobClient(GetNewBlobName()));
+ Response response = await blob.CreateAsync(Constants.KB);
+
+ // Act
+ Response responseExists = await blob.CreateIfNotExistsAsync(Constants.KB);
+
+ // Assert
+ Assert.IsNotNull(response.GetRawResponse().Headers.RequestId);
+ }
+ }
+
+ [Test]
+ public async Task CreateIfNotExistsAsync_Error()
+ {
+ using (GetNewContainer(out BlobContainerClient container))
+ {
+ // Arrange
+ var invalidPageSize = 511;
+ PageBlobClient blob = InstrumentClient(container.GetPageBlobClient(GetNewBlobName()));
+
+ // Act
+ await TestHelper.AssertExpectedExceptionAsync(
+ blob.CreateIfNotExistsAsync(invalidPageSize),
+ e =>
+ {
+ Assert.AreEqual("InvalidHeaderValue", e.ErrorCode);
+ Assert.AreEqual("The value for one of the HTTP headers is not in the correct format.",
+ e.Message.Split('\n')[0]);
+ });
+ }
+ }
+
private PageBlobAccessConditions BuildAccessConditions(
AccessConditionParameters parameters,
bool lease = false,
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/CreateIfNotExistsAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/CreateIfNotExistsAsync.json
new file mode 100644
index 000000000000..79fb6c6f267d
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/CreateIfNotExistsAsync.json
@@ -0,0 +1,137 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-70039f49-545f-246e-f12f-d77359ad290a?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-73c9fa61d691a74dabd08adf399d8975-4e0dc9cc77eb8348-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "bee8709f-176f-6959-37d3-7b95b03f0f6d",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:56 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:56 GMT",
+ "ETag": "\u00220x8D7476D82CBA9C9\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:56 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "bee8709f-176f-6959-37d3-7b95b03f0f6d",
+ "x-ms-request-id": "7d50fffd-201e-00e4-5756-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-70039f49-545f-246e-f12f-d77359ad290a/test-blob-027e257e-78f0-ac5e-4a8b-e4743eb731b3",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-a1d35dcd2cf3094cbed29c485a8c7e7a-dd96cf6146caf446-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-type": "AppendBlob",
+ "x-ms-client-request-id": "ce37a8db-4dbf-27bd-123b-73e332e52b7f",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:56 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:56 GMT",
+ "ETag": "\u00220x8D7476D82E55833\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:56 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "ce37a8db-4dbf-27bd-123b-73e332e52b7f",
+ "x-ms-request-id": "7d510035-201e-00e4-0656-798111000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-70039f49-545f-246e-f12f-d77359ad290a?restype=container\u0026comp=list",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "969898c4-6280-92f3-6dac-d689f7b7dec0",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:19:56 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "x-ms-client-request-id": "969898c4-6280-92f3-6dac-d689f7b7dec0",
+ "x-ms-request-id": "7d510052-201e-00e4-1f56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CEnumerationResults ServiceEndpoint=\u0022http://amandadev2.blob.core.windows.net/\u0022 ContainerName=\u0022test-container-70039f49-545f-246e-f12f-d77359ad290a\u0022\u003E\u003CBlobs\u003E\u003CBlob\u003E\u003CName\u003Etest-blob-027e257e-78f0-ac5e-4a8b-e4743eb731b3\u003C/Name\u003E\u003CProperties\u003E\u003CCreation-Time\u003EWed, 02 Oct 2019 19:19:56 GMT\u003C/Creation-Time\u003E\u003CLast-Modified\u003EWed, 02 Oct 2019 19:19:56 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E0x8D7476D82E55833\u003C/Etag\u003E\u003CContent-Length\u003E0\u003C/Content-Length\u003E\u003CContent-Type\u003Eapplication/octet-stream\u003C/Content-Type\u003E\u003CContent-Encoding /\u003E\u003CContent-Language /\u003E\u003CContent-CRC64 /\u003E\u003CContent-MD5 /\u003E\u003CCache-Control /\u003E\u003CContent-Disposition /\u003E\u003CBlobType\u003EAppendBlob\u003C/BlobType\u003E\u003CAccessTier\u003EHot\u003C/AccessTier\u003E\u003CAccessTierInferred\u003Etrue\u003C/AccessTierInferred\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CServerEncrypted\u003Etrue\u003C/ServerEncrypted\u003E\u003CTagCount\u003E0\u003C/TagCount\u003E\u003C/Properties\u003E\u003C/Blob\u003E\u003C/Blobs\u003E\u003CNextMarker /\u003E\u003C/EnumerationResults\u003E"
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-70039f49-545f-246e-f12f-d77359ad290a?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-2a79a398d3cd304bb405b51d45152801-aef90ed5eb088247-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "991fe8b0-954c-3fff-d323-19bf4f1f1cd2",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:56 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "991fe8b0-954c-3fff-d323-19bf4f1f1cd2",
+ "x-ms-request-id": "7d510070-201e-00e4-3756-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "2078424479",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/CreateIfNotExistsAsyncAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/CreateIfNotExistsAsyncAsync.json
new file mode 100644
index 000000000000..07925c8fb407
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/CreateIfNotExistsAsyncAsync.json
@@ -0,0 +1,137 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-41c2ca2e-868a-9c76-e74b-7a821906b0e8?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-65982421940d8548bd2472aea76750e3-fe65e850716fca48-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "b5dc905d-88d4-dcfa-a73e-c5e6dc695a3f",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:56 GMT",
+ "ETag": "\u00220x8D7476D835454C4\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "b5dc905d-88d4-dcfa-a73e-c5e6dc695a3f",
+ "x-ms-request-id": "7d5100ed-201e-00e4-2456-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-41c2ca2e-868a-9c76-e74b-7a821906b0e8/test-blob-4e62920f-8887-0434-9186-5bccdd01c740",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-524e4aefd3b38d45abbe4567a9738788-1b52e732834e3247-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-type": "AppendBlob",
+ "x-ms-client-request-id": "42656963-9d45-d40c-5bd8-234e2d2dfea6",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "ETag": "\u00220x8D7476D835C244B\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "42656963-9d45-d40c-5bd8-234e2d2dfea6",
+ "x-ms-request-id": "7d5100fa-201e-00e4-2f56-798111000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-41c2ca2e-868a-9c76-e74b-7a821906b0e8?restype=container\u0026comp=list",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "7468de25-849c-c2fb-da50-2d51d7c51967",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "x-ms-client-request-id": "7468de25-849c-c2fb-da50-2d51d7c51967",
+ "x-ms-request-id": "7d510108-201e-00e4-3c56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CEnumerationResults ServiceEndpoint=\u0022http://amandadev2.blob.core.windows.net/\u0022 ContainerName=\u0022test-container-41c2ca2e-868a-9c76-e74b-7a821906b0e8\u0022\u003E\u003CBlobs\u003E\u003CBlob\u003E\u003CName\u003Etest-blob-4e62920f-8887-0434-9186-5bccdd01c740\u003C/Name\u003E\u003CProperties\u003E\u003CCreation-Time\u003EWed, 02 Oct 2019 19:19:57 GMT\u003C/Creation-Time\u003E\u003CLast-Modified\u003EWed, 02 Oct 2019 19:19:57 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E0x8D7476D835C244B\u003C/Etag\u003E\u003CContent-Length\u003E0\u003C/Content-Length\u003E\u003CContent-Type\u003Eapplication/octet-stream\u003C/Content-Type\u003E\u003CContent-Encoding /\u003E\u003CContent-Language /\u003E\u003CContent-CRC64 /\u003E\u003CContent-MD5 /\u003E\u003CCache-Control /\u003E\u003CContent-Disposition /\u003E\u003CBlobType\u003EAppendBlob\u003C/BlobType\u003E\u003CAccessTier\u003EHot\u003C/AccessTier\u003E\u003CAccessTierInferred\u003Etrue\u003C/AccessTierInferred\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CServerEncrypted\u003Etrue\u003C/ServerEncrypted\u003E\u003CTagCount\u003E0\u003C/TagCount\u003E\u003C/Properties\u003E\u003C/Blob\u003E\u003C/Blobs\u003E\u003CNextMarker /\u003E\u003C/EnumerationResults\u003E"
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-41c2ca2e-868a-9c76-e74b-7a821906b0e8?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-92ae19f8d88f8545838df447a2920bf6-082148af10476844-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "4e29e438-8ac5-f30a-89c5-1bf2a3c43db9",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "4e29e438-8ac5-f30a-89c5-1bf2a3c43db9",
+ "x-ms-request-id": "7d510115-201e-00e4-4856-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "435835806",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/CreateIfNotExistsAsync_Error.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/CreateIfNotExistsAsync_Error.json
new file mode 100644
index 000000000000..6a82a153d9b5
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/CreateIfNotExistsAsync_Error.json
@@ -0,0 +1,105 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-06d2abcc-d9ec-1e4b-59d5-74d0c6411187?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-2f14b2b1b3c0dd42a85a830fb0ebf956-a8f71a200ff25e40-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "4f79be71-892e-88d3-cead-dced766a9cd6",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:56 GMT",
+ "ETag": "\u00220x8D7476D8313E41D\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "4f79be71-892e-88d3-cead-dced766a9cd6",
+ "x-ms-request-id": "7d51008d-201e-00e4-5056-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-06d2abcc-d9ec-1e4b-59d5-74d0c6411187/",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-d312d2acf922bd428d23f292db046378-6d9161c21852a946-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-type": "AppendBlob",
+ "x-ms-client-request-id": "075ea51a-c1c8-9758-bff2-39e72cfa8ca3",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 400,
+ "ResponseHeaders": {
+ "Content-Length": "354",
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:19:56 GMT",
+ "Server": "Microsoft-HTTPAPI/2.0",
+ "x-ms-error-code": "InvalidUri",
+ "x-ms-request-id": "7d510099-201e-00e4-5b56-798111000000"
+ },
+ "ResponseBody": [
+ "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CError\u003E\u003CCode\u003EInvalidUri\u003C/Code\u003E\u003CMessage\u003EThe requested URI does not represent any resource on the server.\n",
+ "RequestId:7d510099-201e-00e4-5b56-798111000000\n",
+ "Time:2019-10-02T19:19:57.2821126Z\u003C/Message\u003E\u003CUriPath\u003Ehttp://amandadev2.blob.core.windows.net/test-container-06d2abcc-d9ec-1e4b-59d5-74d0c6411187/\u003C/UriPath\u003E\u003C/Error\u003E"
+ ]
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-06d2abcc-d9ec-1e4b-59d5-74d0c6411187?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-db6787d5af60304fbaaadac072ed514a-ad368e34de590e4a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "d1d2bfa0-940c-5e0e-e003-6a853d3c97c9",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:56 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "d1d2bfa0-940c-5e0e-e003-6a853d3c97c9",
+ "x-ms-request-id": "7d5100a3-201e-00e4-6456-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "2051479166",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/CreateIfNotExistsAsync_ErrorAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/CreateIfNotExistsAsync_ErrorAsync.json
new file mode 100644
index 000000000000..dfed5ad1bd80
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/CreateIfNotExistsAsync_ErrorAsync.json
@@ -0,0 +1,105 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-d054533c-80ee-56f0-a4a9-28a3ed380941?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-aa6332b5502e14488922520f828fcd33-1afe2188804a8c4a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "a916d5cf-4e35-fd67-9652-c910f290d6fa",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "ETag": "\u00220x8D7476D8373F0B6\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "a916d5cf-4e35-fd67-9652-c910f290d6fa",
+ "x-ms-request-id": "7d510121-201e-00e4-5156-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-d054533c-80ee-56f0-a4a9-28a3ed380941/",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-3d516f44fec6224a8d445def1f1836ce-8b15006551e5094e-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-type": "AppendBlob",
+ "x-ms-client-request-id": "17d4b915-5f22-c70c-7314-1b4703e18ef6",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 400,
+ "ResponseHeaders": {
+ "Content-Length": "354",
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "Server": "Microsoft-HTTPAPI/2.0",
+ "x-ms-error-code": "InvalidUri",
+ "x-ms-request-id": "7d510129-201e-00e4-5856-798111000000"
+ },
+ "ResponseBody": [
+ "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CError\u003E\u003CCode\u003EInvalidUri\u003C/Code\u003E\u003CMessage\u003EThe requested URI does not represent any resource on the server.\n",
+ "RequestId:7d510129-201e-00e4-5856-798111000000\n",
+ "Time:2019-10-02T19:19:57.9095783Z\u003C/Message\u003E\u003CUriPath\u003Ehttp://amandadev2.blob.core.windows.net/test-container-d054533c-80ee-56f0-a4a9-28a3ed380941/\u003C/UriPath\u003E\u003C/Error\u003E"
+ ]
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-d054533c-80ee-56f0-a4a9-28a3ed380941?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-63a986176c9a0946bd459cab97361430-7a588cce76a04445-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "38fb2b6d-bfbb-64d8-f2c8-ab5f5dd36c7f",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "38fb2b6d-bfbb-64d8-f2c8-ab5f5dd36c7f",
+ "x-ms-request-id": "7d510131-201e-00e4-5c56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "48062887",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/CreateIfNotExistsAsync_Exists.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/CreateIfNotExistsAsync_Exists.json
new file mode 100644
index 000000000000..d828dae6df71
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/CreateIfNotExistsAsync_Exists.json
@@ -0,0 +1,175 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-8a37978e-97cf-cbd2-f57d-231439b8ee59?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-4bb40faf6c403842b8c9a66fafc7468c-b0ba909ab1349b41-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "3d95e4e7-cf02-3431-842e-802c2e4d7585",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:56 GMT",
+ "ETag": "\u00220x8D7476D832C0497\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "3d95e4e7-cf02-3431-842e-802c2e4d7585",
+ "x-ms-request-id": "7d5100ae-201e-00e4-6f56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-8a37978e-97cf-cbd2-f57d-231439b8ee59/test-blob-41e306e1-592e-80e6-a083-6f536af6a305",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "traceparent": "00-269d1e0b381b164fafab418c16c1e03e-0c732a520148554f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-type": "AppendBlob",
+ "x-ms-client-request-id": "21faa706-b00c-8d79-fe15-9c7e60deca8e",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:56 GMT",
+ "ETag": "\u00220x8D7476D833449C9\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "21faa706-b00c-8d79-fe15-9c7e60deca8e",
+ "x-ms-request-id": "7d5100b8-201e-00e4-7856-798111000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-8a37978e-97cf-cbd2-f57d-231439b8ee59/test-blob-41e306e1-592e-80e6-a083-6f536af6a305",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-6e8564f5397675459de3b6ee941d4036-0026771d7dbe0a44-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-type": "AppendBlob",
+ "x-ms-client-request-id": "c24ca1fe-81fb-d9f9-029f-560d14d92e73",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 409,
+ "ResponseHeaders": {
+ "Content-Length": "220",
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:19:56 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "c24ca1fe-81fb-d9f9-029f-560d14d92e73",
+ "x-ms-error-code": "BlobAlreadyExists",
+ "x-ms-request-id": "7d5100c3-201e-00e4-0156-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": [
+ "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CError\u003E\u003CCode\u003EBlobAlreadyExists\u003C/Code\u003E\u003CMessage\u003EThe specified blob already exists.\n",
+ "RequestId:7d5100c3-201e-00e4-0156-798111000000\n",
+ "Time:2019-10-02T19:19:57.4972719Z\u003C/Message\u003E\u003C/Error\u003E"
+ ]
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-8a37978e-97cf-cbd2-f57d-231439b8ee59?restype=container\u0026comp=list",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "be7fc623-0892-0a92-81c8-af7fca541cd5",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:19:56 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "x-ms-client-request-id": "be7fc623-0892-0a92-81c8-af7fca541cd5",
+ "x-ms-request-id": "7d5100d2-201e-00e4-0d56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CEnumerationResults ServiceEndpoint=\u0022http://amandadev2.blob.core.windows.net/\u0022 ContainerName=\u0022test-container-8a37978e-97cf-cbd2-f57d-231439b8ee59\u0022\u003E\u003CBlobs\u003E\u003CBlob\u003E\u003CName\u003Etest-blob-41e306e1-592e-80e6-a083-6f536af6a305\u003C/Name\u003E\u003CProperties\u003E\u003CCreation-Time\u003EWed, 02 Oct 2019 19:19:57 GMT\u003C/Creation-Time\u003E\u003CLast-Modified\u003EWed, 02 Oct 2019 19:19:57 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E0x8D7476D833449C9\u003C/Etag\u003E\u003CContent-Length\u003E0\u003C/Content-Length\u003E\u003CContent-Type\u003Eapplication/octet-stream\u003C/Content-Type\u003E\u003CContent-Encoding /\u003E\u003CContent-Language /\u003E\u003CContent-CRC64 /\u003E\u003CContent-MD5 /\u003E\u003CCache-Control /\u003E\u003CContent-Disposition /\u003E\u003CBlobType\u003EAppendBlob\u003C/BlobType\u003E\u003CAccessTier\u003EHot\u003C/AccessTier\u003E\u003CAccessTierInferred\u003Etrue\u003C/AccessTierInferred\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CServerEncrypted\u003Etrue\u003C/ServerEncrypted\u003E\u003CTagCount\u003E0\u003C/TagCount\u003E\u003C/Properties\u003E\u003C/Blob\u003E\u003C/Blobs\u003E\u003CNextMarker /\u003E\u003C/EnumerationResults\u003E"
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-8a37978e-97cf-cbd2-f57d-231439b8ee59?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-e0c5461a7d964c45ad7d3ed41fc22c93-678c1178d4b2b74c-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "4eea78d7-6f5a-4ae0-7330-915f222e1bf0",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:56 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "4eea78d7-6f5a-4ae0-7330-915f222e1bf0",
+ "x-ms-request-id": "7d5100db-201e-00e4-1656-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "586279383",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/CreateIfNotExistsAsync_ExistsAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/CreateIfNotExistsAsync_ExistsAsync.json
new file mode 100644
index 000000000000..79ec10a71532
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/CreateIfNotExistsAsync_ExistsAsync.json
@@ -0,0 +1,175 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-c52a161e-6ea6-1142-bac1-afcea7a61e43?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-7c3d108cb7ab2c45b6b74324f0647eeb-ed457a38107a454a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "e587df74-0519-ced5-c65b-81aa3b2a5144",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "ETag": "\u00220x8D7476D838A6321\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "e587df74-0519-ced5-c65b-81aa3b2a5144",
+ "x-ms-request-id": "7d51013d-201e-00e4-6356-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-c52a161e-6ea6-1142-bac1-afcea7a61e43/test-blob-b918a137-a471-c6b6-7990-9ce7ccef3e3e",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "traceparent": "00-f94abd9fc71f2e4aba850730b9cf0c3f-ba3d323f8988bb41-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-type": "AppendBlob",
+ "x-ms-client-request-id": "321b5e6c-4063-cf82-29c0-6b8868ee02d6",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "ETag": "\u00220x8D7476D8392322A\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "321b5e6c-4063-cf82-29c0-6b8868ee02d6",
+ "x-ms-request-id": "7d51014d-201e-00e4-7056-798111000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-c52a161e-6ea6-1142-bac1-afcea7a61e43/test-blob-b918a137-a471-c6b6-7990-9ce7ccef3e3e",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-0aa3b8aee5a63142bac390417fa56885-0dc382154f2b1c43-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-type": "AppendBlob",
+ "x-ms-client-request-id": "6d7a9f32-0cd4-87da-398b-9e5ecda1f231",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 409,
+ "ResponseHeaders": {
+ "Content-Length": "220",
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "6d7a9f32-0cd4-87da-398b-9e5ecda1f231",
+ "x-ms-error-code": "BlobAlreadyExists",
+ "x-ms-request-id": "7d510165-201e-00e4-0356-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": [
+ "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CError\u003E\u003CCode\u003EBlobAlreadyExists\u003C/Code\u003E\u003CMessage\u003EThe specified blob already exists.\n",
+ "RequestId:7d510165-201e-00e4-0356-798111000000\n",
+ "Time:2019-10-02T19:19:58.1217358Z\u003C/Message\u003E\u003C/Error\u003E"
+ ]
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-c52a161e-6ea6-1142-bac1-afcea7a61e43?restype=container\u0026comp=list",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "c956e3cf-9473-1001-685b-4545ebc530d5",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "x-ms-client-request-id": "c956e3cf-9473-1001-685b-4545ebc530d5",
+ "x-ms-request-id": "7d510176-201e-00e4-1056-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CEnumerationResults ServiceEndpoint=\u0022http://amandadev2.blob.core.windows.net/\u0022 ContainerName=\u0022test-container-c52a161e-6ea6-1142-bac1-afcea7a61e43\u0022\u003E\u003CBlobs\u003E\u003CBlob\u003E\u003CName\u003Etest-blob-b918a137-a471-c6b6-7990-9ce7ccef3e3e\u003C/Name\u003E\u003CProperties\u003E\u003CCreation-Time\u003EWed, 02 Oct 2019 19:19:58 GMT\u003C/Creation-Time\u003E\u003CLast-Modified\u003EWed, 02 Oct 2019 19:19:58 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E0x8D7476D8392322A\u003C/Etag\u003E\u003CContent-Length\u003E0\u003C/Content-Length\u003E\u003CContent-Type\u003Eapplication/octet-stream\u003C/Content-Type\u003E\u003CContent-Encoding /\u003E\u003CContent-Language /\u003E\u003CContent-CRC64 /\u003E\u003CContent-MD5 /\u003E\u003CCache-Control /\u003E\u003CContent-Disposition /\u003E\u003CBlobType\u003EAppendBlob\u003C/BlobType\u003E\u003CAccessTier\u003EHot\u003C/AccessTier\u003E\u003CAccessTierInferred\u003Etrue\u003C/AccessTierInferred\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CServerEncrypted\u003Etrue\u003C/ServerEncrypted\u003E\u003CTagCount\u003E0\u003C/TagCount\u003E\u003C/Properties\u003E\u003C/Blob\u003E\u003C/Blobs\u003E\u003CNextMarker /\u003E\u003C/EnumerationResults\u003E"
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-c52a161e-6ea6-1142-bac1-afcea7a61e43?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-4abfd5640b37414abef46667a63512a6-3bb3f56ab9506d4f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "e98e2c99-284b-fbbe-eed2-29b499e7f674",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "e98e2c99-284b-fbbe-eed2-29b499e7f674",
+ "x-ms-request-id": "7d510185-201e-00e4-1b56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "1354371058",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/DeleteIfExistsAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/DeleteIfExistsAsync.json
new file mode 100644
index 000000000000..8c8e6b452adc
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/DeleteIfExistsAsync.json
@@ -0,0 +1,170 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-b73e97eb-de51-dedc-9341-de385756631c?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-5315ba283b08c848bf19fd1e05270174-eecc746395a3eb46-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "1180e7d0-9a4e-ef52-fd92-d6a43d810a53",
+ "x-ms-date": "Wed, 02 Oct 2019 19:50:24 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:50:23 GMT",
+ "ETag": "\u00220x8D74771C4125276\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:50:24 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "1180e7d0-9a4e-ef52-fd92-d6a43d810a53",
+ "x-ms-request-id": "b34d5919-201e-0045-7b5a-794f8a000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-b73e97eb-de51-dedc-9341-de385756631c/test-blob-4a86d811-485a-0373-3031-62cb347d09e3",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "1024",
+ "traceparent": "00-dd2b1cb1e2a68b408cd2b58f8591de3c-928fb83749605547-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "63530f5c-df1f-ef57-1882-8a897fa9370c",
+ "x-ms-date": "Wed, 02 Oct 2019 19:50:24 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": "njFob9ZRzi\u002BO4fb3EcLP03xWTfwoWFKHdHzgHDeHu4CJ8gULGZt9vwpXu3lSfPFuYo9P3S8Mu0Xe4PpZcbL3ByZ1bR\u002B8w7rh2Y7y0ZzZNPiKcrqoN91QfTfALDigJE5XX7RT3A7SsZ7VbQShGemoBawCzv73T89IJPDn/JeBQLQ/m3Hohljpt8Ab0snZr2NNFyeMnlZPXxDlCrcd67UGUy1PYX53wH9UGBY\u002B3HwFbnWMmeVw9aJe8DthA3ugzMwLFH\u002BciU7l1lanOIVAEYOT35xCkFHQll6K8XFDFr0Ds0xJMsf9aOQnp8OOyLwdHt63zSPfXTt7O34gEpjdor\u002BZpIQ59t68lna3G\u002BmOQc6hbdOSi0mZI1UQzvdJ3FZMSgQD9SM44yf/\u002BjatJ0JS7PmvfqTFShZ2/4AuKCfnc7kfa9HkikyqaYmrkpES7PsTvuH\u002BmV2xhv/tjfWiCbr/GId8jbxwbWKsBRUaGbeFYxOFG2pG6dlcbuTR9vxXB2DPq3oJlV8/olF\u002BUZRIlm1IaCnhHe5QuS\u002BtIB/XnnZmVP21S248fM60RXgZx5dFE9d3iY7SdelxfvFLW3VAZwPaGP2Wk0r/C\u002BxbLdh2N/KXZw1HYBXnk94TQ8188CBYdN50Pq6ar4CMeH6idkgR\u002B0f/tPRo\u002BAbu8oUegk99ghrMArj5AfhD/biMu\u002BiXRRyWAUiFfDwr8HzXhkspeywwD/Vj1nSPF/pPu7Y72z0eV61oh4AH9wbeoBI8InusGYGLXKvzM26oBulONsCG8BU\u002BuS6ewfSrKBfuhTZhUvV\u002BoqE1sH6RKiM\u002Bv4GXucFFV7D8/mhMDliN4DOUBK44RrP0z5QeUT\u002BWrY4LXwFyFG9WqS2GZVSNMpNJp89L/CZ0BnjNouosJgZwZVDZQK9WGsvEPluBsuFfZp0A1alwS7Bol1iIpXGFKYImFgADs/Hk8owEhr7L81SXbTxMLFBdABmgcKlWznVaPxTYWpzhW7KsHOMca8XynaME8Dc1OP0yyRbmY0JHjSMXqkep8pi4thKJoA9tQJRUrdMGUt0\u002BJQYXppGF\u002BvhwZI\u002B/BcF9SaoLTDolq5ftxYmBkrVvQTpG2YRAkUwHMrwZGTyArTrS1mQo\u002BgajGHlvKuEIBGhDACNUeCw8PLdeAxp\u002BC5JbbBdOr7tQRkY0o8AL0Wdr/i5T1hgZLDQOlZmtyvbrJA3nE77JuVSt8rncH9VrMWtQ8gXsKjR5Qj/iQBkhonxPSH6zJL2ooUXZpuNfPA1fomQuXdfx//nYbdF\u002B5nk7i089jdZWuAyup1C/EoRQGgUyg52180WlXUmE2rbrKrvLnRqUIa82COlXf7WGMux1h1PLS2PchZgJmC\u002BN0d1Vwg==",
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Content-MD5": "TcAyOrKurzR8gTaPHBwQDw==",
+ "Date": "Wed, 02 Oct 2019 19:50:24 GMT",
+ "ETag": "\u00220x8D74771C42657A4\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:50:24 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "63530f5c-df1f-ef57-1882-8a897fa9370c",
+ "x-ms-content-crc64": "nFBE\u002BWJujl4=",
+ "x-ms-request-id": "b34d5952-201e-0045-305a-794f8a000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-b73e97eb-de51-dedc-9341-de385756631c/test-blob-4a86d811-485a-0373-3031-62cb347d09e3",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-3b29d3c20dc5754e8a8606472e43a176-8606c7fa9054884c-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "c1300479-f28a-9da2-3d05-5ce7316ed752",
+ "x-ms-date": "Wed, 02 Oct 2019 19:50:24 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:50:24 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "c1300479-f28a-9da2-3d05-5ce7316ed752",
+ "x-ms-delete-type-permanent": "true",
+ "x-ms-request-id": "b34d5963-201e-0045-415a-794f8a000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-b73e97eb-de51-dedc-9341-de385756631c/test-blob-4a86d811-485a-0373-3031-62cb347d09e3",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-bee4f3d7e0e5ed40b80b4a85575959cc-6f2037c23584aa4a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "7b0f115d-7579-0f81-1a9a-b3381a2498ec",
+ "x-ms-date": "Wed, 02 Oct 2019 19:50:24 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 404,
+ "ResponseHeaders": {
+ "Date": "Wed, 02 Oct 2019 19:50:24 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "x-ms-client-request-id": "7b0f115d-7579-0f81-1a9a-b3381a2498ec",
+ "x-ms-error-code": "BlobNotFound",
+ "x-ms-request-id": "b34d5974-201e-0045-4e5a-794f8a000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-b73e97eb-de51-dedc-9341-de385756631c?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-76e0fc951c8b4a48a4fafd999638cbfb-7e5dbd653189ce4e-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "20896d3e-5b5e-cdd9-264c-9bbd78b4cadf",
+ "x-ms-date": "Wed, 02 Oct 2019 19:50:24 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:50:24 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "20896d3e-5b5e-cdd9-264c-9bbd78b4cadf",
+ "x-ms-request-id": "b34d5982-201e-0045-5c5a-794f8a000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "349929986",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/DeleteIfExistsAsyncAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/DeleteIfExistsAsyncAsync.json
new file mode 100644
index 000000000000..3c9b28e31e61
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/DeleteIfExistsAsyncAsync.json
@@ -0,0 +1,170 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-10738755-6f1d-5dee-42c2-27e90479bc6f?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-1113a882199025418aadd177317f6b98-72d292129f95ac40-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "021dfa0d-128b-e07d-4022-0dc0f23022b4",
+ "x-ms-date": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "ETag": "\u00220x8D74772134EC376\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "021dfa0d-128b-e07d-4022-0dc0f23022b4",
+ "x-ms-request-id": "1a7d9e86-401e-0099-315a-791dd9000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-10738755-6f1d-5dee-42c2-27e90479bc6f/test-blob-675badfa-0af2-51d3-05fa-47b630574664",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "1024",
+ "traceparent": "00-7e7156ec7dc66a48ad0f8a5c78655fbd-a562fb155bc30e4b-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "1ca259b4-ff15-f203-292e-9b6acc1aea8e",
+ "x-ms-date": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": "OtLcCVu545BuNaok9sGHmESKm2mBIGMCJ8z8kcrHsOjbqIYfVBhYQMrL\u002Bbxgr1pEc69xpbzc4xlv2eKPvVLFpoTCSE07Z0QsMlqftSamoXhxuB0bVQor/8VssHo2yYN4BlI4nmYNCQxrRXNhPC3zyDhqHQQ0qlF5lkmIzrbJ9WjXJ6/UbgMRZK4RsBCXysKYeedCy6t\u002BQ1wBvgcdhDpVoU8KihV9Hlo0WLlWIvpA4syG71XOhym9WONT0rD79N90vA7BjT\u002BtGlqNDXPyKCFhwNs7lpXlhhklTDIxKkyqOWTZ4WXrf1SM2dX6QXq2yy/C8RHUv11KjjX1m0ANe/AN4tMOGEa7dkGGr72/6kSfboECbzg61nkHj1Mv9uQUfl7k7V6mqLLoBnvQTRCfiqTxVSy\u002BCwu40wxaB4jzi39ccjFf2/3l\u002BMbOGWm9aohpZwSvPqC3VXNSLBpSTKAp9Xr7c9reQK\u002BmC11l8PGi\u002B2iE8Z\u002BDRE3fpR29DK7jk6wmpCTuwfatiiZVCDNDUWWCsDGxzlsApbAtHM69ITQAw3exP0vMszlx1mZ4LjwZnFO4O1x9MsVRJf50waUo8GnyVUW8kREatfz3P/f0iHd0E4B6BeXYgpGyYBpMWPKUSOb9htj3XQpCnYVfhfLNXJ2H/60lruqDGtKzCjH2zV0KY/YR9gGffLZ1N2dgeP2e5AN9xVhEb5r7emsFQ1PZS9AnVCH7vGab54L3r3aDIqHVFCUteQgFxvRcFXuWmTljnOyXOCTboyid4t3VTb8jeFfJMC4tq9HHIo4tnqbqBE5JkxKK6\u002Bp9\u002BnH9kJYrMHg0OZwkzWkKNfEa0BaWrQSBs96Pi7msmI1tSza9Lxo7nPIV\u002BGUKxjfkPl4hbxvU50xtfN24m6S/h6APtoEzTQbW3zQjgLWed\u002Bymqk1biyhxmWTpT7M9ggBOVXDE\u002Bg\u002B2sfBXSpDnsGaXzgXwEfBXZPx3nR0cSf5TmVwz1StE2nzd8PlcA0CYiun\u002BUoCtTHAP9/F0TF3ymWjyBLEzs9o7U/SJEyH3\u002BmC83xIzHvZ9pUzrJN46z40e6leQaf6OZdYOwv\u002BMJDlPF/yQuG1KvntxdV9kR4/7AYNnaijJZ5FhLXo7JFv38IETnAziqRcf0yvcH/SfKR1HE8F7JbkQhbBrLorzDpofeoTeUauCGVdrR5b97UecwgNc9BGZe8vHAxZcdnuMLMSRvKRvwdhxxflqEN4iE5dozmyHlhqIhf65Fk6VJaLc3hrSazGiLQAr6i4XL2vspe9\u002B9KgPBZWpCDamtaqK3J9XjjHDUKdmxaBrW6vscVaTzHFeFzH5zdiFKGP6/HdVoA6Ov6E5KVRIFy4Ho6npvZbgEuk5LA==",
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Content-MD5": "S/99b3c5dRF1y/oFMtBSeA==",
+ "Date": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "ETag": "\u00220x8D7477213623074\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "1ca259b4-ff15-f203-292e-9b6acc1aea8e",
+ "x-ms-content-crc64": "9tf0JLcc/Ds=",
+ "x-ms-request-id": "1a7d9efd-401e-0099-1a5a-791dd9000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-10738755-6f1d-5dee-42c2-27e90479bc6f/test-blob-675badfa-0af2-51d3-05fa-47b630574664",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-b07fc33d683a39498930fea0a80a7e49-da5d86c9dc343040-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "b82be460-1c46-c516-6a6b-9729a2bd7751",
+ "x-ms-date": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "b82be460-1c46-c516-6a6b-9729a2bd7751",
+ "x-ms-delete-type-permanent": "true",
+ "x-ms-request-id": "1a7d9f47-401e-0099-615a-791dd9000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-10738755-6f1d-5dee-42c2-27e90479bc6f/test-blob-675badfa-0af2-51d3-05fa-47b630574664",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-33687d48fd0a22439a16b995a4c1cec4-cfab0e3ff7c50a40-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "e70a4e40-31ee-0047-5e84-b6f648b7486e",
+ "x-ms-date": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 404,
+ "ResponseHeaders": {
+ "Date": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "x-ms-client-request-id": "e70a4e40-31ee-0047-5e84-b6f648b7486e",
+ "x-ms-error-code": "BlobNotFound",
+ "x-ms-request-id": "1a7d9f9a-401e-0099-295a-791dd9000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-10738755-6f1d-5dee-42c2-27e90479bc6f?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-59f21d882339394393361f51f66afef4-bf89a4b243ab5e4b-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "53e9fd57-8fb3-ad63-53f8-e8cf85598bc1",
+ "x-ms-date": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "53e9fd57-8fb3-ad63-53f8-e8cf85598bc1",
+ "x-ms-request-id": "1a7d9fd1-401e-0099-5b5a-791dd9000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "232350341",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/DeleteIfExistsAsync_Exists.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/DeleteIfExistsAsync_Exists.json
new file mode 100644
index 000000000000..1572817f1465
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/DeleteIfExistsAsync_Exists.json
@@ -0,0 +1,138 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-57a2153b-e17d-2454-8777-decb9ee5c770?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-b1944b4da2291246889836fbfa3b5dcb-546ec0c0fab0024f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "3297201e-2d96-9086-5efd-d7651a85c36a",
+ "x-ms-date": "Wed, 02 Oct 2019 19:52:10 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:52:10 GMT",
+ "ETag": "\u00220x8D74772036CBC08\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:52:10 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "3297201e-2d96-9086-5efd-d7651a85c36a",
+ "x-ms-request-id": "c34c599c-101e-0124-075a-794d00000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-57a2153b-e17d-2454-8777-decb9ee5c770/test-blob-d4095f85-4ab3-3613-08b1-e4660ae3d1de",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-96afcedaf9972e498c11c92002465a38-c8b8ad2f86f2a641-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "f3eb6c53-a79f-d465-0d60-29e54920857a",
+ "x-ms-date": "Wed, 02 Oct 2019 19:52:10 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 404,
+ "ResponseHeaders": {
+ "Content-Length": "215",
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:52:10 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "f3eb6c53-a79f-d465-0d60-29e54920857a",
+ "x-ms-error-code": "BlobNotFound",
+ "x-ms-request-id": "c34c59fe-101e-0124-5c5a-794d00000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": [
+ "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CError\u003E\u003CCode\u003EBlobNotFound\u003C/Code\u003E\u003CMessage\u003EThe specified blob does not exist.\n",
+ "RequestId:c34c59fe-101e-0124-5c5a-794d00000000\n",
+ "Time:2019-10-02T19:52:10.7017150Z\u003C/Message\u003E\u003C/Error\u003E"
+ ]
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-57a2153b-e17d-2454-8777-decb9ee5c770/test-blob-d4095f85-4ab3-3613-08b1-e4660ae3d1de",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-d31f257d58d622449a32d5041e1ba3e1-a661be7d7feb0b41-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "9e13f7d9-def7-543f-61d8-71ed6bf588fc",
+ "x-ms-date": "Wed, 02 Oct 2019 19:52:10 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 404,
+ "ResponseHeaders": {
+ "Date": "Wed, 02 Oct 2019 19:52:10 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "x-ms-client-request-id": "9e13f7d9-def7-543f-61d8-71ed6bf588fc",
+ "x-ms-error-code": "BlobNotFound",
+ "x-ms-request-id": "c34c5a17-101e-0124-725a-794d00000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-57a2153b-e17d-2454-8777-decb9ee5c770?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-5dac6a8b18fa6646a36d03855efeb622-8dbe0f0ff46c1443-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "510bc857-e70c-4d83-b915-f2ffd32f858f",
+ "x-ms-date": "Wed, 02 Oct 2019 19:52:10 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:52:10 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "510bc857-e70c-4d83-b915-f2ffd32f858f",
+ "x-ms-request-id": "c34c5a34-101e-0124-0e5a-794d00000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "542523696",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/DeleteIfExistsAsync_ExistsAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/DeleteIfExistsAsync_ExistsAsync.json
new file mode 100644
index 000000000000..2e1ef24fd540
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/DeleteIfExistsAsync_ExistsAsync.json
@@ -0,0 +1,138 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-5ac5c96c-7e4c-dbcb-9ad3-886e287926ab?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-7f8abd91a47bf74abb9cdc87e51549c8-84eb0b9a14223446-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "ed112f26-6102-a7ff-3e88-524c9cf996ac",
+ "x-ms-date": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "ETag": "\u00220x8D74772138D3763\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "ed112f26-6102-a7ff-3e88-524c9cf996ac",
+ "x-ms-request-id": "1a7da039-401e-0099-3a5a-791dd9000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-5ac5c96c-7e4c-dbcb-9ad3-886e287926ab/test-blob-a27b4f99-8d01-f54c-fd43-e846df5b6eb1",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-cd92c363d17fce4cb102cb32056f23b0-93f9341332c19741-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "1dd6f16f-c66d-997f-e31c-f0bf78b8c7e3",
+ "x-ms-date": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 404,
+ "ResponseHeaders": {
+ "Content-Length": "215",
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "1dd6f16f-c66d-997f-e31c-f0bf78b8c7e3",
+ "x-ms-error-code": "BlobNotFound",
+ "x-ms-request-id": "1a7da075-401e-0099-6f5a-791dd9000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": [
+ "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CError\u003E\u003CCode\u003EBlobNotFound\u003C/Code\u003E\u003CMessage\u003EThe specified blob does not exist.\n",
+ "RequestId:1a7da075-401e-0099-6f5a-791dd9000000\n",
+ "Time:2019-10-02T19:52:37.6580582Z\u003C/Message\u003E\u003C/Error\u003E"
+ ]
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-5ac5c96c-7e4c-dbcb-9ad3-886e287926ab/test-blob-a27b4f99-8d01-f54c-fd43-e846df5b6eb1",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-8ebca14d13a2474eb9ede3158a140943-a3827cb489e13443-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "eed7705e-5084-a244-88ae-154b48e974b4",
+ "x-ms-date": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 404,
+ "ResponseHeaders": {
+ "Date": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "x-ms-client-request-id": "eed7705e-5084-a244-88ae-154b48e974b4",
+ "x-ms-error-code": "BlobNotFound",
+ "x-ms-request-id": "1a7da0b2-401e-0099-265a-791dd9000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-5ac5c96c-7e4c-dbcb-9ad3-886e287926ab?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-b6641636e3e0d8419af56a608c3f97a0-94000819f2a7634c-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "0860734b-d8e1-c95e-5c3f-0c0387f917bd",
+ "x-ms-date": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:52:37 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "0860734b-d8e1-c95e-5c3f-0c0387f917bd",
+ "x-ms-request-id": "1a7da0df-401e-0099-525a-791dd9000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "1098680315",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/CreateIfNotExistsAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/CreateIfNotExistsAsync.json
new file mode 100644
index 000000000000..559934b5255b
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/CreateIfNotExistsAsync.json
@@ -0,0 +1,108 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-aab42ca2-d8af-c18a-1042-770251d27a90?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-fe70d06be0456045b578fee54764e3d3-abe7dc172061a543-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "d7ff48f9-3779-fcf5-f323-f5cb9be3a142",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "ETag": "\u00220x8D7476D83B26520\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "d7ff48f9-3779-fcf5-f323-f5cb9be3a142",
+ "x-ms-request-id": "7d510197-201e-00e4-2b56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-aab42ca2-d8af-c18a-1042-770251d27a90?restype=container",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-8012ee0441d5554caf98eeed0d28f8e3-db5471ad08ac1d49-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "09089ee5-a2d3-f316-b314-93c0af2445d8",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "ETag": "\u00220x8D7476D83B26520\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "09089ee5-a2d3-f316-b314-93c0af2445d8",
+ "x-ms-default-encryption-scope": "$account-encryption-key",
+ "x-ms-deny-encryption-scope-override": "false",
+ "x-ms-has-immutability-policy": "false",
+ "x-ms-has-legal-hold": "false",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "7d5101ba-201e-00e4-4556-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-aab42ca2-d8af-c18a-1042-770251d27a90?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-76c775e753029446add811adfb35276a-7c6aa0227db14146-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "fce5f352-98da-cb6f-6629-7b5757004e18",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "fce5f352-98da-cb6f-6629-7b5757004e18",
+ "x-ms-request-id": "7d5101c9-201e-00e4-5056-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "101298452",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/CreateIfNotExistsAsyncAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/CreateIfNotExistsAsyncAsync.json
new file mode 100644
index 000000000000..72acbcd512ce
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/CreateIfNotExistsAsyncAsync.json
@@ -0,0 +1,108 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-87c4794b-cc46-5e30-c0c6-6fa86e58e09b?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-0a100124d3fa90458583e6a724e0e7ac-178054954f1f894d-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "c3cfc6c7-619e-ddcc-5f09-5ae70ec7bf55",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "ETag": "\u00220x8D7476D847872CF\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "c3cfc6c7-619e-ddcc-5f09-5ae70ec7bf55",
+ "x-ms-request-id": "7d510339-201e-00e4-7f56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-87c4794b-cc46-5e30-c0c6-6fa86e58e09b?restype=container",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-c7fca9c914fce740902e4d94740f0e7e-9ec173c105c93f48-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "a7e00649-1d88-10fc-2ee8-ebd8eba55525",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "ETag": "\u00220x8D7476D847872CF\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "a7e00649-1d88-10fc-2ee8-ebd8eba55525",
+ "x-ms-default-encryption-scope": "$account-encryption-key",
+ "x-ms-deny-encryption-scope-override": "false",
+ "x-ms-has-immutability-policy": "false",
+ "x-ms-has-legal-hold": "false",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "7d510342-201e-00e4-0556-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-87c4794b-cc46-5e30-c0c6-6fa86e58e09b?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-bbd8c9286350904eb6731a16dcf0fab7-80963426066f3a45-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "079e85d2-17e6-c3cc-0808-52907c3e1a46",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "079e85d2-17e6-c3cc-0808-52907c3e1a46",
+ "x-ms-request-id": "7d510347-201e-00e4-0a56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "1407020672",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/CreateIfNotExistsAsync_Exists.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/CreateIfNotExistsAsync_Exists.json
new file mode 100644
index 000000000000..422ad4cd880a
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/CreateIfNotExistsAsync_Exists.json
@@ -0,0 +1,144 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-05f23944-b0b9-4109-41ec-048627c22cb7?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-649e7639824c3542985b07ec503b0caa-a1eb8e587d973a41-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "070643df-f82a-a24d-e29b-7ba9ea67eb23",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "ETag": "\u00220x8D7476D83DA4003\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "070643df-f82a-a24d-e29b-7ba9ea67eb23",
+ "x-ms-request-id": "7d5101dc-201e-00e4-5f56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-05f23944-b0b9-4109-41ec-048627c22cb7?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-5f2d79531951624f906ce12d036af24d-204e9759b57edc49-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "e4a7b378-25bc-758c-4a42-aa677400d6e3",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 409,
+ "ResponseHeaders": {
+ "Content-Length": "230",
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "e4a7b378-25bc-758c-4a42-aa677400d6e3",
+ "x-ms-error-code": "ContainerAlreadyExists",
+ "x-ms-request-id": "7d5101f1-201e-00e4-6c56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": [
+ "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CError\u003E\u003CCode\u003EContainerAlreadyExists\u003C/Code\u003E\u003CMessage\u003EThe specified container already exists.\n",
+ "RequestId:7d5101f1-201e-00e4-6c56-798111000000\n",
+ "Time:2019-10-02T19:19:58.5820775Z\u003C/Message\u003E\u003C/Error\u003E"
+ ]
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-05f23944-b0b9-4109-41ec-048627c22cb7?restype=container",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-81cdda9cd5133a4a92b726aab1a46e3c-451c91f322c7b648-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "3630dc31-07bf-9567-1924-e4e223b1e18e",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:57 GMT",
+ "ETag": "\u00220x8D7476D83DA4003\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "3630dc31-07bf-9567-1924-e4e223b1e18e",
+ "x-ms-default-encryption-scope": "$account-encryption-key",
+ "x-ms-deny-encryption-scope-override": "false",
+ "x-ms-has-immutability-policy": "false",
+ "x-ms-has-legal-hold": "false",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "7d5101fa-201e-00e4-7356-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-05f23944-b0b9-4109-41ec-048627c22cb7?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-58179c9f95dc314db6de29be0ff27b32-e15110ef08f9ec40-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "9736ad1c-9fd0-e024-a9d2-16e46049ee78",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "9736ad1c-9fd0-e024-a9d2-16e46049ee78",
+ "x-ms-request-id": "7d5101ff-201e-00e4-7756-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "1054396929",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/CreateIfNotExistsAsync_ExistsAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/CreateIfNotExistsAsync_ExistsAsync.json
new file mode 100644
index 000000000000..2ebd110f6c34
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/CreateIfNotExistsAsync_ExistsAsync.json
@@ -0,0 +1,144 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-fba9a782-01ee-0bab-3574-39a5f26033b3?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-b70b81103ccafd49abb8502469f3c656-24cfa2e3ce9e4e47-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "802b81cb-8b84-299c-7281-ef5fd42e7f71",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "ETag": "\u00220x8D7476D848F0C5A\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "802b81cb-8b84-299c-7281-ef5fd42e7f71",
+ "x-ms-request-id": "7d510356-201e-00e4-1856-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-fba9a782-01ee-0bab-3574-39a5f26033b3?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-11b171a5cde2ad41aeb31ec00f272d5b-492ba4bb5104424e-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "70d9b4d0-b334-ef2e-40e8-caeba4b2f03f",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 409,
+ "ResponseHeaders": {
+ "Content-Length": "230",
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "70d9b4d0-b334-ef2e-40e8-caeba4b2f03f",
+ "x-ms-error-code": "ContainerAlreadyExists",
+ "x-ms-request-id": "7d510363-201e-00e4-2256-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": [
+ "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CError\u003E\u003CCode\u003EContainerAlreadyExists\u003C/Code\u003E\u003CMessage\u003EThe specified container already exists.\n",
+ "RequestId:7d510363-201e-00e4-2256-798111000000\n",
+ "Time:2019-10-02T19:19:59.7679574Z\u003C/Message\u003E\u003C/Error\u003E"
+ ]
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-fba9a782-01ee-0bab-3574-39a5f26033b3?restype=container",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-8da30954ee2cca46b8ebebfe96278227-18f71190f8f7064f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "1f8eea04-0f54-dd3c-784d-5480c71648e2",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "ETag": "\u00220x8D7476D848F0C5A\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "1f8eea04-0f54-dd3c-784d-5480c71648e2",
+ "x-ms-default-encryption-scope": "$account-encryption-key",
+ "x-ms-deny-encryption-scope-override": "false",
+ "x-ms-has-immutability-policy": "false",
+ "x-ms-has-legal-hold": "false",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "7d51036e-201e-00e4-2c56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-fba9a782-01ee-0bab-3574-39a5f26033b3?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-1d0ca768a322874ba2ffd649df0fb608-1c9c97344956b349-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "bae6103b-d024-7aeb-d585-6ea6ba9c7269",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "bae6103b-d024-7aeb-d585-6ea6ba9c7269",
+ "x-ms-request-id": "7d51037d-201e-00e4-3b56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "61532685",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteBlobIfExistsAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteBlobIfExistsAsync.json
new file mode 100644
index 000000000000..a68097368edd
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteBlobIfExistsAsync.json
@@ -0,0 +1,170 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-9288b818-9ddb-0903-dc40-cf710414c69e?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-0de4241c57f18f449aa17de9ce4d24f3-fa7e706167421047-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "53a8f9f5-2eca-fcf5-cf41-bd224cf284e9",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "ETag": "\u00220x8D7476D83F82DF3\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "53a8f9f5-2eca-fcf5-cf41-bd224cf284e9",
+ "x-ms-request-id": "7d510206-201e-00e4-7b56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-9288b818-9ddb-0903-dc40-cf710414c69e/test-blob-9d733296-508e-c020-403d-312fdfd98a40",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "100",
+ "traceparent": "00-904491e75aafc04a92bd07a007c5452a-bb5bc296171abc45-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "7a832bf8-2a04-58b9-5359-6760abd76ff9",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": "ukt8Cmxz1GMGqalYmlb\u002BbyfUkkwo6PSl2OcTjf3FHPW2fGcAdnl8I10Pl\u002BSnxybpP8IICkc\u002BGNJW1jKFX0dmQIyzoh3u/fiuV2/uGFAQ/hDAKk47vRKueGSVqZ9G98MWqVZY8w==",
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Content-MD5": "WhWynDQ4WwDdYGQoc0gZXg==",
+ "Date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "ETag": "\u00220x8D7476D84079E9A\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "7a832bf8-2a04-58b9-5359-6760abd76ff9",
+ "x-ms-content-crc64": "BiNkHYssc3c=",
+ "x-ms-request-id": "7d510220-201e-00e4-1156-798111000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-9288b818-9ddb-0903-dc40-cf710414c69e/test-blob-9d733296-508e-c020-403d-312fdfd98a40",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-bb179a8384ac614ea4049b9f0b28c7c2-6007b7e561598147-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "7d1e8d33-ddd3-fbee-4ea1-ed6ff2522c77",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "7d1e8d33-ddd3-fbee-4ea1-ed6ff2522c77",
+ "x-ms-delete-type-permanent": "true",
+ "x-ms-request-id": "7d51023e-201e-00e4-2956-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-9288b818-9ddb-0903-dc40-cf710414c69e/test-blob-9d733296-508e-c020-403d-312fdfd98a40",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-3b5940e3b0529e45999f1ee0c5ba4fed-6f180a0de172284d-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "1d2d4393-f2b9-d925-1cef-698d1e02710c",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 404,
+ "ResponseHeaders": {
+ "Date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "x-ms-client-request-id": "1d2d4393-f2b9-d925-1cef-698d1e02710c",
+ "x-ms-error-code": "BlobNotFound",
+ "x-ms-request-id": "7d510264-201e-00e4-4c56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-9288b818-9ddb-0903-dc40-cf710414c69e?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-ea8239cb49964244a0a911aa1817c824-31a35d9197e6a941-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "aedcfd5c-0e25-9dbe-62b5-b147a279cdb7",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "aedcfd5c-0e25-9dbe-62b5-b147a279cdb7",
+ "x-ms-request-id": "7d510283-201e-00e4-6756-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "684307682",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteBlobIfExistsAsyncAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteBlobIfExistsAsyncAsync.json
new file mode 100644
index 000000000000..a3756070b6e7
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteBlobIfExistsAsyncAsync.json
@@ -0,0 +1,170 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-1982772d-cdc6-6abc-8099-5c97883b348d?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-08de19365ee538468831641a73f93ad3-10cff1f5f257ed44-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "1d0e50bf-ba80-d295-a37a-932eb31037a7",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "ETag": "\u00220x8D7476D84AD487D\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "1d0e50bf-ba80-d295-a37a-932eb31037a7",
+ "x-ms-request-id": "7d5103ae-201e-00e4-6556-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-1982772d-cdc6-6abc-8099-5c97883b348d/test-blob-71376dfa-6af8-a099-fc1d-40edf6c841e2",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "100",
+ "traceparent": "00-dbe4a7c7587b754abb430da49bc3dcc9-342d24012ecf3b44-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "416609b1-5aad-1012-40d9-23fa29a211cb",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": "EpbXNy0XDIZrMZVG\u002BkyxyKEv\u002BbtnFc1Vtm4gY3qo29s5sRwcOP9542GwBsbUUqawbHdMx86Fe/3IgoG\u002B9qkMwla6DUgwlI\u002BhtRZatg4GgGTHb/cCXBQNszYfVLZ\u002Buuy4pENwGg==",
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Content-MD5": "4H8ikheUSPf\u002BFM\u002BKfnuDUg==",
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "ETag": "\u00220x8D7476D84B53C4A\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "416609b1-5aad-1012-40d9-23fa29a211cb",
+ "x-ms-content-crc64": "8Z5Z\u002BMyI4Ig=",
+ "x-ms-request-id": "7d5103d4-201e-00e4-0556-798111000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-1982772d-cdc6-6abc-8099-5c97883b348d/test-blob-71376dfa-6af8-a099-fc1d-40edf6c841e2",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-25eb705dabca12468f034e9dbac6b248-07ad0d6522efdd46-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "9b0665c3-2edd-eb6d-4b6f-970e87168e88",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "9b0665c3-2edd-eb6d-4b6f-970e87168e88",
+ "x-ms-delete-type-permanent": "true",
+ "x-ms-request-id": "7d5103f5-201e-00e4-2256-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-1982772d-cdc6-6abc-8099-5c97883b348d/test-blob-71376dfa-6af8-a099-fc1d-40edf6c841e2",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-fc501982a7407442a7a978fda23ad7d1-2746c1b3746f7747-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "c336c125-759c-67ed-f733-1f7f870b2aec",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 404,
+ "ResponseHeaders": {
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "x-ms-client-request-id": "c336c125-759c-67ed-f733-1f7f870b2aec",
+ "x-ms-error-code": "BlobNotFound",
+ "x-ms-request-id": "7d510419-201e-00e4-4056-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-1982772d-cdc6-6abc-8099-5c97883b348d?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-693fe4e60ccfec46aa1ea98a874a2a1e-040f4797aef00648-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "c5e9e88f-cbdf-3dec-35c5-a4ca6d170ae3",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "c5e9e88f-cbdf-3dec-35c5-a4ca6d170ae3",
+ "x-ms-request-id": "7d510429-201e-00e4-4f56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "618756265",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteBlobIfExistsAsync_Error.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteBlobIfExistsAsync_Error.json
new file mode 100644
index 000000000000..1d0ccda2b9d9
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteBlobIfExistsAsync_Error.json
@@ -0,0 +1,44 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-7bd9b979-d0c8-9ad7-d6fc-886357701ae4/test-blob-7e3d64e8-00d6-dec7-f08d-c440b747306e",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-55a29068d9fab841be5ddc7b5668e3dd-4478b8ab98d0a241-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "671faccf-cd4b-79ae-f2fa-8b3b0b97e28e",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 404,
+ "ResponseHeaders": {
+ "Content-Length": "225",
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "671faccf-cd4b-79ae-f2fa-8b3b0b97e28e",
+ "x-ms-error-code": "ContainerNotFound",
+ "x-ms-request-id": "7d510294-201e-00e4-7856-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": [
+ "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CError\u003E\u003CCode\u003EContainerNotFound\u003C/Code\u003E\u003CMessage\u003EThe specified container does not exist.\n",
+ "RequestId:7d510294-201e-00e4-7856-798111000000\n",
+ "Time:2019-10-02T19:19:59.0524271Z\u003C/Message\u003E\u003C/Error\u003E"
+ ]
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "735122023",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteBlobIfExistsAsync_ErrorAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteBlobIfExistsAsync_ErrorAsync.json
new file mode 100644
index 000000000000..93c5e5bcf559
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteBlobIfExistsAsync_ErrorAsync.json
@@ -0,0 +1,44 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-4406c869-4a58-a45a-5cc8-b9b0215f984f/test-blob-8f211086-665d-992a-f932-ee3fe98ae365",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-7d2a5b13d595144d9c52f12239b18c36-6cb8ccc976fffb48-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "e1e5fe58-ba9f-038c-9d6c-4a255c1bbbd2",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 404,
+ "ResponseHeaders": {
+ "Content-Length": "225",
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "e1e5fe58-ba9f-038c-9d6c-4a255c1bbbd2",
+ "x-ms-error-code": "ContainerNotFound",
+ "x-ms-request-id": "7d51044b-201e-00e4-6d56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": [
+ "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CError\u003E\u003CCode\u003EContainerNotFound\u003C/Code\u003E\u003CMessage\u003EThe specified container does not exist.\n",
+ "RequestId:7d51044b-201e-00e4-6d56-798111000000\n",
+ "Time:2019-10-02T19:20:00.1682554Z\u003C/Message\u003E\u003C/Error\u003E"
+ ]
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "763556938",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteBlobIfExistsAsync_Exists.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteBlobIfExistsAsync_Exists.json
new file mode 100644
index 000000000000..8848576904de
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteBlobIfExistsAsync_Exists.json
@@ -0,0 +1,206 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-cea82721-3644-e5e2-5902-b5aa3f0ce5e4?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-a45f4ebdab056e479494e181c4ca59be-8938d0a2eb5a1740-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "8cf2769f-dd21-35e1-f199-7f8ea25255ee",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "ETag": "\u00220x8D7476D8431985C\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "8cf2769f-dd21-35e1-f199-7f8ea25255ee",
+ "x-ms-request-id": "7d5102b2-201e-00e4-1556-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-cea82721-3644-e5e2-5902-b5aa3f0ce5e4/test-blob-eb8a9293-a1e9-5452-e5c6-eae73e0f0fda",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "100",
+ "traceparent": "00-1680285a2574a44f8597f5296d8b3034-132746b017380149-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "49953292-97fa-80ea-e50d-90de790d2484",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": "wG0LyBpYwryqAu7hTbRAkAcKP0T0Vl7\u002BJJ2nW/L69uGKpM40R43TO8/NQeazcQYxhlrgNNDL5mkODKR8sGfKsAwMVqjlC0h5NgN0JxV4S7OXdtSYGsIRvr5lJTvpV4pnApDapg==",
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Content-MD5": "nGnMhYzae/cVPaib4aUIDg==",
+ "Date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "ETag": "\u00220x8D7476D84398D21\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "49953292-97fa-80ea-e50d-90de790d2484",
+ "x-ms-content-crc64": "wWLDRmp6DSw=",
+ "x-ms-request-id": "7d5102c4-201e-00e4-2356-798111000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-cea82721-3644-e5e2-5902-b5aa3f0ce5e4/test-blob-eb8a9293-a1e9-5452-e5c6-eae73e0f0fda",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-9627f0b6810dbe46b6cbe39d820239bd-d252a3acfeafc448-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "d0d45072-90fb-83ac-73cb-9503d5205349",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "d0d45072-90fb-83ac-73cb-9503d5205349",
+ "x-ms-delete-type-permanent": "true",
+ "x-ms-request-id": "7d5102d1-201e-00e4-2f56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-cea82721-3644-e5e2-5902-b5aa3f0ce5e4/test-blob-eb8a9293-a1e9-5452-e5c6-eae73e0f0fda",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-a848b5635a309e4ead1715c8ccbd8225-d2de7be960729648-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "296b9894-5338-0d89-f714-c45fc483dea3",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 404,
+ "ResponseHeaders": {
+ "Content-Length": "215",
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "296b9894-5338-0d89-f714-c45fc483dea3",
+ "x-ms-error-code": "BlobNotFound",
+ "x-ms-request-id": "7d5102e1-201e-00e4-3b56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": [
+ "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CError\u003E\u003CCode\u003EBlobNotFound\u003C/Code\u003E\u003CMessage\u003EThe specified blob does not exist.\n",
+ "RequestId:7d5102e1-201e-00e4-3b56-798111000000\n",
+ "Time:2019-10-02T19:19:59.2555775Z\u003C/Message\u003E\u003C/Error\u003E"
+ ]
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-cea82721-3644-e5e2-5902-b5aa3f0ce5e4/test-blob-eb8a9293-a1e9-5452-e5c6-eae73e0f0fda",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-e11e01d7c7c70247a083663084e63c80-e2a936810d759046-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "3c6f3f5d-2ab5-4610-45ea-2544e6b07427",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 404,
+ "ResponseHeaders": {
+ "Date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "x-ms-client-request-id": "3c6f3f5d-2ab5-4610-45ea-2544e6b07427",
+ "x-ms-error-code": "BlobNotFound",
+ "x-ms-request-id": "7d5102f6-201e-00e4-4b56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-cea82721-3644-e5e2-5902-b5aa3f0ce5e4?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-285d4591550eb64ead80186670227a03-1d3138705281b14b-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "85013bc0-a114-c7ed-0e1e-fcac365ae08f",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "85013bc0-a114-c7ed-0e1e-fcac365ae08f",
+ "x-ms-request-id": "7d5102fc-201e-00e4-4f56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "141049622",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteBlobIfExistsAsync_ExistsAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteBlobIfExistsAsync_ExistsAsync.json
new file mode 100644
index 000000000000..612029c89ef3
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteBlobIfExistsAsync_ExistsAsync.json
@@ -0,0 +1,206 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-30bf6cea-4473-83dd-d318-a0d9ef565f0e?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-6c5da267fe8b024e866afcfeec5dfd82-04bd88c4ea824e43-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "8843c149-6568-9a74-421c-b947ee96156a",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "ETag": "\u00220x8D7476D84DBB44F\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "8843c149-6568-9a74-421c-b947ee96156a",
+ "x-ms-request-id": "7d510464-201e-00e4-0156-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-30bf6cea-4473-83dd-d318-a0d9ef565f0e/test-blob-c733749b-b085-fdaa-e39a-87c060b6ddec",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "100",
+ "traceparent": "00-389484f93b0e634c9fc3e2e49dec5017-fd79be0648185343-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "6705dc6e-f896-57d5-99fa-e497346dd66a",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": "fVaPLRLWpiJI9oPJNEI3Ep16izCz1MSZF0alzd2zOos\u002BzMmXB\u002BdXxM4Qf44t4cigY3Qj5iqsOamR9hbLMdhFlbv3imh4nwu1IsdiolQ1azV\u002BBGpoj1RhkZIgBRDQi5L1y\u002BrSNQ==",
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Content-MD5": "2iFXjhfw8YjX\u002Bwh7ou3SEw==",
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "ETag": "\u00220x8D7476D84E38098\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "6705dc6e-f896-57d5-99fa-e497346dd66a",
+ "x-ms-content-crc64": "THjNTPX5aP4=",
+ "x-ms-request-id": "7d510482-201e-00e4-1a56-798111000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-30bf6cea-4473-83dd-d318-a0d9ef565f0e/test-blob-c733749b-b085-fdaa-e39a-87c060b6ddec",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-588792be7c62044a8db3aa7884c1cc55-1ceba8f23a42db4a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "ef86663e-6be4-5e9f-8ad0-2a6e892b2edc",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "ef86663e-6be4-5e9f-8ad0-2a6e892b2edc",
+ "x-ms-delete-type-permanent": "true",
+ "x-ms-request-id": "7d5104a5-201e-00e4-3456-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-30bf6cea-4473-83dd-d318-a0d9ef565f0e/test-blob-c733749b-b085-fdaa-e39a-87c060b6ddec",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-f69e973d1ab2de4c8d19f56fc63f5476-f1c5efe45601df4f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "ce58f474-e7e6-f786-967f-930c7c909864",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 404,
+ "ResponseHeaders": {
+ "Content-Length": "215",
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "ce58f474-e7e6-f786-967f-930c7c909864",
+ "x-ms-error-code": "BlobNotFound",
+ "x-ms-request-id": "7d5104b1-201e-00e4-3a56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": [
+ "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CError\u003E\u003CCode\u003EBlobNotFound\u003C/Code\u003E\u003CMessage\u003EThe specified blob does not exist.\n",
+ "RequestId:7d5104b1-201e-00e4-3a56-798111000000\n",
+ "Time:2019-10-02T19:20:00.3734068Z\u003C/Message\u003E\u003C/Error\u003E"
+ ]
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-30bf6cea-4473-83dd-d318-a0d9ef565f0e/test-blob-c733749b-b085-fdaa-e39a-87c060b6ddec",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-49c2209ad0fe4f4fb71009b5d14fdeb4-b7e540b2e5318c4b-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "94fa3b45-60d3-d9f6-6201-bf839b444b4b",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 404,
+ "ResponseHeaders": {
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "x-ms-client-request-id": "94fa3b45-60d3-d9f6-6201-bf839b444b4b",
+ "x-ms-error-code": "BlobNotFound",
+ "x-ms-request-id": "7d5104c0-201e-00e4-4756-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-30bf6cea-4473-83dd-d318-a0d9ef565f0e?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-4c2bb8d9c2afcb4caaa7dfec8d8a0b05-5cf6f41879a9884a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "41c6e3d1-0396-6f91-7460-80af716974d1",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "41c6e3d1-0396-6f91-7460-80af716974d1",
+ "x-ms-request-id": "7d5104d3-201e-00e4-5156-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "115147376",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteIfExistsAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteIfExistsAsync.json
new file mode 100644
index 000000000000..a54bfaf29596
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteIfExistsAsync.json
@@ -0,0 +1,70 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-9239973e-03fd-b898-c280-7d69a131f253?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-d71305459a23a34689ef44ea8366598d-968c9a8d018e1e4c-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "8ac306ac-ffdf-9481-f849-20f802fb36bf",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "ETag": "\u00220x8D7476D845F40BD\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "8ac306ac-ffdf-9481-f849-20f802fb36bf",
+ "x-ms-request-id": "7d510319-201e-00e4-6256-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-9239973e-03fd-b898-c280-7d69a131f253?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-5c4d165fca25d145abb686c9d297b3ae-042292ab8cbf9747-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "9bbc563b-676d-b374-8083-87883c3eea38",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "9bbc563b-676d-b374-8083-87883c3eea38",
+ "x-ms-request-id": "7d510329-201e-00e4-6f56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "481835137",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteIfExistsAsyncAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteIfExistsAsyncAsync.json
new file mode 100644
index 000000000000..ebc259b9aeaf
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteIfExistsAsyncAsync.json
@@ -0,0 +1,70 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-f31dab3b-c673-4271-eff6-66ea07c8f2af?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-4a57d8afb3e03444a6e26ecd8d5ea808-eb0a7152f1e37641-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "ed4fe2aa-d751-9cd1-42f9-6cfb0b82fb86",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "ETag": "\u00220x8D7476D850ABC84\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "ed4fe2aa-d751-9cd1-42f9-6cfb0b82fb86",
+ "x-ms-request-id": "7d5104e2-201e-00e4-5c56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-f31dab3b-c673-4271-eff6-66ea07c8f2af?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-44fb37be2b6622499b57a41f68ef26eb-e663dfd94a98c34f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "253f0003-0579-325e-6fbb-0c2082127b2f",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "253f0003-0579-325e-6fbb-0c2082127b2f",
+ "x-ms-request-id": "7d5104f1-201e-00e4-6656-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "1084796617",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteIfExistsAsync_Exists.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteIfExistsAsync_Exists.json
new file mode 100644
index 000000000000..02160a219613
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteIfExistsAsync_Exists.json
@@ -0,0 +1,44 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-e71b8816-8448-4001-8f6e-e385eda8f629?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-8ac6cfac612000468dcdc2ffd5460d79-a6134127c588b84f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "f4da5ca3-7c27-9ada-d890-6e1cc589a5ba",
+ "x-ms-date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 404,
+ "ResponseHeaders": {
+ "Content-Length": "225",
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:19:58 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "f4da5ca3-7c27-9ada-d890-6e1cc589a5ba",
+ "x-ms-error-code": "ContainerNotFound",
+ "x-ms-request-id": "7d51032e-201e-00e4-7456-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": [
+ "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CError\u003E\u003CCode\u003EContainerNotFound\u003C/Code\u003E\u003CMessage\u003EThe specified container does not exist.\n",
+ "RequestId:7d51032e-201e-00e4-7456-798111000000\n",
+ "Time:2019-10-02T19:19:59.5147699Z\u003C/Message\u003E\u003C/Error\u003E"
+ ]
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "745594443",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteIfExistsAsync_ExistsAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteIfExistsAsync_ExistsAsync.json
new file mode 100644
index 000000000000..8f0bef9a531c
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/DeleteIfExistsAsync_ExistsAsync.json
@@ -0,0 +1,44 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-1129a974-b6e4-3b20-039e-96c8f8589e77?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-0853e2d9b019f34eab65d770588e77f4-3434c2c0fdc8084a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "88723ace-fcc9-f943-4aee-2fa69c1993bb",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 404,
+ "ResponseHeaders": {
+ "Content-Length": "225",
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:19:59 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "88723ace-fcc9-f943-4aee-2fa69c1993bb",
+ "x-ms-error-code": "ContainerNotFound",
+ "x-ms-request-id": "7d5104fb-201e-00e4-6f56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": [
+ "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CError\u003E\u003CCode\u003EContainerNotFound\u003C/Code\u003E\u003CMessage\u003EThe specified container does not exist.\n",
+ "RequestId:7d5104fb-201e-00e4-6f56-798111000000\n",
+ "Time:2019-10-02T19:20:00.6476108Z\u003C/Message\u003E\u003C/Error\u003E"
+ ]
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "601946474",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/CreateIfNotExistsAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/CreateIfNotExistsAsync.json
new file mode 100644
index 000000000000..9587b2a54fac
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/CreateIfNotExistsAsync.json
@@ -0,0 +1,108 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-02d25989-81eb-ed7f-d610-2c7b85c9262a?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-464326ce62218d4a908cdd161d21d8a7-85bb8deea4c32647-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "57916fa2-9aa4-7efa-c4bb-02e508b2500c",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "ETag": "\u00220x8D7476D85252755\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "57916fa2-9aa4-7efa-c4bb-02e508b2500c",
+ "x-ms-request-id": "7d510501-201e-00e4-7456-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-02d25989-81eb-ed7f-d610-2c7b85c9262a/test-blob-93aef318-e038-6280-d2dc-5c6c9c9f0f09",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-9958c986ba08964588bd4338953c382c-47d7b78d1d280541-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-content-length": "1024",
+ "x-ms-blob-type": "PageBlob",
+ "x-ms-client-request-id": "eac7d82f-1f1d-c23f-ef2e-84c83d8ee125",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "ETag": "\u00220x8D7476D8533AADC\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "eac7d82f-1f1d-c23f-ef2e-84c83d8ee125",
+ "x-ms-request-id": "7d510517-201e-00e4-0256-798111000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-02d25989-81eb-ed7f-d610-2c7b85c9262a?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-5ba37929b90b9b4ab82208885d6db0f6-26c8be022b91a94f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "c43c69ee-24d8-3eeb-7416-27084abd8695",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "c43c69ee-24d8-3eeb-7416-27084abd8695",
+ "x-ms-request-id": "7d510528-201e-00e4-0e56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "536243089",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/CreateIfNotExistsAsyncAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/CreateIfNotExistsAsyncAsync.json
new file mode 100644
index 000000000000..fbd5d8036f1d
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/CreateIfNotExistsAsyncAsync.json
@@ -0,0 +1,108 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-059085fc-1eef-f22f-e3d4-962d585ef889?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-06eb3264998e4541a61c15065dda494a-19dbbaf58cbeaa45-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "cbe2a3a9-4818-4c36-128b-8671c3bc9163",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "ETag": "\u00220x8D7476D857A5C66\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "cbe2a3a9-4818-4c36-128b-8671c3bc9163",
+ "x-ms-request-id": "7d5105a6-201e-00e4-7156-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-059085fc-1eef-f22f-e3d4-962d585ef889/test-blob-174367b9-cb4a-fcda-b235-d6bea7ac1a61",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-83877573ae45b24fb11844819ae60019-50b947cf40e09044-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-content-length": "1024",
+ "x-ms-blob-type": "PageBlob",
+ "x-ms-client-request-id": "71c812a0-ac3f-deb5-c9e6-19e27177a465",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "ETag": "\u00220x8D7476D85829C7D\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "71c812a0-ac3f-deb5-c9e6-19e27177a465",
+ "x-ms-request-id": "7d5105b6-201e-00e4-7c56-798111000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-059085fc-1eef-f22f-e3d4-962d585ef889?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-b41f57fce3ea4b41a38a0967b0513c81-570dcff40fbf844e-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "951e649d-a8e4-6322-e0a5-eb95138ea61e",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "951e649d-a8e4-6322-e0a5-eb95138ea61e",
+ "x-ms-request-id": "7d5105c5-201e-00e4-0456-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "13915265",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/CreateIfNotExistsAsync_Error.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/CreateIfNotExistsAsync_Error.json
new file mode 100644
index 000000000000..74babeed7035
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/CreateIfNotExistsAsync_Error.json
@@ -0,0 +1,111 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-11d22bc9-57b3-d653-bb55-b98710d3586e?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-90604037e718bc4596d9fab8639ad74a-272c47b36606a84f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "bb3faef3-8023-322e-9d15-5497a227af21",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "ETag": "\u00220x8D7476D85438A8B\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "bb3faef3-8023-322e-9d15-5497a227af21",
+ "x-ms-request-id": "7d51053f-201e-00e4-2256-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-11d22bc9-57b3-d653-bb55-b98710d3586e/test-blob-eb6b2b2e-69e8-8ab1-8cf4-25eef50401b1",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-306a5cde29b9b842b193f16c986a079b-faded9f119d74f41-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-content-length": "511",
+ "x-ms-blob-type": "PageBlob",
+ "x-ms-client-request-id": "a9204115-f79e-8a4a-fcb4-2f2f5b3f3d99",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 400,
+ "ResponseHeaders": {
+ "Content-Length": "333",
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "a9204115-f79e-8a4a-fcb4-2f2f5b3f3d99",
+ "x-ms-error-code": "InvalidHeaderValue",
+ "x-ms-request-id": "7d510553-201e-00e4-3456-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": [
+ "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CError\u003E\u003CCode\u003EInvalidHeaderValue\u003C/Code\u003E\u003CMessage\u003EThe value for one of the HTTP headers is not in the correct format.\n",
+ "RequestId:7d510553-201e-00e4-3456-798111000000\n",
+ "Time:2019-10-02T19:20:00.9498351Z\u003C/Message\u003E\u003CHeaderName\u003Ex-ms-blob-content-length\u003C/HeaderName\u003E\u003CHeaderValue\u003E511\u003C/HeaderValue\u003E\u003C/Error\u003E"
+ ]
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-11d22bc9-57b3-d653-bb55-b98710d3586e?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-b69ce5a777a40b479a10e0f8fb8bd1cf-ed4fb5ccf3a0344b-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "b3d961b9-57e4-7b12-3b09-64df6e1b2d23",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "b3d961b9-57e4-7b12-3b09-64df6e1b2d23",
+ "x-ms-request-id": "7d510567-201e-00e4-4456-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "1796584565",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/CreateIfNotExistsAsync_ErrorAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/CreateIfNotExistsAsync_ErrorAsync.json
new file mode 100644
index 000000000000..7241235783ce
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/CreateIfNotExistsAsync_ErrorAsync.json
@@ -0,0 +1,111 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-0e365c7d-7b86-9116-266c-5d5ae7c30f23?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-149ba5e48c51634cae0b2627c114fd95-ee1b271415e7b140-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "bdab9bea-de26-1647-9195-5defaab3522c",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "ETag": "\u00220x8D7476D85922EAD\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "bdab9bea-de26-1647-9195-5defaab3522c",
+ "x-ms-request-id": "7d5105e1-201e-00e4-1456-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-0e365c7d-7b86-9116-266c-5d5ae7c30f23/test-blob-fe6b2e7c-9936-589f-9a66-7bcde6f680b6",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-6f8362c67b4f5f448c9f2c9f1f1b4cf5-d2d0642c68a74c46-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-content-length": "511",
+ "x-ms-blob-type": "PageBlob",
+ "x-ms-client-request-id": "e2a36866-e605-51dd-fb52-22c0627a309b",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 400,
+ "ResponseHeaders": {
+ "Content-Length": "333",
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "e2a36866-e605-51dd-fb52-22c0627a309b",
+ "x-ms-error-code": "InvalidHeaderValue",
+ "x-ms-request-id": "7d5105ea-201e-00e4-1a56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": [
+ "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CError\u003E\u003CCode\u003EInvalidHeaderValue\u003C/Code\u003E\u003CMessage\u003EThe value for one of the HTTP headers is not in the correct format.\n",
+ "RequestId:7d5105ea-201e-00e4-1a56-798111000000\n",
+ "Time:2019-10-02T19:20:01.4642170Z\u003C/Message\u003E\u003CHeaderName\u003Ex-ms-blob-content-length\u003C/HeaderName\u003E\u003CHeaderValue\u003E511\u003C/HeaderValue\u003E\u003C/Error\u003E"
+ ]
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-0e365c7d-7b86-9116-266c-5d5ae7c30f23?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-c29f5cee8d50324b9b134787801ffff2-1ad1b5f793de1e44-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "7d669c40-9d52-a0b1-6c1d-50c62e3cc113",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "7d669c40-9d52-a0b1-6c1d-50c62e3cc113",
+ "x-ms-request-id": "7d5105f3-201e-00e4-2156-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "516962922",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/CreateIfNotExistsAsync_Exists.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/CreateIfNotExistsAsync_Exists.json
new file mode 100644
index 000000000000..08efb5a0981e
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/CreateIfNotExistsAsync_Exists.json
@@ -0,0 +1,147 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-59c60408-7dbf-7bbb-0451-6c186fd4f19a?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-2870b0efb41a9840912638e1900753c6-eded0edbf53b0349-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "e2ffbdc6-d6e4-e7e5-ca82-04f4283f79a4",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "ETag": "\u00220x8D7476D855AC074\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "e2ffbdc6-d6e4-e7e5-ca82-04f4283f79a4",
+ "x-ms-request-id": "7d510578-201e-00e4-4e56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-59c60408-7dbf-7bbb-0451-6c186fd4f19a/test-blob-14000e24-3d12-3099-87b6-9de5b389493f",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "traceparent": "00-e19a7f0e6f45644483d8fddb23702159-991f9cd8bc161744-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-content-length": "1024",
+ "x-ms-blob-type": "PageBlob",
+ "x-ms-client-request-id": "240c2561-49c4-89bb-23ce-5b2d39003440",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "ETag": "\u00220x8D7476D85634EFA\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "240c2561-49c4-89bb-23ce-5b2d39003440",
+ "x-ms-request-id": "7d51058a-201e-00e4-5d56-798111000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-59c60408-7dbf-7bbb-0451-6c186fd4f19a/test-blob-14000e24-3d12-3099-87b6-9de5b389493f",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-982039af9831f84899830c6dd815e55e-5fd034f7b855494b-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-content-length": "1024",
+ "x-ms-blob-type": "PageBlob",
+ "x-ms-client-request-id": "8d8320cf-257c-a97a-e3c9-8e05b3873c1e",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 409,
+ "ResponseHeaders": {
+ "Content-Length": "220",
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "8d8320cf-257c-a97a-e3c9-8e05b3873c1e",
+ "x-ms-error-code": "BlobAlreadyExists",
+ "x-ms-request-id": "7d510591-201e-00e4-6256-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": [
+ "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CError\u003E\u003CCode\u003EBlobAlreadyExists\u003C/Code\u003E\u003CMessage\u003EThe specified blob already exists.\n",
+ "RequestId:7d510591-201e-00e4-6256-798111000000\n",
+ "Time:2019-10-02T19:20:01.1589908Z\u003C/Message\u003E\u003C/Error\u003E"
+ ]
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-59c60408-7dbf-7bbb-0451-6c186fd4f19a?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-95e201dd6e5aee4cb8a2edf3356e474f-ddc26f22b34aff4e-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "185e5c72-a77c-13c3-4a57-a62338c962d1",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "185e5c72-a77c-13c3-4a57-a62338c962d1",
+ "x-ms-request-id": "7d51059c-201e-00e4-6a56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "983910991",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/CreateIfNotExistsAsync_ExistsAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/CreateIfNotExistsAsync_ExistsAsync.json
new file mode 100644
index 000000000000..f2bf4b9bd5b7
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/CreateIfNotExistsAsync_ExistsAsync.json
@@ -0,0 +1,147 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-7064f998-28f6-720e-04f4-793dbf30aa61?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-bfdf642aca7f4546bf77c82db5f2163d-6a73ad46ee892246-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "ffe05389-e3b0-4cd7-88cb-f740768814a1",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "ETag": "\u00220x8D7476D85A93D7E\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "ffe05389-e3b0-4cd7-88cb-f740768814a1",
+ "x-ms-request-id": "7d510606-201e-00e4-3156-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-7064f998-28f6-720e-04f4-793dbf30aa61/test-blob-ffc56b80-7f93-bcbe-6679-4f3c7e2452eb",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "traceparent": "00-da80391aed2d8d43a5d9e626bd7eb8f0-0c12ca6f0c3c834a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-content-length": "1024",
+ "x-ms-blob-type": "PageBlob",
+ "x-ms-client-request-id": "b36808a4-de53-0a86-9423-9837949bcd63",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:20:00 GMT",
+ "ETag": "\u00220x8D7476D85B12F0C\u0022",
+ "Last-Modified": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "b36808a4-de53-0a86-9423-9837949bcd63",
+ "x-ms-request-id": "7d510616-201e-00e4-3d56-798111000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-7064f998-28f6-720e-04f4-793dbf30aa61/test-blob-ffc56b80-7f93-bcbe-6679-4f3c7e2452eb",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-1d0e301ca964134f896a2bcc2b52b6c4-6171db9bb27a2945-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-blob-content-length": "1024",
+ "x-ms-blob-type": "PageBlob",
+ "x-ms-client-request-id": "7597b704-9ebb-3998-d9a9-d72c137ade56",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 409,
+ "ResponseHeaders": {
+ "Content-Length": "220",
+ "Content-Type": "application/xml",
+ "Date": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "7597b704-9ebb-3998-d9a9-d72c137ade56",
+ "x-ms-error-code": "BlobAlreadyExists",
+ "x-ms-request-id": "7d510622-201e-00e4-4656-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": [
+ "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CError\u003E\u003CCode\u003EBlobAlreadyExists\u003C/Code\u003E\u003CMessage\u003EThe specified blob already exists.\n",
+ "RequestId:7d510622-201e-00e4-4656-798111000000\n",
+ "Time:2019-10-02T19:20:01.6683681Z\u003C/Message\u003E\u003C/Error\u003E"
+ ]
+ },
+ {
+ "RequestUri": "http://amandadev2.blob.core.windows.net/test-container-7064f998-28f6-720e-04f4-793dbf30aa61?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-52e7f0af111b964db93479bf3da2e52e-7daccf4f2d901e44-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.0.0-dev.20191002.1\u002B33ed27fee62f4db74c02cf40a6294455247e90ec",
+ "(.NET Core 4.6.27817.01; Microsoft Windows 10.0.18362 )"
+ ],
+ "x-ms-client-request-id": "dc32834b-5803-daa7-73ee-3d2bd124c13f",
+ "x-ms-date": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2019-02-02"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Wed, 02 Oct 2019 19:20:01 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "dc32834b-5803-daa7-73ee-3d2bd124c13f",
+ "x-ms-request-id": "7d510629-201e-00e4-4c56-798111000000",
+ "x-ms-version": "2019-02-02"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "RandomSeed": "1200575414",
+ "Storage_TestConfigDefault": "ProductionTenant\namandadev2\nU2FuaXRpemVk\nhttp://amandadev2.blob.core.windows.net\nhttp://amandadev2.file.core.windows.net\nhttp://amandadev2.queue.core.windows.net\nhttp://amandadev2.table.core.windows.net\n\n\n\n\nhttp://amandadev2-secondary.blob.core.windows.net\nhttp://amandadev2-secondary.file.core.windows.net\nhttp://amandadev2-secondary.queue.core.windows.net\nhttp://amandadev2-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://amandadev2.blob.core.windows.net/;QueueEndpoint=http://amandadev2.queue.core.windows.net/;TableEndpoint=http://amandadev2.table.core.windows.net/;FileEndpoint=http://amandadev2.file.core.windows.net/;BlobSecondaryEndpoint=http://amandadev2-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://amandadev2-secondary.queue.core.windows.net/;TableSecondaryEndpoint=http://amandadev2-secondary.table.core.windows.net/;FileSecondaryEndpoint=http://amandadev2-secondary.file.core.windows.net/;AccountName=amandadev2;AccountKey=Sanitized"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Common/src/Constants.cs b/sdk/storage/Azure.Storage.Common/src/Constants.cs
index 26eb37ed2651..2403a97a2c7d 100644
--- a/sdk/storage/Azure.Storage.Common/src/Constants.cs
+++ b/sdk/storage/Azure.Storage.Common/src/Constants.cs
@@ -27,6 +27,7 @@ internal static class Constants
public const int DefaultMaxTotalBufferAllowed = 100 * Constants.MB;
public const string CloseAllHandles = "*";
+ public const string Wildcard = "*";
///
/// The default format we use for block names. There are 50,000
@@ -112,14 +113,28 @@ internal static class Blob
public const string Http = "http";
public const int HttpsPort = 443;
+ ///
+ /// Error code for blobs
+ ///
+ public const string AlreadyExists = "BlobAlreadyExists";
+ public const string NotFound = "BlobNotFound";
+
internal static class Append
{
public const int MaxAppendBlockBytes = 4 * Constants.MB; // 4MB
public const int MaxBlocks = 50000;
+ public const string CreateOperationName =
+ "Azure.Storage.Blobs.Specialized.AppendBlobClient.Create";
+ public const string CreateIfNotExistsOperationName =
+ "Azure.Storage.Blobs.Specialized.AppendBlobClient.CreateIfNotExists";
}
internal static class Base
{
+ public const string Delete =
+ "Azure.Storage.Blobs.Specialized.BlobBaseClient.Delete";
+ public const string DeleteIfExists =
+ "Azure.Storage.Blobs.Specialized.BlobBaseClient.DeleteIfExists";
public const string SetTierOperationName =
"Azure.Storage.Blobs.Specialized.BlobBaseClient.SetTier";
}
@@ -159,13 +174,23 @@ internal static class Container
///
public const string LogsName = "$logs";
+ ///
+ /// The Azure Storage error codes for Blob Container Client.
+ ///
+ public const string AlreadyExists = "ContainerAlreadyExists";
+ public const string NotFound = "ContainerNotFound";
+
///
/// The Azure Storage Operation Names for Blob Container Client.
///
public const string CreateOperationName =
"Azure.Storage.Blobs.BlobContainerClient.Create";
+ public const string CreateIfNotExistsOperationName =
+ "Azure.Storage.Blobs.BlobContainerClient.CreateIfNotExists";
public const string DeleteOperationName =
"Azure.Storage.Blobs.BlobContainerClient.Delete";
+ public const string DeleteIfExistsOperationName =
+ "Azure.Storage.Blobs.BlobContainerClient.DeleteIfExists";
public const string GetPropertiesOperationName =
"Azure.Storage.Blobs.BlobContainerClient.GetProperties";
public const string SetMetaDataOperationName =
@@ -201,6 +226,8 @@ internal static class Page
{
public const string CreateOperationName =
"Azure.Storage.Blobs.Specialized.PageBlobClient.Create";
+ public const string CreateIfNotExistsOperationName =
+ "Azure.Storage.Blobs.Specialized.PageBlobClient.CreateIfNotExists";
public const string UploadOperationName =
"Azure.Storage.Blobs.Specialized.PageBlobClient.UploadPages";
public const string ClearOperationName =