From 58e0306c753a0000b6d74e2e608133d3536e5225 Mon Sep 17 00:00:00 2001 From: Vincent Tran Date: Thu, 11 Aug 2022 11:53:47 -0700 Subject: [PATCH 1/4] Ran script & deleted recordings --- .../test_retry.test_exponential_retry.yaml | 266 -------- .../test_retry.test_invalid_retry.yaml | 74 -- .../test_retry.test_linear_retry.yaml | 113 --- .../recordings/test_retry.test_no_retry.yaml | 74 -- ...test_retry_callback_and_retry_context.yaml | 113 --- ...test_retry.test_retry_on_server_error.yaml | 113 --- .../test_retry.test_retry_on_timeout.yaml | 113 --- .../test_retry.test_retry_secondary.yaml | 247 ------- ...retry.test_retry_with_deserialization.yaml | 148 ---- .../test_retry.test_streaming_retry.yaml | 644 ------------------ ...ry_async.test_exponential_retry_async.yaml | 208 ------ ..._retry_async.test_invalid_retry_async.yaml | 64 -- ...t_retry_async.test_linear_retry_async.yaml | 97 --- .../test_retry_async.test_no_retry_async.yaml | 64 -- ...etry_callback_and_retry_context_async.yaml | 97 --- ...sync.test_retry_on_server_error_async.yaml | 97 --- ...try_async.test_retry_on_timeout_async.yaml | 97 --- ...etry_async.test_retry_secondary_async.yaml | 209 ------ ...test_retry_with_deserialization_async.yaml | 136 ---- .../azure-storage-blob/tests/test_retry.py | 139 ++-- .../tests/test_retry_async.py | 140 ++-- 21 files changed, 177 insertions(+), 3076 deletions(-) delete mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_exponential_retry.yaml delete mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_invalid_retry.yaml delete mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_linear_retry.yaml delete mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_no_retry.yaml delete mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_callback_and_retry_context.yaml delete mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_on_server_error.yaml delete mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_on_timeout.yaml delete mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_secondary.yaml delete mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_with_deserialization.yaml delete mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_streaming_retry.yaml delete mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_exponential_retry_async.yaml delete mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_invalid_retry_async.yaml delete mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_linear_retry_async.yaml delete mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_no_retry_async.yaml delete mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_callback_and_retry_context_async.yaml delete mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_on_server_error_async.yaml delete mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_on_timeout_async.yaml delete mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_secondary_async.yaml delete mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_with_deserialization_async.yaml diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_exponential_retry.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_exponential_retry.yaml deleted file mode 100644 index 33fffe8ec678..000000000000 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_exponential_retry.yaml +++ /dev/null @@ -1,266 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:02:20 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainereae00ddf?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:02:19 GMT - etag: - - '"0x8D759757AC51760"' - last-modified: - - Fri, 25 Oct 2019 18:02:20 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: - - '2019-02-02' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:02:20 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/utcontainereae00ddf?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:02:20 GMT - etag: - - '"0x8D759757AC51760"' - last-modified: - - Fri, 25 Oct 2019 18:02:20 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - 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-version: - - '2019-02-02' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:02:20 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/utcontainereae00ddf?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:02:21 GMT - etag: - - '"0x8D759757AC51760"' - last-modified: - - Fri, 25 Oct 2019 18:02:20 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - 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-version: - - '2019-02-02' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:02:20 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/utcontainereae00ddf?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:02:34 GMT - etag: - - '"0x8D759757AC51760"' - last-modified: - - Fri, 25 Oct 2019 18:02:20 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - 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-version: - - '2019-02-02' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:02:20 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/utcontainereae00ddf?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:03:01 GMT - etag: - - '"0x8D759757AC51760"' - last-modified: - - Fri, 25 Oct 2019 18:02:20 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - 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-version: - - '2019-02-02' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:01 GMT - x-ms-version: - - '2019-02-02' - method: DELETE - uri: https://storagename.blob.core.windows.net/utcontainereae00ddf?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:03:01 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: - - '2019-02-02' - status: - code: 202 - message: Accepted -version: 1 diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_invalid_retry.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_invalid_retry.yaml deleted file mode 100644 index 1219d9ee5f2d..000000000000 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_invalid_retry.yaml +++ /dev/null @@ -1,74 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:01 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainerb5650c1f?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:03:01 GMT - etag: - - '"0x8D75975938C3C4E"' - last-modified: - - Fri, 25 Oct 2019 18:03:01 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: - - '2019-02-02' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:02 GMT - x-ms-version: - - '2019-02-02' - method: DELETE - uri: https://storagename.blob.core.windows.net/utcontainerb5650c1f?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:03:01 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: - - '2019-02-02' - status: - code: 202 - message: Accepted -version: 1 diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_linear_retry.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_linear_retry.yaml deleted file mode 100644 index 6b5699189078..000000000000 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_linear_retry.yaml +++ /dev/null @@ -1,113 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:02 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainera92b0bb3?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:03:01 GMT - etag: - - '"0x8D7597593B510EA"' - last-modified: - - Fri, 25 Oct 2019 18:03:02 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: - - '2019-02-02' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:02 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainera92b0bb3?restype=container - response: - body: - string: "\uFEFFContainerAlreadyExistsThe - specified container already exists.\nRequestId:2947d863-601e-0044-355e-8b5dd3000000\nTime:2019-10-25T18:03:03.5568317Z" - headers: - content-length: - - '230' - content-type: - - application/xml - date: - - Fri, 25 Oct 2019 18:03:03 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-error-code: - - ContainerAlreadyExists - x-ms-version: - - '2019-02-02' - status: - code: 409 - message: The specified container already exists. -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:03 GMT - x-ms-version: - - '2019-02-02' - method: DELETE - uri: https://storagename.blob.core.windows.net/utcontainera92b0bb3?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:03:03 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: - - '2019-02-02' - status: - code: 202 - message: Accepted -version: 1 diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_no_retry.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_no_retry.yaml deleted file mode 100644 index 6a4a8a2a08db..000000000000 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_no_retry.yaml +++ /dev/null @@ -1,74 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:03 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainer7d860a15?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:03:03 GMT - etag: - - '"0x8D7597594C838FF"' - last-modified: - - Fri, 25 Oct 2019 18:03:03 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: - - '2019-02-02' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:04 GMT - x-ms-version: - - '2019-02-02' - method: DELETE - uri: https://storagename.blob.core.windows.net/utcontainer7d860a15?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:03:03 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: - - '2019-02-02' - status: - code: 202 - message: Accepted -version: 1 diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_callback_and_retry_context.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_callback_and_retry_context.yaml deleted file mode 100644 index 53210258a72e..000000000000 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_callback_and_retry_context.yaml +++ /dev/null @@ -1,113 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:04 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainere75e13f0?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:03:03 GMT - etag: - - '"0x8D7597594F17F64"' - last-modified: - - Fri, 25 Oct 2019 18:03:04 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: - - '2019-02-02' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:04 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainere75e13f0?restype=container - response: - body: - string: "\uFEFFContainerAlreadyExistsThe - specified container already exists.\nRequestId:e90e319f-301e-0075-7f5e-8b0604000000\nTime:2019-10-25T18:03:05.6135612Z" - headers: - content-length: - - '230' - content-type: - - application/xml - date: - - Fri, 25 Oct 2019 18:03:05 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-error-code: - - ContainerAlreadyExists - x-ms-version: - - '2019-02-02' - status: - code: 409 - message: The specified container already exists. -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:05 GMT - x-ms-version: - - '2019-02-02' - method: DELETE - uri: https://storagename.blob.core.windows.net/utcontainere75e13f0?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:03:05 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: - - '2019-02-02' - status: - code: 202 - message: Accepted -version: 1 diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_on_server_error.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_on_server_error.yaml deleted file mode 100644 index 7ca977a8ed94..000000000000 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_on_server_error.yaml +++ /dev/null @@ -1,113 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:05 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainer270d0f94?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:03:04 GMT - etag: - - '"0x8D7597595FE2C29"' - last-modified: - - Fri, 25 Oct 2019 18:03:05 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: - - '2019-02-02' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:05 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainer270d0f94?restype=container - response: - body: - string: "\uFEFFContainerAlreadyExistsThe - specified container already exists.\nRequestId:4fabcedf-c01e-012b-7a5e-8bb352000000\nTime:2019-10-25T18:03:22.9995680Z" - headers: - content-length: - - '230' - content-type: - - application/xml - date: - - Fri, 25 Oct 2019 18:03:22 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-error-code: - - ContainerAlreadyExists - x-ms-version: - - '2019-02-02' - status: - code: 409 - message: The specified container already exists. -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:23 GMT - x-ms-version: - - '2019-02-02' - method: DELETE - uri: https://storagename.blob.core.windows.net/utcontainer270d0f94?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:03:22 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: - - '2019-02-02' - status: - code: 202 - message: Accepted -version: 1 diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_on_timeout.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_on_timeout.yaml deleted file mode 100644 index f74649015890..000000000000 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_on_timeout.yaml +++ /dev/null @@ -1,113 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:31 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainerdd800d7b?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:03:31 GMT - etag: - - '"0x8D75975A5718BFB"' - last-modified: - - Fri, 25 Oct 2019 18:03:31 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: - - '2019-02-02' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:31 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainerdd800d7b?restype=container - response: - body: - string: "\uFEFFContainerAlreadyExistsThe - specified container already exists.\nRequestId:345853dc-001e-013d-795e-8b72cc000000\nTime:2019-10-25T18:03:34.8932864Z" - headers: - content-length: - - '230' - content-type: - - application/xml - date: - - Fri, 25 Oct 2019 18:03:34 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-error-code: - - ContainerAlreadyExists - x-ms-version: - - '2019-02-02' - status: - code: 409 - message: The specified container already exists. -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:35 GMT - x-ms-version: - - '2019-02-02' - method: DELETE - uri: https://storagename.blob.core.windows.net/utcontainerdd800d7b?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:03:34 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: - - '2019-02-02' - status: - code: 202 - message: Accepted -version: 1 diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_secondary.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_secondary.yaml deleted file mode 100644 index 76019a19e3dd..000000000000 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_secondary.yaml +++ /dev/null @@ -1,247 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:35 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/containername?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:03:35 GMT - etag: - - '"0x8D75975A7897646"' - last-modified: - - Fri, 25 Oct 2019 18:03:35 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: - - '2019-02-02' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:35 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/containername?restype=container - response: - body: - string: "\uFEFFContainerAlreadyExistsThe - specified container already exists.\nRequestId:96e4a6a7-201e-000c-665e-8b6f4e000000\nTime:2019-10-25T18:03:41.0775350Z" - headers: - content-length: - - '230' - content-type: - - application/xml - date: - - Fri, 25 Oct 2019 18:03:40 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-error-code: - - ContainerAlreadyExists - x-ms-version: - - '2019-02-02' - status: - code: 409 - message: The specified container already exists. -- request: - body: null - headers: - Accept: - - application/xml - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:41 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/?maxresults=1&comp=list - response: - body: - string: "\uFEFF1containernameFri, - 25 Oct 2019 18:03:35 GMT\"0x8D75975A7897646\"unlockedavailable$account-encryption-keyfalsefalsefalse/storagename/utcontainer270d0f94" - headers: - content-type: - - application/xml - date: - - Fri, 25 Oct 2019 18:03:40 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - transfer-encoding: - - chunked - x-ms-version: - - '2019-02-02' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/xml - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:41 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/?maxresults=1&comp=list - response: - body: - string: "\uFEFF1containernameFri, - 25 Oct 2019 18:03:35 GMT\"0x8D75975A7897646\"unlockedavailable$account-encryption-keyfalsefalsefalse/storagename/utcontainer270d0f94" - headers: - content-type: - - application/xml - date: - - Fri, 25 Oct 2019 18:03:45 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - transfer-encoding: - - chunked - x-ms-version: - - '2019-02-02' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:45 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/containername?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:03:45 GMT - etag: - - '"0x8D75975A7897646"' - last-modified: - - Fri, 25 Oct 2019 18:03:35 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - 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-version: - - '2019-02-02' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:45 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/containername?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:03:47 GMT - etag: - - '"0x8D75975A7897646"' - last-modified: - - Fri, 25 Oct 2019 18:03:35 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - 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-version: - - '2019-02-02' - status: - code: 200 - message: OK -version: 1 diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_with_deserialization.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_with_deserialization.yaml deleted file mode 100644 index 71836becd992..000000000000 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_retry_with_deserialization.yaml +++ /dev/null @@ -1,148 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:48 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/retry7a5d119a?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:03:47 GMT - etag: - - '"0x8D75975AF1B7807"' - last-modified: - - Fri, 25 Oct 2019 18:03:48 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: - - '2019-02-02' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - application/xml - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:48 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/?prefix=retry&comp=list - response: - body: - string: "\uFEFFretryretry7a5d119aFri, - 25 Oct 2019 18:03:48 GMT\"0x8D75975AF1B7807\"unlockedavailable$account-encryption-keyfalsefalsefalse" - headers: - content-type: - - application/xml - date: - - Fri, 25 Oct 2019 18:03:48 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - transfer-encoding: - - chunked - x-ms-version: - - '2019-02-02' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/xml - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:48 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/?prefix=retry&comp=list - response: - body: - string: "\uFEFFretryretry7a5d119aFri, - 25 Oct 2019 18:03:48 GMT\"0x8D75975AF1B7807\"unlockedavailable$account-encryption-keyfalsefalsefalse" - headers: - content-type: - - application/xml - date: - - Fri, 25 Oct 2019 18:03:50 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - transfer-encoding: - - chunked - x-ms-version: - - '2019-02-02' - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:03:50 GMT - x-ms-version: - - '2019-02-02' - method: DELETE - uri: https://storagename.blob.core.windows.net/retry7a5d119a?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Fri, 25 Oct 2019 18:03:50 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: - - '2019-02-02' - status: - code: 202 - message: Accepted -version: 1 diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_streaming_retry.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_streaming_retry.yaml deleted file mode 100644 index 476a38cec3aa..000000000000 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.test_streaming_retry.yaml +++ /dev/null @@ -1,644 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - application/xml - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '0' - User-Agent: - - azsdk-python-storage-blob/12.14.0b1 Python/3.7.13 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-debian-bullseye-sid) - x-ms-date: - - Wed, 27 Jul 2022 20:01:25 GMT - x-ms-version: - - '2021-08-06' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainercf7c0d02?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Wed, 27 Jul 2022 20:01:27 GMT - etag: - - '"0x8DA700ACAF9DF12"' - last-modified: - - Wed, 27 Jul 2022 20:01:28 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: - - '2021-08-06' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - application/xml - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.14.0b1 Python/3.7.13 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-debian-bullseye-sid) - x-ms-date: - - Wed, 27 Jul 2022 20:01:25 GMT - x-ms-version: - - '2021-08-06' - method: GET - uri: https://storagename.blob.core.windows.net/utcontainercf7c0d02?restype=container - response: - body: - string: '' - headers: - content-length: - - '0' - date: - - Wed, 27 Jul 2022 20:01:27 GMT - etag: - - '"0x8DA700ACAF9DF12"' - last-modified: - - Wed, 27 Jul 2022 20:01:28 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - 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-immutable-storage-with-versioning-enabled: - - 'false' - x-ms-lease-state: - - available - x-ms-lease-status: - - unlocked - x-ms-version: - - '2021-08-06' - status: - code: 200 - message: OK -- request: - body: abcde - headers: - Accept: - - application/xml - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '5' - Content-Type: - - application/octet-stream - If-None-Match: - - '*' - User-Agent: - - azsdk-python-storage-blob/12.14.0b1 Python/3.7.13 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-debian-bullseye-sid) - x-ms-blob-type: - - BlockBlob - x-ms-date: - - Wed, 27 Jul 2022 20:01:25 GMT - x-ms-version: - - '2021-08-06' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainercf7c0d02/myblob - response: - body: - string: '' - headers: - content-length: - - '0' - content-md5: - - q1a02StAcTrMWviZhdS3hg== - date: - - Wed, 27 Jul 2022 20:01:27 GMT - etag: - - '"0x8DA700ACB03C6C7"' - last-modified: - - Wed, 27 Jul 2022 20:01:28 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-content-crc64: - - ExJGZ9Dkswo= - x-ms-request-server-encrypted: - - 'true' - x-ms-version: - - '2021-08-06' - status: - code: 201 - message: Created -- request: - body: null - headers: - Accept: - - application/xml - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.14.0b1 Python/3.7.13 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-debian-bullseye-sid) - x-ms-date: - - Wed, 27 Jul 2022 20:01:25 GMT - x-ms-range: - - bytes=0-33554431 - x-ms-version: - - '2021-08-06' - method: GET - uri: https://storagename.blob.core.windows.net/utcontainercf7c0d02/myblob - response: - body: - string: abcde - headers: - accept-ranges: - - bytes - content-length: - - '5' - content-range: - - bytes 0-4/5 - content-type: - - application/octet-stream - date: - - Wed, 27 Jul 2022 20:01:27 GMT - etag: - - '"0x8DA700ACB03C6C7"' - last-modified: - - Wed, 27 Jul 2022 20:01:28 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-blob-content-md5: - - q1a02StAcTrMWviZhdS3hg== - x-ms-blob-type: - - BlockBlob - x-ms-creation-time: - - Wed, 27 Jul 2022 20:01:28 GMT - x-ms-lease-state: - - available - x-ms-lease-status: - - unlocked - x-ms-server-encrypted: - - 'true' - x-ms-version: - - '2021-08-06' - status: - code: 206 - message: Partial Content -- request: - body: null - headers: - Accept: - - application/xml - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.14.0b1 Python/3.7.13 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-debian-bullseye-sid) - x-ms-date: - - Wed, 27 Jul 2022 20:01:26 GMT - x-ms-range: - - bytes=0-33554431 - x-ms-version: - - '2021-08-06' - method: GET - uri: https://storagename.blob.core.windows.net/utcontainercf7c0d02/myblob - response: - body: - string: abcde - headers: - accept-ranges: - - bytes - content-length: - - '5' - content-range: - - bytes 0-4/5 - content-type: - - application/octet-stream - date: - - Wed, 27 Jul 2022 20:01:29 GMT - etag: - - '"0x8DA700ACB03C6C7"' - last-modified: - - Wed, 27 Jul 2022 20:01:28 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-blob-content-md5: - - q1a02StAcTrMWviZhdS3hg== - x-ms-blob-type: - - BlockBlob - x-ms-creation-time: - - Wed, 27 Jul 2022 20:01:28 GMT - x-ms-lease-state: - - available - x-ms-lease-status: - - unlocked - x-ms-server-encrypted: - - 'true' - x-ms-version: - - '2021-08-06' - status: - code: 206 - message: Partial Content -- request: - body: null - headers: - Accept: - - application/xml - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.14.0b1 Python/3.7.13 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-debian-bullseye-sid) - x-ms-date: - - Wed, 27 Jul 2022 20:01:27 GMT - x-ms-range: - - bytes=0-33554431 - x-ms-version: - - '2021-08-06' - method: GET - uri: https://storagename.blob.core.windows.net/utcontainercf7c0d02/myblob - response: - body: - string: abcde - headers: - accept-ranges: - - bytes - content-length: - - '5' - content-range: - - bytes 0-4/5 - content-type: - - application/octet-stream - date: - - Wed, 27 Jul 2022 20:01:30 GMT - etag: - - '"0x8DA700ACB03C6C7"' - last-modified: - - Wed, 27 Jul 2022 20:01:28 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-blob-content-md5: - - q1a02StAcTrMWviZhdS3hg== - x-ms-blob-type: - - BlockBlob - x-ms-creation-time: - - Wed, 27 Jul 2022 20:01:28 GMT - x-ms-lease-state: - - available - x-ms-lease-status: - - unlocked - x-ms-server-encrypted: - - 'true' - x-ms-version: - - '2021-08-06' - status: - code: 206 - message: Partial Content -- request: - body: null - headers: - Accept: - - application/xml - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.14.0b1 Python/3.7.13 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-debian-bullseye-sid) - x-ms-date: - - Wed, 27 Jul 2022 20:01:27 GMT - x-ms-range: - - bytes=0-33554431 - x-ms-version: - - '2021-08-06' - method: GET - uri: https://storagename.blob.core.windows.net/utcontainercf7c0d02/myblob - response: - body: - string: abcde - headers: - accept-ranges: - - bytes - content-length: - - '5' - content-range: - - bytes 0-4/5 - content-type: - - application/octet-stream - date: - - Wed, 27 Jul 2022 20:01:29 GMT - etag: - - '"0x8DA700ACB03C6C7"' - last-modified: - - Wed, 27 Jul 2022 20:01:28 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-blob-content-md5: - - q1a02StAcTrMWviZhdS3hg== - x-ms-blob-type: - - BlockBlob - x-ms-creation-time: - - Wed, 27 Jul 2022 20:01:28 GMT - x-ms-lease-state: - - available - x-ms-lease-status: - - unlocked - x-ms-server-encrypted: - - 'true' - x-ms-version: - - '2021-08-06' - status: - code: 206 - message: Partial Content -- request: - body: null - headers: - Accept: - - application/xml - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.14.0b1 Python/3.7.13 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-debian-bullseye-sid) - x-ms-date: - - Wed, 27 Jul 2022 20:01:28 GMT - x-ms-range: - - bytes=0-33554431 - x-ms-version: - - '2021-08-06' - method: GET - uri: https://storagename.blob.core.windows.net/utcontainercf7c0d02/myblob - response: - body: - string: abcde - headers: - accept-ranges: - - bytes - content-length: - - '5' - content-range: - - bytes 0-4/5 - content-type: - - application/octet-stream - date: - - Wed, 27 Jul 2022 20:01:31 GMT - etag: - - '"0x8DA700ACB03C6C7"' - last-modified: - - Wed, 27 Jul 2022 20:01:28 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-blob-content-md5: - - q1a02StAcTrMWviZhdS3hg== - x-ms-blob-type: - - BlockBlob - x-ms-creation-time: - - Wed, 27 Jul 2022 20:01:28 GMT - x-ms-lease-state: - - available - x-ms-lease-status: - - unlocked - x-ms-server-encrypted: - - 'true' - x-ms-version: - - '2021-08-06' - status: - code: 206 - message: Partial Content -- request: - body: null - headers: - Accept: - - application/xml - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.14.0b1 Python/3.7.13 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-debian-bullseye-sid) - x-ms-date: - - Wed, 27 Jul 2022 20:01:29 GMT - x-ms-range: - - bytes=0-33554431 - x-ms-version: - - '2021-08-06' - method: GET - uri: https://storagename.blob.core.windows.net/utcontainercf7c0d02/myblob - response: - body: - string: abcde - headers: - accept-ranges: - - bytes - content-length: - - '5' - content-range: - - bytes 0-4/5 - content-type: - - application/octet-stream - date: - - Wed, 27 Jul 2022 20:01:32 GMT - etag: - - '"0x8DA700ACB03C6C7"' - last-modified: - - Wed, 27 Jul 2022 20:01:28 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-blob-content-md5: - - q1a02StAcTrMWviZhdS3hg== - x-ms-blob-type: - - BlockBlob - x-ms-creation-time: - - Wed, 27 Jul 2022 20:01:28 GMT - x-ms-lease-state: - - available - x-ms-lease-status: - - unlocked - x-ms-server-encrypted: - - 'true' - x-ms-version: - - '2021-08-06' - status: - code: 206 - message: Partial Content -- request: - body: null - headers: - Accept: - - application/xml - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.14.0b1 Python/3.7.13 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-debian-bullseye-sid) - x-ms-date: - - Wed, 27 Jul 2022 20:01:29 GMT - x-ms-range: - - bytes=0-33554431 - x-ms-version: - - '2021-08-06' - method: GET - uri: https://storagename.blob.core.windows.net/utcontainercf7c0d02/myblob - response: - body: - string: abcde - headers: - accept-ranges: - - bytes - content-length: - - '5' - content-range: - - bytes 0-4/5 - content-type: - - application/octet-stream - date: - - Wed, 27 Jul 2022 20:01:32 GMT - etag: - - '"0x8DA700ACB03C6C7"' - last-modified: - - Wed, 27 Jul 2022 20:01:28 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-blob-content-md5: - - q1a02StAcTrMWviZhdS3hg== - x-ms-blob-type: - - BlockBlob - x-ms-creation-time: - - Wed, 27 Jul 2022 20:01:28 GMT - x-ms-lease-state: - - available - x-ms-lease-status: - - unlocked - x-ms-server-encrypted: - - 'true' - x-ms-version: - - '2021-08-06' - status: - code: 206 - message: Partial Content -- request: - body: null - headers: - Accept: - - application/xml - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.14.0b1 Python/3.7.13 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-debian-bullseye-sid) - x-ms-date: - - Wed, 27 Jul 2022 20:01:30 GMT - x-ms-range: - - bytes=0-33554431 - x-ms-version: - - '2021-08-06' - method: GET - uri: https://storagename.blob.core.windows.net/utcontainercf7c0d02/myblob - response: - body: - string: abcde - headers: - accept-ranges: - - bytes - content-length: - - '5' - content-range: - - bytes 0-4/5 - content-type: - - application/octet-stream - date: - - Wed, 27 Jul 2022 20:01:33 GMT - etag: - - '"0x8DA700ACB03C6C7"' - last-modified: - - Wed, 27 Jul 2022 20:01:28 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-blob-content-md5: - - q1a02StAcTrMWviZhdS3hg== - x-ms-blob-type: - - BlockBlob - x-ms-creation-time: - - Wed, 27 Jul 2022 20:01:28 GMT - x-ms-lease-state: - - available - x-ms-lease-status: - - unlocked - x-ms-server-encrypted: - - 'true' - x-ms-version: - - '2021-08-06' - status: - code: 206 - message: Partial Content -- request: - body: null - headers: - Accept: - - application/xml - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-storage-blob/12.14.0b1 Python/3.7.13 (Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-debian-bullseye-sid) - x-ms-date: - - Wed, 27 Jul 2022 20:01:31 GMT - x-ms-range: - - bytes=0-33554431 - x-ms-version: - - '2021-08-06' - method: GET - uri: https://storagename.blob.core.windows.net/utcontainercf7c0d02/myblob - response: - body: - string: abcde - headers: - accept-ranges: - - bytes - content-length: - - '5' - content-range: - - bytes 0-4/5 - content-type: - - application/octet-stream - date: - - Wed, 27 Jul 2022 20:01:34 GMT - etag: - - '"0x8DA700ACB03C6C7"' - last-modified: - - Wed, 27 Jul 2022 20:01:28 GMT - server: - - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-blob-content-md5: - - q1a02StAcTrMWviZhdS3hg== - x-ms-blob-type: - - BlockBlob - x-ms-creation-time: - - Wed, 27 Jul 2022 20:01:28 GMT - x-ms-lease-state: - - available - x-ms-lease-status: - - unlocked - x-ms-server-encrypted: - - 'true' - x-ms-version: - - '2021-08-06' - status: - code: 206 - message: Partial Content -version: 1 diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_exponential_retry_async.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_exponential_retry_async.yaml deleted file mode 100644 index 97840fd5e78c..000000000000 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_exponential_retry_async.yaml +++ /dev/null @@ -1,208 +0,0 @@ -interactions: -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:04:33 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainerb18012d9?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:04:33 GMT - etag: '"0x8D75975CA8BC722"' - last-modified: Fri, 25 Oct 2019 18:04:34 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: '2019-02-02' - status: - code: 201 - message: Created - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainerb18012d9 - - restype=container - - '' -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:04:34 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/utcontainerb18012d9?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:04:33 GMT - etag: '"0x8D75975CA8BC722"' - last-modified: Fri, 25 Oct 2019 18:04:34 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-has-immutability-policy: 'false' - x-ms-has-legal-hold: 'false' - x-ms-lease-state: available - x-ms-lease-status: unlocked - x-ms-version: '2019-02-02' - status: - code: 200 - message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainerb18012d9 - - restype=container - - '' -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:04:34 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/utcontainerb18012d9?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:04:34 GMT - etag: '"0x8D75975CA8BC722"' - last-modified: Fri, 25 Oct 2019 18:04:34 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-has-immutability-policy: 'false' - x-ms-has-legal-hold: 'false' - x-ms-lease-state: available - x-ms-lease-status: unlocked - x-ms-version: '2019-02-02' - status: - code: 200 - message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainerb18012d9 - - restype=container - - '' -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:04:34 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/utcontainerb18012d9?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:04:43 GMT - etag: '"0x8D75975CA8BC722"' - last-modified: Fri, 25 Oct 2019 18:04:34 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-has-immutability-policy: 'false' - x-ms-has-legal-hold: 'false' - x-ms-lease-state: available - x-ms-lease-status: unlocked - x-ms-version: '2019-02-02' - status: - code: 200 - message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainerb18012d9 - - restype=container - - '' -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:04:34 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/utcontainerb18012d9?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:05:11 GMT - etag: '"0x8D75975CA8BC722"' - last-modified: Fri, 25 Oct 2019 18:04:34 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-has-immutability-policy: 'false' - x-ms-has-legal-hold: 'false' - x-ms-lease-state: available - x-ms-lease-status: unlocked - x-ms-version: '2019-02-02' - status: - code: 200 - message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainerb18012d9 - - restype=container - - '' -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:13 GMT - x-ms-version: - - '2019-02-02' - method: DELETE - uri: https://storagename.blob.core.windows.net/utcontainerb18012d9?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:05:12 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: '2019-02-02' - status: - code: 202 - message: Accepted - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainerb18012d9 - - restype=container - - '' -version: 1 diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_invalid_retry_async.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_invalid_retry_async.yaml deleted file mode 100644 index b1f6a98603a8..000000000000 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_invalid_retry_async.yaml +++ /dev/null @@ -1,64 +0,0 @@ -interactions: -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:13 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainer67911119?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:05:12 GMT - etag: '"0x8D75975E1DC6113"' - last-modified: Fri, 25 Oct 2019 18:05:13 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: '2019-02-02' - status: - code: 201 - message: Created - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainer67911119 - - restype=container - - '' -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:13 GMT - x-ms-version: - - '2019-02-02' - method: DELETE - uri: https://storagename.blob.core.windows.net/utcontainer67911119?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:05:12 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: '2019-02-02' - status: - code: 202 - message: Accepted - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainer67911119 - - restype=container - - '' -version: 1 diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_linear_retry_async.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_linear_retry_async.yaml deleted file mode 100644 index b2d7e1bb7505..000000000000 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_linear_retry_async.yaml +++ /dev/null @@ -1,97 +0,0 @@ -interactions: -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:13 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainer565210ad?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:05:13 GMT - etag: '"0x8D75975E207494A"' - last-modified: Fri, 25 Oct 2019 18:05:13 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: '2019-02-02' - status: - code: 201 - message: Created - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainer565210ad - - restype=container - - '' -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:13 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainer565210ad?restype=container - response: - body: - string: "\uFEFFContainerAlreadyExistsThe - specified container already exists.\nRequestId:3ea5242c-601e-001e-5b5e-8b2b42000000\nTime:2019-10-25T18:05:13.9282043Z" - headers: - content-length: '230' - content-type: application/xml - date: Fri, 25 Oct 2019 18:05:13 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-error-code: ContainerAlreadyExists - x-ms-version: '2019-02-02' - status: - code: 409 - message: The specified container already exists. - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainer565210ad - - restype=container - - '' -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:14 GMT - x-ms-version: - - '2019-02-02' - method: DELETE - uri: https://storagename.blob.core.windows.net/utcontainer565210ad?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:05:13 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: '2019-02-02' - status: - code: 202 - message: Accepted - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainer565210ad - - restype=container - - '' -version: 1 diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_no_retry_async.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_no_retry_async.yaml deleted file mode 100644 index 4a9c9346161e..000000000000 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_no_retry_async.yaml +++ /dev/null @@ -1,64 +0,0 @@ -interactions: -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:14 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainer17050f0f?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:05:13 GMT - etag: '"0x8D75975E2763F5D"' - last-modified: Fri, 25 Oct 2019 18:05:14 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: '2019-02-02' - status: - code: 201 - message: Created - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainer17050f0f - - restype=container - - '' -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:14 GMT - x-ms-version: - - '2019-02-02' - method: DELETE - uri: https://storagename.blob.core.windows.net/utcontainer17050f0f?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:05:13 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: '2019-02-02' - status: - code: 202 - message: Accepted - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainer17050f0f - - restype=container - - '' -version: 1 diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_callback_and_retry_context_async.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_callback_and_retry_context_async.yaml deleted file mode 100644 index 9b1786fb059e..000000000000 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_callback_and_retry_context_async.yaml +++ /dev/null @@ -1,97 +0,0 @@ -interactions: -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:14 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainerf7b718ea?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:05:14 GMT - etag: '"0x8D75975E29A9A64"' - last-modified: Fri, 25 Oct 2019 18:05:14 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: '2019-02-02' - status: - code: 201 - message: Created - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainerf7b718ea - - restype=container - - '' -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:14 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainerf7b718ea?restype=container - response: - body: - string: "\uFEFFContainerAlreadyExistsThe - specified container already exists.\nRequestId:b28d9ea8-a01e-0047-455e-8b2ec4000000\nTime:2019-10-25T18:05:16.4487533Z" - headers: - content-length: '230' - content-type: application/xml - date: Fri, 25 Oct 2019 18:05:16 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-error-code: ContainerAlreadyExists - x-ms-version: '2019-02-02' - status: - code: 409 - message: The specified container already exists. - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainerf7b718ea - - restype=container - - '' -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:16 GMT - x-ms-version: - - '2019-02-02' - method: DELETE - uri: https://storagename.blob.core.windows.net/utcontainerf7b718ea?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:05:16 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: '2019-02-02' - status: - code: 202 - message: Accepted - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainerf7b718ea - - restype=container - - '' -version: 1 diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_on_server_error_async.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_on_server_error_async.yaml deleted file mode 100644 index 7ea0ce59dae2..000000000000 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_on_server_error_async.yaml +++ /dev/null @@ -1,97 +0,0 @@ -interactions: -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:16 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainer1df148e?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:05:16 GMT - etag: '"0x8D75975E3F498E9"' - last-modified: Fri, 25 Oct 2019 18:05:16 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: '2019-02-02' - status: - code: 201 - message: Created - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainer1df148e - - restype=container - - '' -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:16 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainer1df148e?restype=container - response: - body: - string: "\uFEFFContainerAlreadyExistsThe - specified container already exists.\nRequestId:37847f1b-301e-000d-705e-8b1ea3000000\nTime:2019-10-25T18:05:36.0559922Z" - headers: - content-length: '230' - content-type: application/xml - date: Fri, 25 Oct 2019 18:05:35 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-error-code: ContainerAlreadyExists - x-ms-version: '2019-02-02' - status: - code: 409 - message: The specified container already exists. - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainer1df148e - - restype=container - - '' -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:36 GMT - x-ms-version: - - '2019-02-02' - method: DELETE - uri: https://storagename.blob.core.windows.net/utcontainer1df148e?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:05:36 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: '2019-02-02' - status: - code: 202 - message: Accepted - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainer1df148e - - restype=container - - '' -version: 1 diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_on_timeout_async.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_on_timeout_async.yaml deleted file mode 100644 index 32a3ce130278..000000000000 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_on_timeout_async.yaml +++ /dev/null @@ -1,97 +0,0 @@ -interactions: -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:39 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainer9f4b1275?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:05:39 GMT - etag: '"0x8D75975F19A4763"' - last-modified: Fri, 25 Oct 2019 18:05:39 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: '2019-02-02' - status: - code: 201 - message: Created - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainer9f4b1275 - - restype=container - - '' -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:39 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/utcontainer9f4b1275?restype=container - response: - body: - string: "\uFEFFContainerAlreadyExistsThe - specified container already exists.\nRequestId:39e70ddf-001e-004a-2d5e-8bc1c8000000\nTime:2019-10-25T18:05:41.5414135Z" - headers: - content-length: '230' - content-type: application/xml - date: Fri, 25 Oct 2019 18:05:41 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-error-code: ContainerAlreadyExists - x-ms-version: '2019-02-02' - status: - code: 409 - message: The specified container already exists. - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainer9f4b1275 - - restype=container - - '' -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:41 GMT - x-ms-version: - - '2019-02-02' - method: DELETE - uri: https://storagename.blob.core.windows.net/utcontainer9f4b1275?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:05:41 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: '2019-02-02' - status: - code: 202 - message: Accepted - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /utcontainer9f4b1275 - - restype=container - - '' -version: 1 diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_secondary_async.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_secondary_async.yaml deleted file mode 100644 index e96b8a98d135..000000000000 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_secondary_async.yaml +++ /dev/null @@ -1,209 +0,0 @@ -interactions: -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:41 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/containername?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:05:41 GMT - etag: '"0x8D75975F2EA1247"' - last-modified: Fri, 25 Oct 2019 18:05:41 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: '2019-02-02' - status: - code: 201 - message: Created - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /containername - - restype=container - - '' -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:41 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/containername?restype=container - response: - body: - string: "\uFEFFContainerAlreadyExistsThe - specified container already exists.\nRequestId:90800a4f-701e-0023-485e-8b9e64000000\nTime:2019-10-25T18:05:45.0549826Z" - headers: - content-length: '230' - content-type: application/xml - date: Fri, 25 Oct 2019 18:05:44 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-error-code: ContainerAlreadyExists - x-ms-version: '2019-02-02' - status: - code: 409 - message: The specified container already exists. - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /containername - - restype=container - - '' -- request: - body: null - headers: - Accept: - - application/xml - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:45 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/?maxresults=1&comp=list - response: - body: - string: "\uFEFF1containernameFri, - 25 Oct 2019 18:05:41 GMT\"0x8D75975F2EA1247\"unlockedavailablefalsefalse/storagename/utcontainer17050f0f" - headers: - content-type: application/xml - date: Fri, 25 Oct 2019 18:05:44 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - transfer-encoding: chunked - x-ms-version: '2019-02-02' - status: - code: 200 - message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - / - - maxresults=1&comp=list - - '' -- request: - body: null - headers: - Accept: - - application/xml - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:45 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/?maxresults=1&comp=list - response: - body: - string: "\uFEFF1containernameFri, - 25 Oct 2019 18:05:41 GMT\"0x8D75975F2EA1247\"unlockedavailablefalsefalse/storagename/utcontainer1df148e" - headers: - content-type: application/xml - date: Fri, 25 Oct 2019 18:05:47 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - transfer-encoding: chunked - x-ms-version: '2019-02-02' - status: - code: 200 - message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - / - - maxresults=1&comp=list - - '' -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:48 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/containername?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:05:47 GMT - etag: '"0x8D75975F2EA1247"' - last-modified: Fri, 25 Oct 2019 18:05:41 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-has-immutability-policy: 'false' - x-ms-has-legal-hold: 'false' - x-ms-lease-state: available - x-ms-lease-status: unlocked - x-ms-version: '2019-02-02' - status: - code: 200 - message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /containername - - restype=container - - '' -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:48 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/containername?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:05:53 GMT - etag: '"0x8D75975F2EA1247"' - last-modified: Fri, 25 Oct 2019 18:05:41 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-has-immutability-policy: 'false' - x-ms-has-legal-hold: 'false' - x-ms-lease-state: available - x-ms-lease-status: unlocked - x-ms-version: '2019-02-02' - status: - code: 200 - message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /containername - - restype=container - - '' -version: 1 diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_with_deserialization_async.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_with_deserialization_async.yaml deleted file mode 100644 index 402b63519c78..000000000000 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.test_retry_with_deserialization_async.yaml +++ /dev/null @@ -1,136 +0,0 @@ -interactions: -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:53 GMT - x-ms-version: - - '2019-02-02' - method: PUT - uri: https://storagename.blob.core.windows.net/retry6dc41694?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:05:53 GMT - etag: '"0x8D75975F9E1159F"' - last-modified: Fri, 25 Oct 2019 18:05:53 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: '2019-02-02' - status: - code: 201 - message: Created - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /retry6dc41694 - - restype=container - - '' -- request: - body: null - headers: - Accept: - - application/xml - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:53 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/?prefix=retry&comp=list - response: - body: - string: "\uFEFFretryretry6dc41694Fri, - 25 Oct 2019 18:05:53 GMT\"0x8D75975F9E1159F\"unlockedavailablefalsefalse" - headers: - content-type: application/xml - date: Fri, 25 Oct 2019 18:05:53 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - transfer-encoding: chunked - x-ms-version: '2019-02-02' - status: - code: 200 - message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - / - - prefix=retry&comp=list - - '' -- request: - body: null - headers: - Accept: - - application/xml - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:53 GMT - x-ms-version: - - '2019-02-02' - method: GET - uri: https://storagename.blob.core.windows.net/?prefix=retry&comp=list - response: - body: - string: "\uFEFFretryretry6dc41694Fri, - 25 Oct 2019 18:05:53 GMT\"0x8D75975F9E1159F\"unlockedavailablefalsefalse" - headers: - content-type: application/xml - date: Fri, 25 Oct 2019 18:05:55 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - transfer-encoding: chunked - x-ms-version: '2019-02-02' - status: - code: 200 - message: OK - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - / - - prefix=retry&comp=list - - '' -- request: - body: null - headers: - User-Agent: - - azsdk-python-storage-blob/12.0.0b5 Python/3.6.3 (Windows-10-10.0.18362-SP0) - x-ms-date: - - Fri, 25 Oct 2019 18:05:56 GMT - x-ms-version: - - '2019-02-02' - method: DELETE - uri: https://storagename.blob.core.windows.net/retry6dc41694?restype=container - response: - body: - string: '' - headers: - content-length: '0' - date: Fri, 25 Oct 2019 18:05:55 GMT - server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 - x-ms-version: '2019-02-02' - status: - code: 202 - message: Accepted - url: !!python/object/new:yarl.URL - state: !!python/tuple - - !!python/object/new:urllib.parse.SplitResult - - https - - pyacrstoragedhajsdtot6ve.blob.core.windows.net - - /retry6dc41694 - - restype=container - - '' -version: 1 diff --git a/sdk/storage/azure-storage-blob/tests/test_retry.py b/sdk/storage/azure-storage-blob/tests/test_retry.py index 30d9c8465e86..6726886d5293 100644 --- a/sdk/storage/azure-storage-blob/tests/test_retry.py +++ b/sdk/storage/azure-storage-blob/tests/test_retry.py @@ -17,7 +17,8 @@ from azure.core.pipeline.transport import( RequestsTransport ) -from devtools_testutils import ResourceGroupPreparer, StorageAccountPreparer, RetryCounter, ResponseCallback +from devtools_testutils import ResourceGroupPreparer, StorageAccountPreparer, RetryCounter, ResponseCallback, \ + recorded_by_proxy from azure.storage.blob import ( BlobServiceClient, ContainerClient, @@ -31,7 +32,8 @@ from azure.core.exceptions import DecodeError from settings.testcase import BlobPreparer -from devtools_testutils.storage import StorageTestCase +from devtools_testutils.storage import StorageTestCase, StorageRecordedTestCase + class RetryRequestTransport(RequestsTransport): """Transport to test retry""" @@ -45,7 +47,7 @@ def send(self, request, **kwargs): return response # --Test Class ----------------------------------------------------------------- -class StorageRetryTest(StorageTestCase): +class TestStorageRetry(StorageRecordedTestCase): def _create_storage_service(self, service_class, account, key, connection_string=None, **kwargs): if connection_string: @@ -56,7 +58,11 @@ def _create_storage_service(self, service_class, account, key, connection_string # --Test Cases -------------------------------------------- @BlobPreparer() - def test_retry_on_server_error(self, storage_account_name, storage_account_key): + @recorded_by_proxy + def test_retry_on_server_error(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('utcontainer') service = self._create_storage_service(BlobServiceClient, storage_account_name, storage_account_key) @@ -68,7 +74,7 @@ def test_retry_on_server_error(self, storage_account_name, storage_account_key): try: # The initial create will return 201, but we overwrite it and retry. # The retry will then get a 409 and return false. - with self.assertRaises(ResourceExistsError): + with pytest.raises(ResourceExistsError): service.create_container(container_name, raw_response_hook=callback) finally: service.delete_container(container_name) @@ -76,7 +82,10 @@ def test_retry_on_server_error(self, storage_account_name, storage_account_key): # Assert @BlobPreparer() - def test_retry_on_timeout(self, storage_account_name, storage_account_key): + def test_retry_on_timeout(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('utcontainer') retry = ExponentialRetry(initial_backoff=1, increment_base=2) @@ -89,7 +98,7 @@ def test_retry_on_timeout(self, storage_account_name, storage_account_key): try: # The initial create will return 201, but we overwrite it and retry. # The retry will then get a 409 and return false. - with self.assertRaises(ResourceExistsError): + with pytest.raises(ResourceExistsError): service.create_container(container_name, raw_response_hook=callback) finally: service.delete_container(container_name) @@ -97,7 +106,10 @@ def test_retry_on_timeout(self, storage_account_name, storage_account_key): # Assert @BlobPreparer() - def test_retry_callback_and_retry_context(self, storage_account_name, storage_account_key): + def test_retry_callback_and_retry_context(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('utcontainer') retry = LinearRetry(backoff=1) @@ -108,15 +120,15 @@ def test_retry_callback_and_retry_context(self, storage_account_name, storage_ac callback = ResponseCallback(status=201, new_status=408).override_status def assert_exception_is_present_on_retry_context(**kwargs): - self.assertIsNotNone(kwargs.get('response')) - self.assertEqual(kwargs['response'].status_code, 408) + assert kwargs.get('response') is not None + assert kwargs['response'].status_code == 408 # Act try: # The initial create will return 201, but we overwrite it and retry. # The retry will then get a 409 and return false. - with self.assertRaises(ResourceExistsError): + with pytest.raises(ResourceExistsError): service.create_container( container_name, raw_response_hook=callback, retry_hook=assert_exception_is_present_on_retry_context) @@ -125,7 +137,10 @@ def assert_exception_is_present_on_retry_context(**kwargs): @pytest.mark.live_test_only @BlobPreparer() - def test_retry_on_socket_timeout(self, storage_account_name, storage_account_key): + def test_retry_on_socket_timeout(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('utcontainer') blob_name = self.get_resource_name('blob') @@ -146,20 +161,23 @@ def test_retry_on_socket_timeout(self, storage_account_name, storage_account_key # Act try: - with self.assertRaises(AzureError) as error: + with pytest.raises(AzureError) as error: blob.download_blob() # Assert # 3 retries + 1 original == 4 assert retry_transport.count == 4 # This call should succeed on the server side, but fail on the client side due to socket timeout - self.assertTrue('read timeout' in str(error.exception), 'Expected socket timeout but got different exception.') + assert 'read timeout' in str(error.exception), 'Expected socket timeout but got different exception.' finally: # we must make the timeout normal again to let the delete operation succeed service.delete_container(container_name, connection_timeout=(11, 11)) @BlobPreparer() - def test_no_retry(self, storage_account_name, storage_account_key): + def test_no_retry(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('utcontainer') service = self._create_storage_service( @@ -171,16 +189,19 @@ def test_no_retry(self, storage_account_name, storage_account_key): # Act try: - with self.assertRaises(HttpResponseError) as error: + with pytest.raises(HttpResponseError) as error: service.create_container(container_name, raw_response_hook=callback) - self.assertEqual(error.exception.response.status_code, 408) - self.assertEqual(error.exception.reason, 'Created') + assert error.exception.response.status_code == 408 + assert error.exception.reason == 'Created' finally: service.delete_container(container_name) @BlobPreparer() - def test_linear_retry(self, storage_account_name, storage_account_key): + def test_linear_retry(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('utcontainer') retry = LinearRetry(backoff=1) @@ -194,7 +215,7 @@ def test_linear_retry(self, storage_account_name, storage_account_key): try: # The initial create will return 201, but we overwrite it and retry. # The retry will then get a 409 and return false. - with self.assertRaises(ResourceExistsError): + with pytest.raises(ResourceExistsError): service.create_container(container_name, raw_response_hook=callback) finally: service.delete_container(container_name) @@ -202,7 +223,10 @@ def test_linear_retry(self, storage_account_name, storage_account_key): # Assert @BlobPreparer() - def test_exponential_retry(self, storage_account_name, storage_account_key): + def test_exponential_retry(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('utcontainer') retry = ExponentialRetry(initial_backoff=1, increment_base=3, retry_total=3) @@ -216,17 +240,20 @@ def test_exponential_retry(self, storage_account_name, storage_account_key): callback = ResponseCallback(status=200, new_status=408) # Act - with self.assertRaises(HttpResponseError): + with pytest.raises(HttpResponseError): container.get_container_properties(raw_response_hook=callback.override_status) # Assert the response was called the right number of times (1 initial request + 3 retries) - self.assertEqual(callback.count, 1+3) + assert callback.count == 1+3 finally: # Clean up service.delete_container(container_name) @BlobPreparer() - def test_exponential_retry_interval(self, storage_account_name, storage_account_key): + def test_exponential_retry_interval(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange retry_policy = ExponentialRetry(initial_backoff=1, increment_base=3, random_jitter_range=3) context_stub = {} @@ -237,31 +264,34 @@ def test_exponential_retry_interval(self, storage_account_name, storage_account_ backoff = retry_policy.get_backoff_time(context_stub) # Assert backoff interval is within +/- 3 of 1 - self.assertTrue(0 <= backoff <= 4) + assert 0 <= backoff <= 4 # Act context_stub['count'] = 1 backoff = retry_policy.get_backoff_time(context_stub) # Assert backoff interval is within +/- 3 of 4(1+3^1) - self.assertTrue(1 <= backoff <= 7) + assert 1 <= backoff <= 7 # Act context_stub['count'] = 2 backoff = retry_policy.get_backoff_time(context_stub) # Assert backoff interval is within +/- 3 of 10(1+3^2) - self.assertTrue(7 <= backoff <= 13) + assert 7 <= backoff <= 13 # Act context_stub['count'] = 3 backoff = retry_policy.get_backoff_time(context_stub) # Assert backoff interval is within +/- 3 of 28(1+3^3) - self.assertTrue(25 <= backoff <= 31) + assert 25 <= backoff <= 31 @BlobPreparer() - def test_linear_retry_interval(self, storage_account_name, storage_account_key): + def test_linear_retry_interval(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange context_stub = {} @@ -271,24 +301,27 @@ def test_linear_retry_interval(self, storage_account_name, storage_account_key): backoff = retry_policy.get_backoff_time(context_stub) # Assert backoff interval is within +/- 3 of 1 - self.assertTrue(0 <= backoff <= 4) + assert 0 <= backoff <= 4 # Act retry_policy = LinearRetry(backoff=5, random_jitter_range=3) backoff = retry_policy.get_backoff_time(context_stub) # Assert backoff interval is within +/- 3 of 5 - self.assertTrue(2 <= backoff <= 8) + assert 2 <= backoff <= 8 # Act retry_policy = LinearRetry(backoff=15, random_jitter_range=3) backoff = retry_policy.get_backoff_time(context_stub) # Assert backoff interval is within +/- 3 of 15 - self.assertTrue(12 <= backoff <= 18) + assert 12 <= backoff <= 18 @BlobPreparer() - def test_invalid_retry(self, storage_account_name, storage_account_key): + def test_invalid_retry(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('utcontainer') retry = ExponentialRetry(initial_backoff=1, increment_base=2) @@ -300,15 +333,18 @@ def test_invalid_retry(self, storage_account_name, storage_account_key): # Act try: - with self.assertRaises(HttpResponseError) as error: + with pytest.raises(HttpResponseError) as error: service.create_container(container_name, raw_response_hook=callback) - self.assertEqual(error.exception.response.status_code, 418) - self.assertEqual(error.exception.reason, 'Created') + assert error.exception.response.status_code == 418 + assert error.exception.reason == 'Created' finally: service.delete_container(container_name) @BlobPreparer() - def test_retry_with_deserialization(self, storage_account_name, storage_account_key): + def test_retry_with_deserialization(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('retry') retry = ExponentialRetry(initial_backoff=1, increment_base=2) @@ -324,12 +360,15 @@ def test_retry_with_deserialization(self, storage_account_name, storage_account_ # Assert containers = list(containers) - self.assertTrue(len(containers) >= 1) + assert len(containers) >= 1 finally: service.delete_container(container_name) @BlobPreparer() - def test_retry_secondary(self, storage_account_name, storage_account_key): + def test_retry_secondary(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + """Secondary location test. This test is special, since in practical term, we don't have time to wait @@ -388,9 +427,9 @@ def put_retry_callback(retry_count=None, location_mode=None, **kwargs): # This call should be called once, with the decision to try secondary put_retry_callback.called = True if MockTransport.CALL_NUMBER == 1: - self.assertEqual(LocationMode.PRIMARY, location_mode) + assert LocationMode.PRIMARY == location_mode elif MockTransport.CALL_NUMBER == 2: - self.assertEqual(LocationMode.PRIMARY, location_mode) + assert LocationMode.PRIMARY == location_mode else: pytest.fail("This test is not supposed to retry more than once") put_retry_callback.called = False @@ -403,9 +442,9 @@ def retry_callback(retry_count=None, location_mode=None, **kwargs): # This call should be called once, with the decision to try secondary retry_callback.called = True if MockTransport.CALL_NUMBER == 1: - self.assertEqual(LocationMode.SECONDARY, location_mode) + assert LocationMode.SECONDARY == location_mode elif MockTransport.CALL_NUMBER == 2: - self.assertEqual(LocationMode.SECONDARY, location_mode) + assert LocationMode.SECONDARY == location_mode else: pytest.fail("This test is not supposed to retry more than once") retry_callback.called = False @@ -425,7 +464,10 @@ def retry_callback(retry_count=None, location_mode=None, **kwargs): assert retry_callback.called @BlobPreparer() - def test_invalid_account_key(self, storage_account_name, storage_account_key): + def test_invalid_account_key(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('utcontainer') retry = ExponentialRetry(initial_backoff=1, increment_base=3, retry_total=3) @@ -439,12 +481,12 @@ def test_invalid_account_key(self, storage_account_name, storage_account_key): retry_callback = retry_counter.simple_count # Act - with self.assertRaises(ClientAuthenticationError): + with pytest.raises(ClientAuthenticationError): service.create_container(container_name, retry_callback=retry_callback) # Assert # No retry should be performed since the signing error is fatal - self.assertEqual(retry_counter.count, 0) + assert retry_counter.count == 0 @staticmethod def count_wrapper(counter, func): @@ -478,7 +520,10 @@ def inner(*args, **kwargs): return inner @BlobPreparer() - def test_streaming_retry(self, storage_account_name, storage_account_key): + def test_streaming_retry(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + """Test that retry mechanisms are working when streaming data.""" # Should check that multiple requests went through the pipeline container_name = self.get_resource_name('utcontainer') diff --git a/sdk/storage/azure-storage-blob/tests/test_retry_async.py b/sdk/storage/azure-storage-blob/tests/test_retry_async.py index f639131a0da6..ef88047a6a3e 100644 --- a/sdk/storage/azure-storage-blob/tests/test_retry_async.py +++ b/sdk/storage/azure-storage-blob/tests/test_retry_async.py @@ -70,8 +70,10 @@ def _create_storage_service(self, service_class, account, key, connection_string # --Test Cases -------------------------------------------- @BlobPreparer() - @AsyncStorageTestCase.await_prepared_test - async def test_retry_on_server_error_async(self, storage_account_name, storage_account_key): + async def test_retry_on_server_error(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('utcontainer') service = self._create_storage_service(BlobServiceClient, storage_account_name, storage_account_key, transport=AiohttpTestTransport()) @@ -83,7 +85,7 @@ async def test_retry_on_server_error_async(self, storage_account_name, storage_a try: # The initial create will return 201, but we overwrite it and retry. # The retry will then get a 409 and return false. - with self.assertRaises(ResourceExistsError): + with pytest.raises(ResourceExistsError): await service.create_container(container_name, raw_response_hook=callback) finally: await service.delete_container(container_name) @@ -91,8 +93,10 @@ async def test_retry_on_server_error_async(self, storage_account_name, storage_a # Assert @BlobPreparer() - @AsyncStorageTestCase.await_prepared_test - async def test_retry_on_timeout_async(self, storage_account_name, storage_account_key): + async def test_retry_on_timeout(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('utcontainer') retry = ExponentialRetry(initial_backoff=1, increment_base=2) @@ -105,7 +109,7 @@ async def test_retry_on_timeout_async(self, storage_account_name, storage_accoun try: # The initial create will return 201, but we overwrite it and retry. # The retry will then get a 409 and return false. - with self.assertRaises(ResourceExistsError): + with pytest.raises(ResourceExistsError): await service.create_container(container_name, raw_response_hook=callback) finally: await service.delete_container(container_name) @@ -113,8 +117,10 @@ async def test_retry_on_timeout_async(self, storage_account_name, storage_accoun # Assert @BlobPreparer() - @AsyncStorageTestCase.await_prepared_test - async def test_retry_callback_and_retry_context_async(self, storage_account_name, storage_account_key): + async def test_retry_callback_and_retry_context(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('utcontainer') retry = LinearRetry(backoff=1) @@ -125,15 +131,15 @@ async def test_retry_callback_and_retry_context_async(self, storage_account_name callback = ResponseCallback(status=201, new_status=408).override_status def assert_exception_is_present_on_retry_context(**kwargs): - self.assertIsNotNone(kwargs.get('response')) - self.assertEqual(kwargs['response'].status_code, 408) + assert kwargs.get('response') is not None + assert kwargs['response'].status_code == 408 # Act try: # The initial create will return 201, but we overwrite it and retry. # The retry will then get a 409 and return false. - with self.assertRaises(ResourceExistsError): + with pytest.raises(ResourceExistsError): await service.create_container( container_name, raw_response_hook=callback, retry_hook=assert_exception_is_present_on_retry_context) @@ -142,8 +148,10 @@ def assert_exception_is_present_on_retry_context(**kwargs): @pytest.mark.live_test_only @BlobPreparer() - @AsyncStorageTestCase.await_prepared_test - async def test_retry_on_socket_timeout_async(self, storage_account_name, storage_account_key): + async def test_retry_on_socket_timeout(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('utcontainer') blob_name = self.get_resource_name('blob') @@ -164,7 +172,7 @@ async def test_retry_on_socket_timeout_async(self, storage_account_name, storage # Act try: - with self.assertRaises(AzureError) as error: + with pytest.raises(AzureError) as error: await blob.download_blob() # Assert # 3 retries + 1 original == 4 @@ -180,8 +188,10 @@ async def test_retry_on_socket_timeout_async(self, storage_account_name, storage await service.delete_container(container_name, connection_timeout=11, read_timeout=11) @BlobPreparer() - @AsyncStorageTestCase.await_prepared_test - async def test_no_retry_async(self, storage_account_name, storage_account_key): + async def test_no_retry(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('utcontainer') service = self._create_storage_service( @@ -193,17 +203,19 @@ async def test_no_retry_async(self, storage_account_name, storage_account_key): # Act try: - with self.assertRaises(HttpResponseError) as error: + with pytest.raises(HttpResponseError) as error: await service.create_container(container_name, raw_response_hook=callback) - self.assertEqual(error.exception.response.status_code, 408) - self.assertEqual(error.exception.reason, 'Created') + assert error.exception.response.status_code == 408 + assert error.exception.reason == 'Created' finally: await service.delete_container(container_name) @BlobPreparer() - @AsyncStorageTestCase.await_prepared_test - async def test_linear_retry_async(self, storage_account_name, storage_account_key): + async def test_linear_retry(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('utcontainer') retry = LinearRetry(backoff=1) @@ -217,7 +229,7 @@ async def test_linear_retry_async(self, storage_account_name, storage_account_ke try: # The initial create will return 201, but we overwrite it and retry. # The retry will then get a 409 and return false. - with self.assertRaises(ResourceExistsError): + with pytest.raises(ResourceExistsError): await service.create_container(container_name, raw_response_hook=callback) finally: await service.delete_container(container_name) @@ -225,8 +237,10 @@ async def test_linear_retry_async(self, storage_account_name, storage_account_ke # Assert @BlobPreparer() - @AsyncStorageTestCase.await_prepared_test - async def test_exponential_retry_async(self, storage_account_name, storage_account_key): + async def test_exponential_retry(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('utcontainer') retry = ExponentialRetry(initial_backoff=1, increment_base=3, retry_total=3) @@ -240,17 +254,20 @@ async def test_exponential_retry_async(self, storage_account_name, storage_accou callback = ResponseCallback(status=200, new_status=408) # Act - with self.assertRaises(HttpResponseError): + with pytest.raises(HttpResponseError): await container.get_container_properties(raw_response_hook=callback.override_status) # Assert the response was called the right number of times (1 initial request + 3 retries) - self.assertEqual(callback.count, 1+3) + assert callback.count == 1+3 finally: # Clean up await service.delete_container(container_name) @BlobPreparer() - def test_exponential_retry_interval_async(self, storage_account_name, storage_account_key): + def test_exponential_retry_interval(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange retry_policy = ExponentialRetry(initial_backoff=1, increment_base=3, random_jitter_range=3) context_stub = {} @@ -261,31 +278,34 @@ def test_exponential_retry_interval_async(self, storage_account_name, storage_ac backoff = retry_policy.get_backoff_time(context_stub) # Assert backoff interval is within +/- 3 of 1 - self.assertTrue(0 <= backoff <= 4) + assert 0 <= backoff <= 4 # Act context_stub['count'] = 1 backoff = retry_policy.get_backoff_time(context_stub) # Assert backoff interval is within +/- 3 of 4(1+3^1) - self.assertTrue(1 <= backoff <= 7) + assert 1 <= backoff <= 7 # Act context_stub['count'] = 2 backoff = retry_policy.get_backoff_time(context_stub) # Assert backoff interval is within +/- 3 of 10(1+3^2) - self.assertTrue(7 <= backoff <= 13) + assert 7 <= backoff <= 13 # Act context_stub['count'] = 3 backoff = retry_policy.get_backoff_time(context_stub) # Assert backoff interval is within +/- 3 of 28(1+3^3) - self.assertTrue(25 <= backoff <= 31) + assert 25 <= backoff <= 31 @BlobPreparer() - def test_linear_retry_interval_async(self, storage_account_name, storage_account_key): + def test_linear_retry_interval(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange context_stub = {} @@ -295,25 +315,27 @@ def test_linear_retry_interval_async(self, storage_account_name, storage_account backoff = retry_policy.get_backoff_time(context_stub) # Assert backoff interval is within +/- 3 of 1 - self.assertTrue(0 <= backoff <= 4) + assert 0 <= backoff <= 4 # Act retry_policy = LinearRetry(backoff=5, random_jitter_range=3) backoff = retry_policy.get_backoff_time(context_stub) # Assert backoff interval is within +/- 3 of 5 - self.assertTrue(2 <= backoff <= 8) + assert 2 <= backoff <= 8 # Act retry_policy = LinearRetry(backoff=15, random_jitter_range=3) backoff = retry_policy.get_backoff_time(context_stub) # Assert backoff interval is within +/- 3 of 15 - self.assertTrue(12 <= backoff <= 18) + assert 12 <= backoff <= 18 @BlobPreparer() - @AsyncStorageTestCase.await_prepared_test - async def test_invalid_retry_async(self, storage_account_name, storage_account_key): + async def test_invalid_retry(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('utcontainer') retry = ExponentialRetry(initial_backoff=1, increment_base=2) @@ -325,16 +347,18 @@ async def test_invalid_retry_async(self, storage_account_name, storage_account_k # Act try: - with self.assertRaises(HttpResponseError) as error: + with pytest.raises(HttpResponseError) as error: await service.create_container(container_name, raw_response_hook=callback) - self.assertEqual(error.exception.response.status_code, 418) - self.assertEqual(error.exception.reason, 'Created') + assert error.exception.response.status_code == 418 + assert error.exception.reason == 'Created' finally: await service.delete_container(container_name) @BlobPreparer() - @AsyncStorageTestCase.await_prepared_test - async def test_retry_with_deserialization_async(self, storage_account_name, storage_account_key): + async def test_retry_with_deserialization(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('retry') retry = ExponentialRetry(initial_backoff=1, increment_base=2) @@ -352,13 +376,15 @@ async def test_retry_with_deserialization_async(self, storage_account_name, stor listed = [] async for c in containers: listed.append(c) - self.assertTrue(len(listed) >= 1) + assert len(listed) >= 1 finally: await service.delete_container(container_name) @BlobPreparer() - @AsyncStorageTestCase.await_prepared_test - async def test_retry_secondary_async(self, storage_account_name, storage_account_key): + async def test_retry_secondary(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + """Secondary location test. This test is special, since in practical term, we don't have time to wait @@ -416,9 +442,9 @@ def put_retry_callback(retry_count=None, location_mode=None, **kwargs): # This call should be called once, with the decision to try secondary put_retry_callback.called = True if MockTransport.CALL_NUMBER == 1: - self.assertEqual(LocationMode.PRIMARY, location_mode) + assert LocationMode.PRIMARY == location_mode elif MockTransport.CALL_NUMBER == 2: - self.assertEqual(LocationMode.PRIMARY, location_mode) + assert LocationMode.PRIMARY == location_mode else: pytest.fail("This test is not supposed to retry more than once") put_retry_callback.called = False @@ -431,9 +457,9 @@ def retry_callback(retry_count=None, location_mode=None, **kwargs): # This call should be called once, with the decision to try secondary retry_callback.called = True if MockTransport.CALL_NUMBER == 1: - self.assertEqual(LocationMode.SECONDARY, location_mode) + assert LocationMode.SECONDARY == location_mode elif MockTransport.CALL_NUMBER == 2: - self.assertEqual(LocationMode.SECONDARY, location_mode) + assert LocationMode.SECONDARY == location_mode else: pytest.fail("This test is not supposed to retry more than once") retry_callback.called = False @@ -453,8 +479,10 @@ def retry_callback(retry_count=None, location_mode=None, **kwargs): assert retry_callback.called @BlobPreparer() - @AsyncStorageTestCase.await_prepared_test - async def test_invalid_account_key_async(self, storage_account_name, storage_account_key): + async def test_invalid_account_key(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + # Arrange container_name = self.get_resource_name('utcontainer') retry = ExponentialRetry(initial_backoff=1, increment_base=3, retry_total=3) @@ -468,12 +496,12 @@ async def test_invalid_account_key_async(self, storage_account_name, storage_acc retry_callback = retry_counter.simple_count # Act - with self.assertRaises(ClientAuthenticationError): + with pytest.raises(ClientAuthenticationError): await service.create_container(container_name, retry_callback=retry_callback) # Assert # No retry should be performed since the signing error is fatal - self.assertEqual(retry_counter.count, 0) + assert retry_counter.count == 0 @staticmethod def _count_wrapper(counter, func): @@ -485,8 +513,10 @@ def wrapper(*args, **kwargs): @pytest.mark.live_test_only @BlobPreparer() - @AsyncStorageTestCase.await_prepared_test - async def test_streaming_retry_async(self, storage_account_name, storage_account_key): + async def test_streaming_retry(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + storage_account_key = kwargs.pop("storage_account_key") + """Test that retry mechanisms are working when streaming data.""" container_name = self.get_resource_name('utcontainer') retry = LinearRetry(backoff = 0.1, random_jitter_range=0) From 20fe3b1d162aa626fcb57d0bbecdf788455046be Mon Sep 17 00:00:00 2001 From: Vincent Tran Date: Thu, 11 Aug 2022 14:32:51 -0700 Subject: [PATCH 2/4] Live passing except 3 --- ...estStorageRetrytest_exponential_retry.json | 193 ++++++++ ...eRetrytest_exponential_retry_interval.json | 4 + ...tStorageRetrytest_invalid_account_key.json | 4 + ....pyTestStorageRetrytest_invalid_retry.json | 57 +++ ...y.pyTestStorageRetrytest_linear_retry.json | 88 ++++ ...torageRetrytest_linear_retry_interval.json | 4 + ...retry.pyTestStorageRetrytest_no_retry.json | 57 +++ ...test_retry_callback_and_retry_context.json | 88 ++++ ...torageRetrytest_retry_on_server_error.json | 88 ++++ ...TestStorageRetrytest_retry_on_timeout.json | 88 ++++ ...yTestStorageRetrytest_retry_secondary.json | 183 ++++++++ ...eRetrytest_retry_with_deserialization.json | 109 +++++ ...yTestStorageRetrytest_streaming_retry.json | 432 ++++++++++++++++++ .../azure-storage-blob/tests/test_retry.py | 12 + 14 files changed, 1407 insertions(+) create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_exponential_retry.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_exponential_retry_interval.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_invalid_account_key.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_invalid_retry.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_linear_retry.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_linear_retry_interval.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_no_retry.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_callback_and_retry_context.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_on_server_error.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_on_timeout.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_secondary.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_with_deserialization.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_streaming_retry.json diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_exponential_retry.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_exponential_retry.json new file mode 100644 index 000000000000..8841f1ccf368 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_exponential_retry.json @@ -0,0 +1,193 @@ +{ + "Entries": [ + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer8eae2683?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:49:12 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:49:12 GMT", + "ETag": "\u00220x8DA7BDAF28D6250\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:49:12 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer8eae2683?restype=container", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:49:12 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:49:12 GMT", + "ETag": "\u00220x8DA7BDAF28D6250\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:49:12 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "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-immutable-storage-with-versioning-enabled": "false", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer8eae2683?restype=container", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:49:14 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:49:13 GMT", + "ETag": "\u00220x8DA7BDAF28D6250\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:49:12 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "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-immutable-storage-with-versioning-enabled": "false", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer8eae2683?restype=container", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:49:26 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:49:25 GMT", + "ETag": "\u00220x8DA7BDAF28D6250\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:49:12 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "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-immutable-storage-with-versioning-enabled": "false", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer8eae2683?restype=container", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:49:53 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:49:52 GMT", + "ETag": "\u00220x8DA7BDAF28D6250\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:49:12 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "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-immutable-storage-with-versioning-enabled": "false", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer8eae2683?restype=container", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:49:53 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 202, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:49:52 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + } + ], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_exponential_retry_interval.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_exponential_retry_interval.json new file mode 100644 index 000000000000..f721723386d8 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_exponential_retry_interval.json @@ -0,0 +1,4 @@ +{ + "Entries": [], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_invalid_account_key.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_invalid_account_key.json new file mode 100644 index 000000000000..f721723386d8 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_invalid_account_key.json @@ -0,0 +1,4 @@ +{ + "Entries": [], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_invalid_retry.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_invalid_retry.json new file mode 100644 index 000000000000..821007e851c3 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_invalid_retry.json @@ -0,0 +1,57 @@ +{ + "Entries": [ + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainerf28824c3?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:49:54 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:49:54 GMT", + "ETag": "\u00220x8DA7BDB0BBE3C1D\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:49:55 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainerf28824c3?restype=container", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:49:55 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 202, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:49:54 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + } + ], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_linear_retry.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_linear_retry.json new file mode 100644 index 000000000000..d23c487c7702 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_linear_retry.json @@ -0,0 +1,88 @@ +{ + "Entries": [ + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainerccc32457?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:49:08 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:49:08 GMT", + "ETag": "\u00220x8DA7BDAF02FCEDA\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:49:08 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainerccc32457?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:49:12 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 409, + "ResponseHeaders": { + "Content-Length": "230", + "Content-Type": "application/xml", + "Date": "Thu, 11 Aug 2022 20:49:11 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-error-code": "ContainerAlreadyExists", + "x-ms-version": "2021-08-06" + }, + "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:ac7e2bd6-501e-00a2-77c3-adcc38000000\n", + "Time:2022-08-11T20:49:12.2157656Z\u003C/Message\u003E\u003C/Error\u003E" + ] + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainerccc32457?restype=container", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:49:12 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 202, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:49:11 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + } + ], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_linear_retry_interval.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_linear_retry_interval.json new file mode 100644 index 000000000000..f721723386d8 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_linear_retry_interval.json @@ -0,0 +1,4 @@ +{ + "Entries": [], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_no_retry.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_no_retry.json new file mode 100644 index 000000000000..e681a780cb64 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_no_retry.json @@ -0,0 +1,57 @@ +{ + "Entries": [ + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer3b7022b9?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:49:08 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:49:07 GMT", + "ETag": "\u00220x8DA7BDAEFDA62FD\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:49:08 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer3b7022b9?restype=container", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:49:08 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 202, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:49:07 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + } + ], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_callback_and_retry_context.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_callback_and_retry_context.json new file mode 100644 index 000000000000..803ee0467eec --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_callback_and_retry_context.json @@ -0,0 +1,88 @@ +{ + "Entries": [ + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer89a2c94?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:48:59 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:48:59 GMT", + "ETag": "\u00220x8DA7BDAEAC933FC\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:48:59 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer89a2c94?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:49:00 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 409, + "ResponseHeaders": { + "Content-Length": "230", + "Content-Type": "application/xml", + "Date": "Thu, 11 Aug 2022 20:49:00 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-error-code": "ContainerAlreadyExists", + "x-ms-version": "2021-08-06" + }, + "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:ac7e275b-501e-00a2-2bc3-adcc38000000\n", + "Time:2022-08-11T20:49:00.8604757Z\u003C/Message\u003E\u003C/Error\u003E" + ] + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer89a2c94?restype=container", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:49:00 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 202, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:49:00 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + } + ], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_on_server_error.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_on_server_error.json new file mode 100644 index 000000000000..acefff9e9d70 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_on_server_error.json @@ -0,0 +1,88 @@ +{ + "Entries": [ + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer312a2838?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:48:36 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:48:36 GMT", + "ETag": "\u00220x8DA7BDADD618DF9\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:48:37 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer312a2838?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:48:52 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 409, + "ResponseHeaders": { + "Content-Length": "230", + "Content-Type": "application/xml", + "Date": "Thu, 11 Aug 2022 20:48:52 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-error-code": "ContainerAlreadyExists", + "x-ms-version": "2021-08-06" + }, + "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:ac7e2457-501e-00a2-38c3-adcc38000000\n", + "Time:2022-08-11T20:48:52.8560911Z\u003C/Message\u003E\u003C/Error\u003E" + ] + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer312a2838?restype=container", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:48:52 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 202, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:48:52 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + } + ], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_on_timeout.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_on_timeout.json new file mode 100644 index 000000000000..8ac0cd14e0f5 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_on_timeout.json @@ -0,0 +1,88 @@ +{ + "Entries": [ + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer67fb261f?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:48:53 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:48:52 GMT", + "ETag": "\u00220x8DA7BDAE6F8F5A4\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:48:53 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer67fb261f?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:48:59 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 409, + "ResponseHeaders": { + "Content-Length": "230", + "Content-Type": "application/xml", + "Date": "Thu, 11 Aug 2022 20:48:58 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-error-code": "ContainerAlreadyExists", + "x-ms-version": "2021-08-06" + }, + "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:ac7e26db-501e-00a2-43c3-adcc38000000\n", + "Time:2022-08-11T20:48:59.3429720Z\u003C/Message\u003E\u003C/Error\u003E" + ] + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer67fb261f?restype=container", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:48:59 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 202, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:48:58 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + } + ], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_secondary.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_secondary.json new file mode 100644 index 000000000000..9f186acf2d59 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_secondary.json @@ -0,0 +1,183 @@ +{ + "Entries": [ + { + "RequestUri": "https://storagename.blob.core.windows.net/containername?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:50:01 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:50:01 GMT", + "ETag": "\u00220x8DA7BDB0FE6F34B\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:50:02 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/containername?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:50:05 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 409, + "ResponseHeaders": { + "Content-Length": "230", + "Content-Type": "application/xml", + "Date": "Thu, 11 Aug 2022 20:50:04 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-error-code": "ContainerAlreadyExists", + "x-ms-version": "2021-08-06" + }, + "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:ac7e43ca-501e-00a2-0dc3-adcc38000000\n", + "Time:2022-08-11T20:50:05.3653964Z\u003C/Message\u003E\u003C/Error\u003E" + ] + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/?comp=list\u0026maxresults=1\u0026include=", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:50:05 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Type": "application/xml", + "Date": "Thu, 11 Aug 2022 20:50:04 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Transfer-Encoding": "chunked", + "Vary": "Origin", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CEnumerationResults ServiceEndpoint=\u0022https://storagename.blob.core.windows.net/\u0022\u003E\u003CMaxResults\u003E1\u003C/MaxResults\u003E\u003CContainers\u003E\u003CContainer\u003E\u003CName\u003Econtainername\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EThu, 11 Aug 2022 20:50:02 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8DA7BDB0FE6F34B\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003CImmutableStorageWithVersioningEnabled\u003Efalse\u003C/ImmutableStorageWithVersioningEnabled\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003C/Containers\u003E\u003CNextMarker\u003E/storagename/retry3a62a3e\u003C/NextMarker\u003E\u003C/EnumerationResults\u003E" + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/?comp=list\u0026maxresults=1\u0026include=", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:50:10 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Type": "application/xml", + "Date": "Thu, 11 Aug 2022 20:50:09 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Transfer-Encoding": "chunked", + "Vary": "Origin", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CEnumerationResults ServiceEndpoint=\u0022https://storagename.blob.core.windows.net/\u0022\u003E\u003CMaxResults\u003E1\u003C/MaxResults\u003E\u003CContainers\u003E\u003CContainer\u003E\u003CName\u003Econtainername\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EThu, 11 Aug 2022 20:50:02 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8DA7BDB0FE6F34B\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003CImmutableStorageWithVersioningEnabled\u003Efalse\u003C/ImmutableStorageWithVersioningEnabled\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003C/Containers\u003E\u003CNextMarker\u003E/storagename/retry3a62a3e\u003C/NextMarker\u003E\u003C/EnumerationResults\u003E" + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/containername?restype=container", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:50:10 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:50:09 GMT", + "ETag": "\u00220x8DA7BDB0FE6F34B\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:50:02 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "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-immutable-storage-with-versioning-enabled": "false", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/containername?restype=container", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:50:12 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:50:11 GMT", + "ETag": "\u00220x8DA7BDB0FE6F34B\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:50:02 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "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-immutable-storage-with-versioning-enabled": "false", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + } + ], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_with_deserialization.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_with_deserialization.json new file mode 100644 index 000000000000..7ad3895a7306 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_retry_with_deserialization.json @@ -0,0 +1,109 @@ +{ + "Entries": [ + { + "RequestUri": "https://storagename.blob.core.windows.net/retry3a62a3e?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:49:55 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:49:54 GMT", + "ETag": "\u00220x8DA7BDB0C2B4CAF\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:49:55 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/?comp=list\u0026prefix=retry\u0026include=", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:49:55 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Type": "application/xml", + "Date": "Thu, 11 Aug 2022 20:49:55 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Transfer-Encoding": "chunked", + "Vary": "Origin", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CEnumerationResults ServiceEndpoint=\u0022https://storagename.blob.core.windows.net/\u0022\u003E\u003CPrefix\u003Eretry\u003C/Prefix\u003E\u003CContainers\u003E\u003CContainer\u003E\u003CName\u003Eretry3a62a3e\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EThu, 11 Aug 2022 20:49:55 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8DA7BDB0C2B4CAF\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003CImmutableStorageWithVersioningEnabled\u003Efalse\u003C/ImmutableStorageWithVersioningEnabled\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003C/Containers\u003E\u003CNextMarker /\u003E\u003C/EnumerationResults\u003E" + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/?comp=list\u0026prefix=retry\u0026include=", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:50:01 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Type": "application/xml", + "Date": "Thu, 11 Aug 2022 20:50:00 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Transfer-Encoding": "chunked", + "Vary": "Origin", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CEnumerationResults ServiceEndpoint=\u0022https://storagename.blob.core.windows.net/\u0022\u003E\u003CPrefix\u003Eretry\u003C/Prefix\u003E\u003CContainers\u003E\u003CContainer\u003E\u003CName\u003Eretry3a62a3e\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EThu, 11 Aug 2022 20:49:55 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8DA7BDB0C2B4CAF\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003CImmutableStorageWithVersioningEnabled\u003Efalse\u003C/ImmutableStorageWithVersioningEnabled\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003C/Containers\u003E\u003CNextMarker /\u003E\u003C/EnumerationResults\u003E" + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/retry3a62a3e?restype=container", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:50:01 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 202, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:50:00 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + } + ], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_streaming_retry.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_streaming_retry.json new file mode 100644 index 000000000000..c6a401c385e9 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_streaming_retry.json @@ -0,0 +1,432 @@ +{ + "Entries": [ + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer401125a6?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:50:54 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:50:54 GMT", + "ETag": "\u00220x8DA7BDB2F479A69\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:50:54 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer401125a6?restype=container", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:50:54 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 20:50:54 GMT", + "ETag": "\u00220x8DA7BDB2F479A69\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:50:54 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "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-immutable-storage-with-versioning-enabled": "false", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer401125a6/myblob", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "Content-Length": "5", + "Content-Type": "application/octet-stream", + "If-None-Match": "*", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-blob-type": "BlockBlob", + "x-ms-date": "Thu, 11 Aug 2022 20:50:54 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": "YWJjZGU=", + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Content-MD5": "q1a02StAcTrMWviZhdS3hg==", + "Date": "Thu, 11 Aug 2022 20:50:55 GMT", + "ETag": "\u00220x8DA7BDB2F6A2B30\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:50:54 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-content-crc64": "ExJGZ9Dkswo=", + "x-ms-request-server-encrypted": "true", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer401125a6/myblob", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:50:54 GMT", + "x-ms-range": "bytes=0-33554431", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 206, + "ResponseHeaders": { + "Accept-Ranges": "bytes", + "Content-Length": "5", + "Content-Range": "bytes 0-4/5", + "Content-Type": "application/octet-stream", + "Date": "Thu, 11 Aug 2022 20:50:55 GMT", + "ETag": "\u00220x8DA7BDB2F6A2B30\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:50:54 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "x-ms-blob-content-md5": "q1a02StAcTrMWviZhdS3hg==", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Thu, 11 Aug 2022 20:50:54 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": "YWJjZGU=" + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer401125a6/myblob", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:50:56 GMT", + "x-ms-range": "bytes=0-33554431", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 206, + "ResponseHeaders": { + "Accept-Ranges": "bytes", + "Content-Length": "5", + "Content-Range": "bytes 0-4/5", + "Content-Type": "application/octet-stream", + "Date": "Thu, 11 Aug 2022 20:50:56 GMT", + "ETag": "\u00220x8DA7BDB2F6A2B30\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:50:54 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "x-ms-blob-content-md5": "q1a02StAcTrMWviZhdS3hg==", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Thu, 11 Aug 2022 20:50:54 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": "YWJjZGU=" + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer401125a6/myblob", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:50:57 GMT", + "x-ms-range": "bytes=0-33554431", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 206, + "ResponseHeaders": { + "Accept-Ranges": "bytes", + "Content-Length": "5", + "Content-Range": "bytes 0-4/5", + "Content-Type": "application/octet-stream", + "Date": "Thu, 11 Aug 2022 20:50:57 GMT", + "ETag": "\u00220x8DA7BDB2F6A2B30\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:50:54 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "x-ms-blob-content-md5": "q1a02StAcTrMWviZhdS3hg==", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Thu, 11 Aug 2022 20:50:54 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": "YWJjZGU=" + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer401125a6/myblob", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:50:57 GMT", + "x-ms-range": "bytes=0-33554431", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 206, + "ResponseHeaders": { + "Accept-Ranges": "bytes", + "Content-Length": "5", + "Content-Range": "bytes 0-4/5", + "Content-Type": "application/octet-stream", + "Date": "Thu, 11 Aug 2022 20:50:57 GMT", + "ETag": "\u00220x8DA7BDB2F6A2B30\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:50:54 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "x-ms-blob-content-md5": "q1a02StAcTrMWviZhdS3hg==", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Thu, 11 Aug 2022 20:50:54 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": "YWJjZGU=" + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer401125a6/myblob", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:50:58 GMT", + "x-ms-range": "bytes=0-33554431", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 206, + "ResponseHeaders": { + "Accept-Ranges": "bytes", + "Content-Length": "5", + "Content-Range": "bytes 0-4/5", + "Content-Type": "application/octet-stream", + "Date": "Thu, 11 Aug 2022 20:50:58 GMT", + "ETag": "\u00220x8DA7BDB2F6A2B30\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:50:54 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "x-ms-blob-content-md5": "q1a02StAcTrMWviZhdS3hg==", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Thu, 11 Aug 2022 20:50:54 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": "YWJjZGU=" + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer401125a6/myblob", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:50:59 GMT", + "x-ms-range": "bytes=0-33554431", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 206, + "ResponseHeaders": { + "Accept-Ranges": "bytes", + "Content-Length": "5", + "Content-Range": "bytes 0-4/5", + "Content-Type": "application/octet-stream", + "Date": "Thu, 11 Aug 2022 20:50:59 GMT", + "ETag": "\u00220x8DA7BDB2F6A2B30\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:50:54 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "x-ms-blob-content-md5": "q1a02StAcTrMWviZhdS3hg==", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Thu, 11 Aug 2022 20:50:54 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": "YWJjZGU=" + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer401125a6/myblob", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:50:59 GMT", + "x-ms-range": "bytes=0-33554431", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 206, + "ResponseHeaders": { + "Accept-Ranges": "bytes", + "Content-Length": "5", + "Content-Range": "bytes 0-4/5", + "Content-Type": "application/octet-stream", + "Date": "Thu, 11 Aug 2022 20:50:59 GMT", + "ETag": "\u00220x8DA7BDB2F6A2B30\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:50:54 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "x-ms-blob-content-md5": "q1a02StAcTrMWviZhdS3hg==", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Thu, 11 Aug 2022 20:50:54 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": "YWJjZGU=" + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer401125a6/myblob", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:51:00 GMT", + "x-ms-range": "bytes=0-33554431", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 206, + "ResponseHeaders": { + "Accept-Ranges": "bytes", + "Content-Length": "5", + "Content-Range": "bytes 0-4/5", + "Content-Type": "application/octet-stream", + "Date": "Thu, 11 Aug 2022 20:51:01 GMT", + "ETag": "\u00220x8DA7BDB2F6A2B30\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:50:54 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "x-ms-blob-content-md5": "q1a02StAcTrMWviZhdS3hg==", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Thu, 11 Aug 2022 20:50:54 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": "YWJjZGU=" + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer401125a6/myblob", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Connection": "keep-alive", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 20:51:02 GMT", + "x-ms-range": "bytes=0-33554431", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 206, + "ResponseHeaders": { + "Accept-Ranges": "bytes", + "Content-Length": "5", + "Content-Range": "bytes 0-4/5", + "Content-Type": "application/octet-stream", + "Date": "Thu, 11 Aug 2022 20:51:02 GMT", + "ETag": "\u00220x8DA7BDB2F6A2B30\u0022", + "Last-Modified": "Thu, 11 Aug 2022 20:50:54 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "x-ms-blob-content-md5": "q1a02StAcTrMWviZhdS3hg==", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Thu, 11 Aug 2022 20:50:54 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": "YWJjZGU=" + } + ], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/test_retry.py b/sdk/storage/azure-storage-blob/tests/test_retry.py index 6726886d5293..a1a0a29ac831 100644 --- a/sdk/storage/azure-storage-blob/tests/test_retry.py +++ b/sdk/storage/azure-storage-blob/tests/test_retry.py @@ -82,6 +82,7 @@ def test_retry_on_server_error(self, **kwargs): # Assert @BlobPreparer() + @recorded_by_proxy def test_retry_on_timeout(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -106,6 +107,7 @@ def test_retry_on_timeout(self, **kwargs): # Assert @BlobPreparer() + @recorded_by_proxy def test_retry_callback_and_retry_context(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -174,6 +176,7 @@ def test_retry_on_socket_timeout(self, **kwargs): service.delete_container(container_name, connection_timeout=(11, 11)) @BlobPreparer() + @recorded_by_proxy def test_no_retry(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -198,6 +201,7 @@ def test_no_retry(self, **kwargs): service.delete_container(container_name) @BlobPreparer() + @recorded_by_proxy def test_linear_retry(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -223,6 +227,7 @@ def test_linear_retry(self, **kwargs): # Assert @BlobPreparer() + @recorded_by_proxy def test_exponential_retry(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -250,6 +255,7 @@ def test_exponential_retry(self, **kwargs): service.delete_container(container_name) @BlobPreparer() + @recorded_by_proxy def test_exponential_retry_interval(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -288,6 +294,7 @@ def test_exponential_retry_interval(self, **kwargs): assert 25 <= backoff <= 31 @BlobPreparer() + @recorded_by_proxy def test_linear_retry_interval(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -318,6 +325,7 @@ def test_linear_retry_interval(self, **kwargs): assert 12 <= backoff <= 18 @BlobPreparer() + @recorded_by_proxy def test_invalid_retry(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -341,6 +349,7 @@ def test_invalid_retry(self, **kwargs): service.delete_container(container_name) @BlobPreparer() + @recorded_by_proxy def test_retry_with_deserialization(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -365,6 +374,7 @@ def test_retry_with_deserialization(self, **kwargs): service.delete_container(container_name) @BlobPreparer() + @recorded_by_proxy def test_retry_secondary(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -464,6 +474,7 @@ def retry_callback(retry_count=None, location_mode=None, **kwargs): assert retry_callback.called @BlobPreparer() + @recorded_by_proxy def test_invalid_account_key(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -520,6 +531,7 @@ def inner(*args, **kwargs): return inner @BlobPreparer() + @recorded_by_proxy def test_streaming_retry(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") From 5e7261dacf4f22a1c402766fd50c72e0e51b406a Mon Sep 17 00:00:00 2001 From: Vincent Tran Date: Thu, 11 Aug 2022 15:43:34 -0700 Subject: [PATCH 3/4] All live passing --- ...t_retry.pyTestStorageRetrytest_invalid_retry.json | 12 ++++++------ .../test_retry.pyTestStorageRetrytest_no_retry.json | 12 ++++++------ sdk/storage/azure-storage-blob/tests/test_retry.py | 10 +++++----- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_invalid_retry.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_invalid_retry.json index 821007e851c3..ccd610b29f12 100644 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_invalid_retry.json +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_invalid_retry.json @@ -9,16 +9,16 @@ "Connection": "keep-alive", "Content-Length": "0", "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", - "x-ms-date": "Thu, 11 Aug 2022 20:49:54 GMT", + "x-ms-date": "Thu, 11 Aug 2022 22:43:17 GMT", "x-ms-version": "2021-08-06" }, "RequestBody": null, "StatusCode": 201, "ResponseHeaders": { "Content-Length": "0", - "Date": "Thu, 11 Aug 2022 20:49:54 GMT", - "ETag": "\u00220x8DA7BDB0BBE3C1D\u0022", - "Last-Modified": "Thu, 11 Aug 2022 20:49:55 GMT", + "Date": "Thu, 11 Aug 2022 22:43:17 GMT", + "ETag": "\u00220x8DA7BEAE2A99D2B\u0022", + "Last-Modified": "Thu, 11 Aug 2022 22:43:18 GMT", "Server": [ "Windows-Azure-Blob/1.0", "Microsoft-HTTPAPI/2.0" @@ -36,14 +36,14 @@ "Connection": "keep-alive", "Content-Length": "0", "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", - "x-ms-date": "Thu, 11 Aug 2022 20:49:55 GMT", + "x-ms-date": "Thu, 11 Aug 2022 22:43:18 GMT", "x-ms-version": "2021-08-06" }, "RequestBody": null, "StatusCode": 202, "ResponseHeaders": { "Content-Length": "0", - "Date": "Thu, 11 Aug 2022 20:49:54 GMT", + "Date": "Thu, 11 Aug 2022 22:43:17 GMT", "Server": [ "Windows-Azure-Blob/1.0", "Microsoft-HTTPAPI/2.0" diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_no_retry.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_no_retry.json index e681a780cb64..edbaef38b94b 100644 --- a/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_no_retry.json +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry.pyTestStorageRetrytest_no_retry.json @@ -9,16 +9,16 @@ "Connection": "keep-alive", "Content-Length": "0", "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", - "x-ms-date": "Thu, 11 Aug 2022 20:49:08 GMT", + "x-ms-date": "Thu, 11 Aug 2022 22:42:40 GMT", "x-ms-version": "2021-08-06" }, "RequestBody": null, "StatusCode": 201, "ResponseHeaders": { "Content-Length": "0", - "Date": "Thu, 11 Aug 2022 20:49:07 GMT", - "ETag": "\u00220x8DA7BDAEFDA62FD\u0022", - "Last-Modified": "Thu, 11 Aug 2022 20:49:08 GMT", + "Date": "Thu, 11 Aug 2022 22:42:41 GMT", + "ETag": "\u00220x8DA7BEACC921546\u0022", + "Last-Modified": "Thu, 11 Aug 2022 22:42:41 GMT", "Server": [ "Windows-Azure-Blob/1.0", "Microsoft-HTTPAPI/2.0" @@ -36,14 +36,14 @@ "Connection": "keep-alive", "Content-Length": "0", "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", - "x-ms-date": "Thu, 11 Aug 2022 20:49:08 GMT", + "x-ms-date": "Thu, 11 Aug 2022 22:42:41 GMT", "x-ms-version": "2021-08-06" }, "RequestBody": null, "StatusCode": 202, "ResponseHeaders": { "Content-Length": "0", - "Date": "Thu, 11 Aug 2022 20:49:07 GMT", + "Date": "Thu, 11 Aug 2022 22:42:41 GMT", "Server": [ "Windows-Azure-Blob/1.0", "Microsoft-HTTPAPI/2.0" diff --git a/sdk/storage/azure-storage-blob/tests/test_retry.py b/sdk/storage/azure-storage-blob/tests/test_retry.py index a1a0a29ac831..b3738b144ca0 100644 --- a/sdk/storage/azure-storage-blob/tests/test_retry.py +++ b/sdk/storage/azure-storage-blob/tests/test_retry.py @@ -169,7 +169,7 @@ def test_retry_on_socket_timeout(self, **kwargs): # 3 retries + 1 original == 4 assert retry_transport.count == 4 # This call should succeed on the server side, but fail on the client side due to socket timeout - assert 'read timeout' in str(error.exception), 'Expected socket timeout but got different exception.' + assert 'read timeout' in str(error.value.args[0]), 'Expected socket timeout but got different exception.' finally: # we must make the timeout normal again to let the delete operation succeed @@ -194,8 +194,8 @@ def test_no_retry(self, **kwargs): try: with pytest.raises(HttpResponseError) as error: service.create_container(container_name, raw_response_hook=callback) - assert error.exception.response.status_code == 408 - assert error.exception.reason == 'Created' + assert error.value.status_code == 408 + assert error.value.reason == 'Created' finally: service.delete_container(container_name) @@ -343,8 +343,8 @@ def test_invalid_retry(self, **kwargs): try: with pytest.raises(HttpResponseError) as error: service.create_container(container_name, raw_response_hook=callback) - assert error.exception.response.status_code == 418 - assert error.exception.reason == 'Created' + assert error.value.status_code == 418 + assert error.value.reason == 'Created' finally: service.delete_container(container_name) From 1de54928371a5f33a7f82e26d2b37686d6b7eee0 Mon Sep 17 00:00:00 2001 From: Vincent Tran Date: Thu, 11 Aug 2022 17:22:02 -0700 Subject: [PATCH 4/4] Finally passing recorded both async&sync --- ...orageRetryAsynctest_exponential_retry.json | 187 ++++++++++++++++++ ...yAsynctest_exponential_retry_interval.json | 4 + ...ageRetryAsynctest_invalid_account_key.json | 4 + ...stStorageRetryAsynctest_invalid_retry.json | 55 ++++++ ...estStorageRetryAsynctest_linear_retry.json | 85 ++++++++ ...eRetryAsynctest_linear_retry_interval.json | 4 + ....pyTestStorageRetryAsynctest_no_retry.json | 55 ++++++ ...test_retry_callback_and_retry_context.json | 85 ++++++++ ...eRetryAsynctest_retry_on_server_error.json | 85 ++++++++ ...torageRetryAsynctest_retry_on_timeout.json | 85 ++++++++ ...StorageRetryAsynctest_retry_secondary.json | 177 +++++++++++++++++ ...yAsynctest_retry_with_deserialization.json | 105 ++++++++++ .../azure-storage-blob/tests/test_retry.py | 23 +-- .../tests/test_retry_async.py | 88 ++++----- 14 files changed, 979 insertions(+), 63 deletions(-) create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_exponential_retry.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_exponential_retry_interval.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_invalid_account_key.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_invalid_retry.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_linear_retry.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_linear_retry_interval.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_no_retry.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_callback_and_retry_context.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_on_server_error.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_on_timeout.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_secondary.json create mode 100644 sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_with_deserialization.json diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_exponential_retry.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_exponential_retry.json new file mode 100644 index 000000000000..238dc25df8b2 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_exponential_retry.json @@ -0,0 +1,187 @@ +{ + "Entries": [ + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer5d5c2afe?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:06:56 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:06:56 GMT", + "ETag": "\u00220x8DA7BEE30638024\u0022", + "Last-Modified": "Thu, 11 Aug 2022 23:06:57 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer5d5c2afe?restype=container", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:06:56 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:06:56 GMT", + "ETag": "\u00220x8DA7BEE30638024\u0022", + "Last-Modified": "Thu, 11 Aug 2022 23:06:57 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "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-immutable-storage-with-versioning-enabled": "false", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer5d5c2afe?restype=container", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:06:56 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:06:59 GMT", + "ETag": "\u00220x8DA7BEE30638024\u0022", + "Last-Modified": "Thu, 11 Aug 2022 23:06:57 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "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-immutable-storage-with-versioning-enabled": "false", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer5d5c2afe?restype=container", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:06:56 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:07:10 GMT", + "ETag": "\u00220x8DA7BEE30638024\u0022", + "Last-Modified": "Thu, 11 Aug 2022 23:06:57 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "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-immutable-storage-with-versioning-enabled": "false", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer5d5c2afe?restype=container", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:06:56 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:07:35 GMT", + "ETag": "\u00220x8DA7BEE30638024\u0022", + "Last-Modified": "Thu, 11 Aug 2022 23:06:57 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "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-immutable-storage-with-versioning-enabled": "false", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer5d5c2afe?restype=container", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:07:36 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 202, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:07:35 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + } + ], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_exponential_retry_interval.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_exponential_retry_interval.json new file mode 100644 index 000000000000..f721723386d8 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_exponential_retry_interval.json @@ -0,0 +1,4 @@ +{ + "Entries": [], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_invalid_account_key.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_invalid_account_key.json new file mode 100644 index 000000000000..f721723386d8 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_invalid_account_key.json @@ -0,0 +1,4 @@ +{ + "Entries": [], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_invalid_retry.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_invalid_retry.json new file mode 100644 index 000000000000..400b38c89794 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_invalid_retry.json @@ -0,0 +1,55 @@ +{ + "Entries": [ + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontaineraf4a293e?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:02:55 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:02:54 GMT", + "ETag": "\u00220x8DA7BEDA06A432A\u0022", + "Last-Modified": "Thu, 11 Aug 2022 23:02:55 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontaineraf4a293e?restype=container", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:02:55 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 202, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:02:54 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + } + ], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_linear_retry.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_linear_retry.json new file mode 100644 index 000000000000..f88967cd2f43 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_linear_retry.json @@ -0,0 +1,85 @@ +{ + "Entries": [ + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer850a28d2?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:02:08 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:02:08 GMT", + "ETag": "\u00220x8DA7BED8499A665\u0022", + "Last-Modified": "Thu, 11 Aug 2022 23:02:08 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer850a28d2?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:02:08 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 409, + "ResponseHeaders": { + "Content-Length": "230", + "Content-Type": "application/xml", + "Date": "Thu, 11 Aug 2022 23:02:10 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-error-code": "ContainerAlreadyExists", + "x-ms-version": "2021-08-06" + }, + "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:092ddaf9-001e-0029-2cd6-adc855000000\n", + "Time:2022-08-11T23:02:11.0117097Z\u003C/Message\u003E\u003C/Error\u003E" + ] + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer850a28d2?restype=container", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:02:10 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 202, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:02:10 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + } + ], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_linear_retry_interval.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_linear_retry_interval.json new file mode 100644 index 000000000000..f721723386d8 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_linear_retry_interval.json @@ -0,0 +1,4 @@ +{ + "Entries": [], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_no_retry.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_no_retry.json new file mode 100644 index 000000000000..06d79f940048 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_no_retry.json @@ -0,0 +1,55 @@ +{ + "Entries": [ + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainere1bc2734?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:02:08 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:02:07 GMT", + "ETag": "\u00220x8DA7BED844F0F1E\u0022", + "Last-Modified": "Thu, 11 Aug 2022 23:02:08 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainere1bc2734?restype=container", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:02:08 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 202, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:02:07 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + } + ], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_callback_and_retry_context.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_callback_and_retry_context.json new file mode 100644 index 000000000000..a4543a757eb7 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_callback_and_retry_context.json @@ -0,0 +1,85 @@ +{ + "Entries": [ + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer1a7d310f?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:02:00 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:01:59 GMT", + "ETag": "\u00220x8DA7BED7F7D7CA0\u0022", + "Last-Modified": "Thu, 11 Aug 2022 23:02:00 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer1a7d310f?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:02:00 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 409, + "ResponseHeaders": { + "Content-Length": "230", + "Content-Type": "application/xml", + "Date": "Thu, 11 Aug 2022 23:02:02 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-error-code": "ContainerAlreadyExists", + "x-ms-version": "2021-08-06" + }, + "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:092dd6f8-001e-0029-29d6-adc855000000\n", + "Time:2022-08-11T23:02:03.5741574Z\u003C/Message\u003E\u003C/Error\u003E" + ] + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer1a7d310f?restype=container", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:02:03 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 202, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:02:03 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + } + ], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_on_server_error.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_on_server_error.json new file mode 100644 index 000000000000..0f61bd99d3f5 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_on_server_error.json @@ -0,0 +1,85 @@ +{ + "Entries": [ + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer11c42cb3?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:01:38 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:01:38 GMT", + "ETag": "\u00220x8DA7BED729A66E4\u0022", + "Last-Modified": "Thu, 11 Aug 2022 23:01:38 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer11c42cb3?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:01:38 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 409, + "ResponseHeaders": { + "Content-Length": "230", + "Content-Type": "application/xml", + "Date": "Thu, 11 Aug 2022 23:01:56 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-error-code": "ContainerAlreadyExists", + "x-ms-version": "2021-08-06" + }, + "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:092dd397-001e-0029-38d6-adc855000000\n", + "Time:2022-08-11T23:01:56.8463714Z\u003C/Message\u003E\u003C/Error\u003E" + ] + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer11c42cb3?restype=container", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:01:56 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 202, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:01:56 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + } + ], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_on_timeout.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_on_timeout.json new file mode 100644 index 000000000000..84bb766397e4 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_on_timeout.json @@ -0,0 +1,85 @@ +{ + "Entries": [ + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer322e2a9a?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:01:57 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:01:56 GMT", + "ETag": "\u00220x8DA7BED7DD2AFBF\u0022", + "Last-Modified": "Thu, 11 Aug 2022 23:01:57 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer322e2a9a?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:01:57 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 409, + "ResponseHeaders": { + "Content-Length": "230", + "Content-Type": "application/xml", + "Date": "Thu, 11 Aug 2022 23:01:59 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-error-code": "ContainerAlreadyExists", + "x-ms-version": "2021-08-06" + }, + "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:092dd52f-001e-0029-1ed6-adc855000000\n", + "Time:2022-08-11T23:01:59.7384194Z\u003C/Message\u003E\u003C/Error\u003E" + ] + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/utcontainer322e2a9a?restype=container", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:01:59 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 202, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:01:59 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + } + ], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_secondary.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_secondary.json new file mode 100644 index 000000000000..cbf83a4d3231 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_secondary.json @@ -0,0 +1,177 @@ +{ + "Entries": [ + { + "RequestUri": "https://storagename.blob.core.windows.net/containername?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:03:02 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:03:02 GMT", + "ETag": "\u00220x8DA7BEDA4F869C1\u0022", + "Last-Modified": "Thu, 11 Aug 2022 23:03:03 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/containername?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:03:02 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 409, + "ResponseHeaders": { + "Content-Length": "230", + "Content-Type": "application/xml", + "Date": "Thu, 11 Aug 2022 23:03:04 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-error-code": "ContainerAlreadyExists", + "x-ms-version": "2021-08-06" + }, + "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:092df780-001e-0029-05d6-adc855000000\n", + "Time:2022-08-11T23:03:05.5947493Z\u003C/Message\u003E\u003C/Error\u003E" + ] + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/?comp=list\u0026maxresults=1\u0026include=", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:03:05 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Type": "application/xml", + "Date": "Thu, 11 Aug 2022 23:03:04 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Transfer-Encoding": "chunked", + "Vary": "Origin", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CEnumerationResults ServiceEndpoint=\u0022https://storagename.blob.core.windows.net/\u0022\u003E\u003CMaxResults\u003E1\u003C/MaxResults\u003E\u003CContainers\u003E\u003CContainer\u003E\u003CName\u003Econtainername\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EThu, 11 Aug 2022 23:03:03 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8DA7BEDA4F869C1\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003CImmutableStorageWithVersioningEnabled\u003Efalse\u003C/ImmutableStorageWithVersioningEnabled\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003C/Containers\u003E\u003CNextMarker\u003E/storagename/retryfa982eb9\u003C/NextMarker\u003E\u003C/EnumerationResults\u003E" + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/?comp=list\u0026maxresults=1\u0026include=", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:03:05 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Type": "application/xml", + "Date": "Thu, 11 Aug 2022 23:03:05 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Transfer-Encoding": "chunked", + "Vary": "Origin", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CEnumerationResults ServiceEndpoint=\u0022https://storagename.blob.core.windows.net/\u0022\u003E\u003CMaxResults\u003E1\u003C/MaxResults\u003E\u003CContainers\u003E\u003CContainer\u003E\u003CName\u003Econtainername\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EThu, 11 Aug 2022 23:03:03 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8DA7BEDA4F869C1\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003CImmutableStorageWithVersioningEnabled\u003Efalse\u003C/ImmutableStorageWithVersioningEnabled\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003C/Containers\u003E\u003CNextMarker\u003E/storagename/retryfa982eb9\u003C/NextMarker\u003E\u003C/EnumerationResults\u003E" + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/containername?restype=container", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:03:06 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:03:05 GMT", + "ETag": "\u00220x8DA7BEDA4F869C1\u0022", + "Last-Modified": "Thu, 11 Aug 2022 23:03:03 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "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-immutable-storage-with-versioning-enabled": "false", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/containername?restype=container", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:03:06 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:03:08 GMT", + "ETag": "\u00220x8DA7BEDA4F869C1\u0022", + "Last-Modified": "Thu, 11 Aug 2022 23:03:03 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Vary": "Origin", + "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-immutable-storage-with-versioning-enabled": "false", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + } + ], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_with_deserialization.json b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_with_deserialization.json new file mode 100644 index 000000000000..ca2b9db051d2 --- /dev/null +++ b/sdk/storage/azure-storage-blob/tests/recordings/test_retry_async.pyTestStorageRetryAsynctest_retry_with_deserialization.json @@ -0,0 +1,105 @@ +{ + "Entries": [ + { + "RequestUri": "https://storagename.blob.core.windows.net/retryfa982eb9?restype=container", + "RequestMethod": "PUT", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:02:55 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 201, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:02:55 GMT", + "ETag": "\u00220x8DA7BEDA0C94B14\u0022", + "Last-Modified": "Thu, 11 Aug 2022 23:02:56 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/?comp=list\u0026prefix=retry\u0026include=", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:02:56 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Type": "application/xml", + "Date": "Thu, 11 Aug 2022 23:02:55 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Transfer-Encoding": "chunked", + "Vary": "Origin", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CEnumerationResults ServiceEndpoint=\u0022https://storagename.blob.core.windows.net/\u0022\u003E\u003CPrefix\u003Eretry\u003C/Prefix\u003E\u003CContainers\u003E\u003CContainer\u003E\u003CName\u003Eretryfa982eb9\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EThu, 11 Aug 2022 23:02:56 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8DA7BEDA0C94B14\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003CImmutableStorageWithVersioningEnabled\u003Efalse\u003C/ImmutableStorageWithVersioningEnabled\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003C/Containers\u003E\u003CNextMarker /\u003E\u003C/EnumerationResults\u003E" + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/?comp=list\u0026prefix=retry\u0026include=", + "RequestMethod": "GET", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:02:56 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 200, + "ResponseHeaders": { + "Content-Type": "application/xml", + "Date": "Thu, 11 Aug 2022 23:03:01 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "Transfer-Encoding": "chunked", + "Vary": "Origin", + "x-ms-version": "2021-08-06" + }, + "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CEnumerationResults ServiceEndpoint=\u0022https://storagename.blob.core.windows.net/\u0022\u003E\u003CPrefix\u003Eretry\u003C/Prefix\u003E\u003CContainers\u003E\u003CContainer\u003E\u003CName\u003Eretryfa982eb9\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EThu, 11 Aug 2022 23:02:56 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8DA7BEDA0C94B14\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003CImmutableStorageWithVersioningEnabled\u003Efalse\u003C/ImmutableStorageWithVersioningEnabled\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003C/Containers\u003E\u003CNextMarker /\u003E\u003C/EnumerationResults\u003E" + }, + { + "RequestUri": "https://storagename.blob.core.windows.net/retryfa982eb9?restype=container", + "RequestMethod": "DELETE", + "RequestHeaders": { + "Accept": "application/xml", + "Accept-Encoding": "gzip, deflate", + "Content-Length": "0", + "User-Agent": "azsdk-python-storage-blob/12.14.0b1 Python/3.10.2 (Windows-10-10.0.19044-SP0)", + "x-ms-date": "Thu, 11 Aug 2022 23:03:01 GMT", + "x-ms-version": "2021-08-06" + }, + "RequestBody": null, + "StatusCode": 202, + "ResponseHeaders": { + "Content-Length": "0", + "Date": "Thu, 11 Aug 2022 23:03:01 GMT", + "Server": [ + "Windows-Azure-Blob/1.0", + "Microsoft-HTTPAPI/2.0" + ], + "x-ms-version": "2021-08-06" + }, + "ResponseBody": null + } + ], + "Variables": {} +} diff --git a/sdk/storage/azure-storage-blob/tests/test_retry.py b/sdk/storage/azure-storage-blob/tests/test_retry.py index b3738b144ca0..c3bf5429ce43 100644 --- a/sdk/storage/azure-storage-blob/tests/test_retry.py +++ b/sdk/storage/azure-storage-blob/tests/test_retry.py @@ -3,36 +3,31 @@ # Licensed under the MIT License. See License.txt in the project root for # license information. # -------------------------------------------------------------------------- +import pytest from unittest import mock from functools import wraps -import pytest from azure.core.exceptions import ( - HttpResponseError, - ResourceExistsError, AzureError, ClientAuthenticationError, - ServiceResponseError -) -from azure.core.pipeline.transport import( - RequestsTransport + HttpResponseError, + ResourceExistsError ) -from devtools_testutils import ResourceGroupPreparer, StorageAccountPreparer, RetryCounter, ResponseCallback, \ - recorded_by_proxy +from azure.core.pipeline.transport import RequestsTransport from azure.storage.blob import ( + BlobClient, BlobServiceClient, ContainerClient, - BlobClient, - LocationMode, - LinearRetry, ExponentialRetry, + LinearRetry, + LocationMode ) from requests import Response from requests.exceptions import ContentDecodingError, ChunkedEncodingError -from azure.core.exceptions import DecodeError +from devtools_testutils import RetryCounter, ResponseCallback, recorded_by_proxy +from devtools_testutils.storage import StorageRecordedTestCase from settings.testcase import BlobPreparer -from devtools_testutils.storage import StorageTestCase, StorageRecordedTestCase class RetryRequestTransport(RequestsTransport): diff --git a/sdk/storage/azure-storage-blob/tests/test_retry_async.py b/sdk/storage/azure-storage-blob/tests/test_retry_async.py index ef88047a6a3e..cc9d96b6f964 100644 --- a/sdk/storage/azure-storage-blob/tests/test_retry_async.py +++ b/sdk/storage/azure-storage-blob/tests/test_retry_async.py @@ -5,45 +5,26 @@ # -------------------------------------------------------------------------- import asyncio import functools -from unittest import mock import pytest +from unittest import mock from azure.core.exceptions import ( - HttpResponseError, - IncompleteReadError, - ResourceExistsError, AzureError, ClientAuthenticationError, + HttpResponseError, + ResourceExistsError ) - -from azure.core.pipeline.transport import AsyncHttpResponse, AioHttpTransportResponse, AioHttpTransport -from multidict import CIMultiDict, CIMultiDictProxy - +from azure.core.pipeline.transport import AioHttpTransport from azure.storage.blob import LocationMode -from azure.storage.blob._shared.policies_async import LinearRetry, ExponentialRetry -from azure.storage.blob.aio import ( - BlobServiceClient, - ContainerClient, - BlobClient, -) - -from settings.testcase import BlobPreparer -from devtools_testutils import ResourceGroupPreparer, StorageAccountPreparer, RetryCounter, ResponseCallback -from devtools_testutils.storage.aio import AsyncStorageTestCase +from azure.storage.blob._shared.policies_async import ExponentialRetry, LinearRetry +from azure.storage.blob.aio import BlobServiceClient from aiohttp.client_exceptions import ClientPayloadError from aiohttp.streams import StreamReader -from aiohttp.client import ClientResponse - -class AiohttpTestTransport(AioHttpTransport): - """Workaround to vcrpy bug: https://github.com/kevin1024/vcrpy/pull/461 - """ - async def send(self, request, **config): - response = await super(AiohttpTestTransport, self).send(request, **config) - if not isinstance(response.headers, CIMultiDictProxy): - response.headers = CIMultiDictProxy(CIMultiDict(response.internal_response.headers)) - response.content_type = response.headers.get("content-type") - return response +from devtools_testutils import ResponseCallback, RetryCounter +from devtools_testutils.aio import recorded_by_proxy_async +from devtools_testutils.storage.aio import AsyncStorageRecordedTestCase +from settings.testcase import BlobPreparer class AiohttpRetryTestTransport(AioHttpTransport): """Mock transport for testing retry @@ -59,7 +40,7 @@ async def send(self, request, **config): # --Test Class ----------------------------------------------------------------- -class StorageRetryTestAsync(AsyncStorageTestCase): +class TestStorageRetryAsync(AsyncStorageRecordedTestCase): def _create_storage_service(self, service_class, account, key, connection_string=None, **kwargs): if connection_string: @@ -70,13 +51,14 @@ def _create_storage_service(self, service_class, account, key, connection_string # --Test Cases -------------------------------------------- @BlobPreparer() + @recorded_by_proxy_async async def test_retry_on_server_error(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") # Arrange container_name = self.get_resource_name('utcontainer') - service = self._create_storage_service(BlobServiceClient, storage_account_name, storage_account_key, transport=AiohttpTestTransport()) + service = self._create_storage_service(BlobServiceClient, storage_account_name, storage_account_key) # Force the create call to 'timeout' with a 408 callback = ResponseCallback(status=201, new_status=500).override_status @@ -93,6 +75,7 @@ async def test_retry_on_server_error(self, **kwargs): # Assert @BlobPreparer() + @recorded_by_proxy_async async def test_retry_on_timeout(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -101,7 +84,7 @@ async def test_retry_on_timeout(self, **kwargs): container_name = self.get_resource_name('utcontainer') retry = ExponentialRetry(initial_backoff=1, increment_base=2) service = self._create_storage_service( - BlobServiceClient, storage_account_name, storage_account_key, retry_policy=retry, transport=AiohttpTestTransport()) + BlobServiceClient, storage_account_name, storage_account_key, retry_policy=retry) callback = ResponseCallback(status=201, new_status=408).override_status @@ -117,6 +100,7 @@ async def test_retry_on_timeout(self, **kwargs): # Assert @BlobPreparer() + @recorded_by_proxy_async async def test_retry_callback_and_retry_context(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -125,7 +109,7 @@ async def test_retry_callback_and_retry_context(self, **kwargs): container_name = self.get_resource_name('utcontainer') retry = LinearRetry(backoff=1) service = self._create_storage_service( - BlobServiceClient, storage_account_name, storage_account_key, retry_policy=retry, transport=AiohttpTestTransport()) + BlobServiceClient, storage_account_name, storage_account_key, retry_policy=retry) # Force the create call to 'timeout' with a 408 callback = ResponseCallback(status=201, new_status=408).override_status @@ -178,16 +162,14 @@ async def test_retry_on_socket_timeout(self, **kwargs): # 3 retries + 1 original == 4 assert retry_transport.count == 4 # This call should succeed on the server side, but fail on the client side due to socket timeout - self.assertTrue( - 'Timeout on reading data from socket' in str(error.exception), - 'Expected socket timeout but got different exception.' - ) + assert 'Timeout on reading data from socket' in str(error.value.args[0]), 'Expected socket timeout but got different exception.' finally: # we must make the timeout normal again to let the delete operation succeed await service.delete_container(container_name, connection_timeout=11, read_timeout=11) @BlobPreparer() + @recorded_by_proxy_async async def test_no_retry(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -195,7 +177,7 @@ async def test_no_retry(self, **kwargs): # Arrange container_name = self.get_resource_name('utcontainer') service = self._create_storage_service( - BlobServiceClient, storage_account_name, storage_account_key, retry_total=0, transport=AiohttpTestTransport()) + BlobServiceClient, storage_account_name, storage_account_key, retry_total=0) # Force the create call to 'timeout' with a 408 @@ -205,13 +187,14 @@ async def test_no_retry(self, **kwargs): try: with pytest.raises(HttpResponseError) as error: await service.create_container(container_name, raw_response_hook=callback) - assert error.exception.response.status_code == 408 - assert error.exception.reason == 'Created' + assert error.value.status_code == 408 + assert error.value.reason == 'Created' finally: await service.delete_container(container_name) @BlobPreparer() + @recorded_by_proxy_async async def test_linear_retry(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -220,7 +203,7 @@ async def test_linear_retry(self, **kwargs): container_name = self.get_resource_name('utcontainer') retry = LinearRetry(backoff=1) service = self._create_storage_service( - BlobServiceClient, storage_account_name, storage_account_key, retry_policy=retry, transport=AiohttpTestTransport()) + BlobServiceClient, storage_account_name, storage_account_key, retry_policy=retry) # Force the create call to 'timeout' with a 408 callback = ResponseCallback(status=201, new_status=408).override_status @@ -237,6 +220,7 @@ async def test_linear_retry(self, **kwargs): # Assert @BlobPreparer() + @recorded_by_proxy_async async def test_exponential_retry(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -245,7 +229,7 @@ async def test_exponential_retry(self, **kwargs): container_name = self.get_resource_name('utcontainer') retry = ExponentialRetry(initial_backoff=1, increment_base=3, retry_total=3) service = self._create_storage_service( - BlobServiceClient, storage_account_name, storage_account_key, retry_policy=retry, transport=AiohttpTestTransport()) + BlobServiceClient, storage_account_name, storage_account_key, retry_policy=retry) try: container = await service.create_container(container_name) @@ -264,7 +248,8 @@ async def test_exponential_retry(self, **kwargs): await service.delete_container(container_name) @BlobPreparer() - def test_exponential_retry_interval(self, **kwargs): + @recorded_by_proxy_async + async def test_exponential_retry_interval(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -302,7 +287,8 @@ def test_exponential_retry_interval(self, **kwargs): assert 25 <= backoff <= 31 @BlobPreparer() - def test_linear_retry_interval(self, **kwargs): + @recorded_by_proxy_async + async def test_linear_retry_interval(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -332,6 +318,7 @@ def test_linear_retry_interval(self, **kwargs): assert 12 <= backoff <= 18 @BlobPreparer() + @recorded_by_proxy_async async def test_invalid_retry(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -340,7 +327,7 @@ async def test_invalid_retry(self, **kwargs): container_name = self.get_resource_name('utcontainer') retry = ExponentialRetry(initial_backoff=1, increment_base=2) service = self._create_storage_service( - BlobServiceClient, storage_account_name, storage_account_key, retry_policy=retry, transport=AiohttpTestTransport()) + BlobServiceClient, storage_account_name, storage_account_key, retry_policy=retry) # Force the create call to fail by pretending it's a teapot callback = ResponseCallback(status=201, new_status=418).override_status @@ -349,12 +336,13 @@ async def test_invalid_retry(self, **kwargs): try: with pytest.raises(HttpResponseError) as error: await service.create_container(container_name, raw_response_hook=callback) - assert error.exception.response.status_code == 418 - assert error.exception.reason == 'Created' + assert error.value.status_code == 418 + assert error.value.reason == 'Created' finally: await service.delete_container(container_name) @BlobPreparer() + @recorded_by_proxy_async async def test_retry_with_deserialization(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -363,7 +351,7 @@ async def test_retry_with_deserialization(self, **kwargs): container_name = self.get_resource_name('retry') retry = ExponentialRetry(initial_backoff=1, increment_base=2) service = self._create_storage_service( - BlobServiceClient, storage_account_name, storage_account_key, retry_policy=retry, transport=AiohttpTestTransport()) + BlobServiceClient, storage_account_name, storage_account_key, retry_policy=retry) try: created = await service.create_container(container_name) @@ -381,6 +369,7 @@ async def test_retry_with_deserialization(self, **kwargs): await service.delete_container(container_name) @BlobPreparer() + @recorded_by_proxy_async async def test_retry_secondary(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -479,6 +468,7 @@ def retry_callback(retry_count=None, location_mode=None, **kwargs): assert retry_callback.called @BlobPreparer() + @recorded_by_proxy_async async def test_invalid_account_key(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") storage_account_key = kwargs.pop("storage_account_key") @@ -487,7 +477,7 @@ async def test_invalid_account_key(self, **kwargs): container_name = self.get_resource_name('utcontainer') retry = ExponentialRetry(initial_backoff=1, increment_base=3, retry_total=3) service = self._create_storage_service( - BlobServiceClient, storage_account_name, storage_account_key, retry_policy=retry, transport=AiohttpTestTransport()) + BlobServiceClient, storage_account_name, storage_account_key, retry_policy=retry) service.credential.account_name = "dummy_account_name" service.credential.account_key = "dummy_account_key"