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..ccd610b29f12
--- /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 22:43:17 GMT",
+ "x-ms-version": "2021-08-06"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "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"
+ ],
+ "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 22:43:18 GMT",
+ "x-ms-version": "2021-08-06"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Thu, 11 Aug 2022 22:43:17 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..edbaef38b94b
--- /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 22:42:40 GMT",
+ "x-ms-version": "2021-08-06"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "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"
+ ],
+ "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 22:42:41 GMT",
+ "x-ms-version": "2021-08-06"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Thu, 11 Aug 2022 22:42:41 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/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.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/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..c3bf5429ce43 100644
--- a/sdk/storage/azure-storage-blob/tests/test_retry.py
+++ b/sdk/storage/azure-storage-blob/tests/test_retry.py
@@ -3,35 +3,32 @@
# 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
+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
+
class RetryRequestTransport(RequestsTransport):
"""Transport to test retry"""
@@ -45,7 +42,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 +53,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 +69,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 +77,11 @@ 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):
+ @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")
+
# Arrange
container_name = self.get_resource_name('utcontainer')
retry = ExponentialRetry(initial_backoff=1, increment_base=2)
@@ -89,7 +94,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 +102,11 @@ 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):
+ @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")
+
# Arrange
container_name = self.get_resource_name('utcontainer')
retry = LinearRetry(backoff=1)
@@ -108,15 +117,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 +134,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 +158,24 @@ 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.value.args[0]), '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):
+ @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")
+
# Arrange
container_name = self.get_resource_name('utcontainer')
service = self._create_storage_service(
@@ -171,16 +187,20 @@ 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.value.status_code == 408
+ assert error.value.reason == 'Created'
finally:
service.delete_container(container_name)
@BlobPreparer()
- def test_linear_retry(self, storage_account_name, storage_account_key):
+ @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")
+
# Arrange
container_name = self.get_resource_name('utcontainer')
retry = LinearRetry(backoff=1)
@@ -194,7 +214,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 +222,11 @@ def test_linear_retry(self, storage_account_name, storage_account_key):
# Assert
@BlobPreparer()
- def test_exponential_retry(self, storage_account_name, storage_account_key):
+ @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")
+
# Arrange
container_name = self.get_resource_name('utcontainer')
retry = ExponentialRetry(initial_backoff=1, increment_base=3, retry_total=3)
@@ -216,17 +240,21 @@ 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):
+ @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")
+
# Arrange
retry_policy = ExponentialRetry(initial_backoff=1, increment_base=3, random_jitter_range=3)
context_stub = {}
@@ -237,31 +265,35 @@ 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):
+ @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")
+
# Arrange
context_stub = {}
@@ -271,24 +303,28 @@ 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):
+ @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")
+
# Arrange
container_name = self.get_resource_name('utcontainer')
retry = ExponentialRetry(initial_backoff=1, increment_base=2)
@@ -300,15 +336,19 @@ 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.value.status_code == 418
+ assert error.value.reason == 'Created'
finally:
service.delete_container(container_name)
@BlobPreparer()
- def test_retry_with_deserialization(self, storage_account_name, storage_account_key):
+ @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")
+
# Arrange
container_name = self.get_resource_name('retry')
retry = ExponentialRetry(initial_backoff=1, increment_base=2)
@@ -324,12 +364,16 @@ 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):
+ @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")
+
"""Secondary location test.
This test is special, since in practical term, we don't have time to wait
@@ -388,9 +432,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 +447,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 +469,11 @@ 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):
+ @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")
+
# Arrange
container_name = self.get_resource_name('utcontainer')
retry = ExponentialRetry(initial_backoff=1, increment_base=3, retry_total=3)
@@ -439,12 +487,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 +526,11 @@ def inner(*args, **kwargs):
return inner
@BlobPreparer()
- def test_streaming_retry(self, storage_account_name, storage_account_key):
+ @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")
+
"""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..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,11 +51,14 @@ 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):
+ @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
@@ -83,7 +67,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,13 +75,16 @@ 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):
+ @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")
+
# Arrange
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
@@ -105,7 +92,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,27 +100,30 @@ 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):
+ @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")
+
# Arrange
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
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 +132,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,28 +156,28 @@ 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
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()
- @AsyncStorageTestCase.await_prepared_test
- async def test_no_retry_async(self, storage_account_name, storage_account_key):
+ @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")
+
# 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
@@ -193,22 +185,25 @@ 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.value.status_code == 408
+ assert error.value.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):
+ @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")
+
# Arrange
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
@@ -217,7 +212,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,13 +220,16 @@ 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):
+ @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")
+
# Arrange
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)
@@ -240,17 +238,21 @@ 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):
+ @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")
+
# Arrange
retry_policy = ExponentialRetry(initial_backoff=1, increment_base=3, random_jitter_range=3)
context_stub = {}
@@ -261,31 +263,35 @@ 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):
+ @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")
+
# Arrange
context_stub = {}
@@ -295,51 +301,57 @@ 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):
+ @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")
+
# Arrange
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
# 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.value.status_code == 418
+ assert error.value.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):
+ @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")
+
# Arrange
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)
@@ -352,13 +364,16 @@ 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):
+ @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")
+
"""Secondary location test.
This test is special, since in practical term, we don't have time to wait
@@ -416,9 +431,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 +446,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,13 +468,16 @@ 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):
+ @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")
+
# Arrange
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"
@@ -468,12 +486,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 +503,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)