diff --git a/storage/blob.go b/storage/blob.go index a0c44adf2ab0..dd9eb386cb5a 100644 --- a/storage/blob.go +++ b/storage/blob.go @@ -192,6 +192,9 @@ func (b *Blob) Get(options *GetBlobOptions) (io.ReadCloser, error) { if err := checkRespCode(resp.statusCode, []int{http.StatusOK}); err != nil { return nil, err } + if err := b.writePropoerties(resp.headers); err != nil { + return resp.body, err + } return resp.body, nil } @@ -209,6 +212,9 @@ func (b *Blob) GetRange(options *GetBlobRangeOptions) (io.ReadCloser, error) { if err := checkRespCode(resp.statusCode, []int{http.StatusPartialContent}); err != nil { return nil, err } + if err := b.writePropoerties(resp.headers); err != nil { + return resp.body, err + } return resp.body, nil } @@ -316,9 +322,14 @@ func (b *Blob) GetProperties(options *GetBlobPropertiesOptions) error { if err = checkRespCode(resp.statusCode, []int{http.StatusOK}); err != nil { return err } + return b.writePropoerties(resp.headers) +} + +func (b *Blob) writePropoerties(h http.Header) error { + var err error var contentLength int64 - contentLengthStr := resp.headers.Get("Content-Length") + contentLengthStr := h.Get("Content-Length") if contentLengthStr != "" { contentLength, err = strconv.ParseInt(contentLengthStr, 0, 64) if err != nil { @@ -327,7 +338,7 @@ func (b *Blob) GetProperties(options *GetBlobPropertiesOptions) error { } var sequenceNum int64 - sequenceNumStr := resp.headers.Get("x-ms-blob-sequence-number") + sequenceNumStr := h.Get("x-ms-blob-sequence-number") if sequenceNumStr != "" { sequenceNum, err = strconv.ParseInt(sequenceNumStr, 0, 64) if err != nil { @@ -335,36 +346,38 @@ func (b *Blob) GetProperties(options *GetBlobPropertiesOptions) error { } } - lastModified, err := getTimeFromHeaders(resp.headers, "Last-Modified") + lastModified, err := getTimeFromHeaders(h, "Last-Modified") if err != nil { return err } - copyCompletionTime, err := getTimeFromHeaders(resp.headers, "x-ms-copy-completion-time") + copyCompletionTime, err := getTimeFromHeaders(h, "x-ms-copy-completion-time") if err != nil { return err } b.Properties = BlobProperties{ LastModified: TimeRFC1123(*lastModified), - Etag: resp.headers.Get("Etag"), - ContentMD5: resp.headers.Get("Content-MD5"), + Etag: h.Get("Etag"), + ContentMD5: h.Get("Content-MD5"), ContentLength: contentLength, - ContentEncoding: resp.headers.Get("Content-Encoding"), - ContentType: resp.headers.Get("Content-Type"), - CacheControl: resp.headers.Get("Cache-Control"), - ContentLanguage: resp.headers.Get("Content-Language"), + ContentEncoding: h.Get("Content-Encoding"), + ContentType: h.Get("Content-Type"), + ContentDisposition: h.Get("Content-Disposition"), + CacheControl: h.Get("Cache-Control"), + ContentLanguage: h.Get("Content-Language"), SequenceNumber: sequenceNum, CopyCompletionTime: TimeRFC1123(*copyCompletionTime), - CopyStatusDescription: resp.headers.Get("x-ms-copy-status-description"), - CopyID: resp.headers.Get("x-ms-copy-id"), - CopyProgress: resp.headers.Get("x-ms-copy-progress"), - CopySource: resp.headers.Get("x-ms-copy-source"), - CopyStatus: resp.headers.Get("x-ms-copy-status"), - BlobType: BlobType(resp.headers.Get("x-ms-blob-type")), - LeaseStatus: resp.headers.Get("x-ms-lease-status"), - LeaseState: resp.headers.Get("x-ms-lease-state"), - } + CopyStatusDescription: h.Get("x-ms-copy-status-description"), + CopyID: h.Get("x-ms-copy-id"), + CopyProgress: h.Get("x-ms-copy-progress"), + CopySource: h.Get("x-ms-copy-source"), + CopyStatus: h.Get("x-ms-copy-status"), + BlobType: BlobType(h.Get("x-ms-blob-type")), + LeaseStatus: h.Get("x-ms-lease-status"), + LeaseState: h.Get("x-ms-lease-state"), + } + b.writeMetadata(h) return nil } @@ -506,8 +519,13 @@ func (b *Blob) GetMetadata(options *GetBlobMetadataOptions) error { return err } + b.writeMetadata(resp.headers) + return nil +} + +func (b *Blob) writeMetadata(h http.Header) { metadata := make(map[string]string) - for k, v := range resp.headers { + for k, v := range h { // Can't trust CanonicalHeaderKey() to munge case // reliably. "_" is allowed in identifiers: // https://msdn.microsoft.com/en-us/library/azure/dd179414.aspx @@ -527,7 +545,6 @@ func (b *Blob) GetMetadata(options *GetBlobMetadataOptions) error { } b.Metadata = BlobMetadata(metadata) - return nil } // DeleteBlobOptions includes the options for a delete blob operation diff --git a/storage/blob_test.go b/storage/blob_test.go index 13055d9942a5..a70b518bf4fe 100644 --- a/storage/blob_test.go +++ b/storage/blob_test.go @@ -254,10 +254,11 @@ func (s *StorageBlobSuite) TestSetMetadataWithExtraHeaders(c *chk.C) { c.Assert(b.putSingleBlockBlob([]byte("Hello!")), chk.IsNil) - b.Metadata = BlobMetadata{ + meta := BlobMetadata{ "lol": "rofl", "rofl_baz": "waz qux", } + b.Metadata = meta options := SetBlobMetadataOptions{ IfMatch: "incorrect-etag", @@ -272,6 +273,7 @@ func (s *StorageBlobSuite) TestSetMetadataWithExtraHeaders(c *chk.C) { // Set with matching If-Match in extra headers should succeed options.IfMatch = b.Properties.Etag + b.Metadata = meta err = b.SetMetadata(&options) c.Assert(err, chk.IsNil) } @@ -452,6 +454,9 @@ func (s *StorageBlobSuite) TestGetBlobRange(c *chk.C) { str := string(blobBody) c.Assert(str, chk.Equals, r.expected) + + // Was content lenght properly updated...? + c.Assert(b.Properties.ContentLength, chk.Equals, int64(len(r.expected))) } } diff --git a/recordings/AppendBlobSuite/TestPutAppendBlob.yaml b/storage/recordings/AppendBlobSuite/TestPutAppendBlob.yaml similarity index 100% rename from recordings/AppendBlobSuite/TestPutAppendBlob.yaml rename to storage/recordings/AppendBlobSuite/TestPutAppendBlob.yaml diff --git a/recordings/AppendBlobSuite/TestPutAppendBlobAppendBlocks.yaml b/storage/recordings/AppendBlobSuite/TestPutAppendBlobAppendBlocks.yaml similarity index 100% rename from recordings/AppendBlobSuite/TestPutAppendBlobAppendBlocks.yaml rename to storage/recordings/AppendBlobSuite/TestPutAppendBlobAppendBlocks.yaml diff --git a/recordings/AuthorizationSuite/Test_allSharedKeys.yaml b/storage/recordings/AuthorizationSuite/Test_allSharedKeys.yaml similarity index 100% rename from recordings/AuthorizationSuite/Test_allSharedKeys.yaml rename to storage/recordings/AuthorizationSuite/Test_allSharedKeys.yaml diff --git a/recordings/BlobSASURISuite/TestBlobSASURICorrectness.yaml b/storage/recordings/BlobSASURISuite/TestBlobSASURICorrectness.yaml similarity index 100% rename from recordings/BlobSASURISuite/TestBlobSASURICorrectness.yaml rename to storage/recordings/BlobSASURISuite/TestBlobSASURICorrectness.yaml diff --git a/recordings/BlockBlobSuite/TestCreateBlockBlob.yaml b/storage/recordings/BlockBlobSuite/TestCreateBlockBlob.yaml similarity index 100% rename from recordings/BlockBlobSuite/TestCreateBlockBlob.yaml rename to storage/recordings/BlockBlobSuite/TestCreateBlockBlob.yaml diff --git a/recordings/BlockBlobSuite/TestCreateBlockBlobFromReader.yaml b/storage/recordings/BlockBlobSuite/TestCreateBlockBlobFromReader.yaml similarity index 100% rename from recordings/BlockBlobSuite/TestCreateBlockBlobFromReader.yaml rename to storage/recordings/BlockBlobSuite/TestCreateBlockBlobFromReader.yaml diff --git a/recordings/BlockBlobSuite/TestCreateBlockBlobFromReaderWithShortData.yaml b/storage/recordings/BlockBlobSuite/TestCreateBlockBlobFromReaderWithShortData.yaml similarity index 100% rename from recordings/BlockBlobSuite/TestCreateBlockBlobFromReaderWithShortData.yaml rename to storage/recordings/BlockBlobSuite/TestCreateBlockBlobFromReaderWithShortData.yaml diff --git a/recordings/BlockBlobSuite/TestGetBlockList_PutBlockList.yaml b/storage/recordings/BlockBlobSuite/TestGetBlockList_PutBlockList.yaml similarity index 100% rename from recordings/BlockBlobSuite/TestGetBlockList_PutBlockList.yaml rename to storage/recordings/BlockBlobSuite/TestGetBlockList_PutBlockList.yaml diff --git a/recordings/BlockBlobSuite/TestPutBlock.yaml b/storage/recordings/BlockBlobSuite/TestPutBlock.yaml similarity index 100% rename from recordings/BlockBlobSuite/TestPutBlock.yaml rename to storage/recordings/BlockBlobSuite/TestPutBlock.yaml diff --git a/recordings/BlockBlobSuite/TestPutEmptyBlockBlob.yaml b/storage/recordings/BlockBlobSuite/TestPutEmptyBlockBlob.yaml similarity index 100% rename from recordings/BlockBlobSuite/TestPutEmptyBlockBlob.yaml rename to storage/recordings/BlockBlobSuite/TestPutEmptyBlockBlob.yaml diff --git a/recordings/ContainerSuite/TestContainerExists.yaml b/storage/recordings/ContainerSuite/TestContainerExists.yaml similarity index 100% rename from recordings/ContainerSuite/TestContainerExists.yaml rename to storage/recordings/ContainerSuite/TestContainerExists.yaml diff --git a/recordings/ContainerSuite/TestCreateContainerDeleteContainer.yaml b/storage/recordings/ContainerSuite/TestCreateContainerDeleteContainer.yaml similarity index 100% rename from recordings/ContainerSuite/TestCreateContainerDeleteContainer.yaml rename to storage/recordings/ContainerSuite/TestCreateContainerDeleteContainer.yaml diff --git a/recordings/ContainerSuite/TestCreateContainerIfExists.yaml b/storage/recordings/ContainerSuite/TestCreateContainerIfExists.yaml similarity index 100% rename from recordings/ContainerSuite/TestCreateContainerIfExists.yaml rename to storage/recordings/ContainerSuite/TestCreateContainerIfExists.yaml diff --git a/recordings/ContainerSuite/TestCreateContainerIfNotExists.yaml b/storage/recordings/ContainerSuite/TestCreateContainerIfNotExists.yaml similarity index 100% rename from recordings/ContainerSuite/TestCreateContainerIfNotExists.yaml rename to storage/recordings/ContainerSuite/TestCreateContainerIfNotExists.yaml diff --git a/recordings/ContainerSuite/TestDeleteContainerIfExists.yaml b/storage/recordings/ContainerSuite/TestDeleteContainerIfExists.yaml similarity index 100% rename from recordings/ContainerSuite/TestDeleteContainerIfExists.yaml rename to storage/recordings/ContainerSuite/TestDeleteContainerIfExists.yaml diff --git a/recordings/ContainerSuite/TestListBlobsPagination.yaml b/storage/recordings/ContainerSuite/TestListBlobsPagination.yaml similarity index 100% rename from recordings/ContainerSuite/TestListBlobsPagination.yaml rename to storage/recordings/ContainerSuite/TestListBlobsPagination.yaml diff --git a/recordings/ContainerSuite/TestListBlobsTraversal.yaml b/storage/recordings/ContainerSuite/TestListBlobsTraversal.yaml similarity index 100% rename from recordings/ContainerSuite/TestListBlobsTraversal.yaml rename to storage/recordings/ContainerSuite/TestListBlobsTraversal.yaml diff --git a/recordings/ContainerSuite/TestListBlobsWithMetadata.yaml b/storage/recordings/ContainerSuite/TestListBlobsWithMetadata.yaml similarity index 100% rename from recordings/ContainerSuite/TestListBlobsWithMetadata.yaml rename to storage/recordings/ContainerSuite/TestListBlobsWithMetadata.yaml diff --git a/recordings/ContainerSuite/TestListContainersPagination.yaml b/storage/recordings/ContainerSuite/TestListContainersPagination.yaml similarity index 100% rename from recordings/ContainerSuite/TestListContainersPagination.yaml rename to storage/recordings/ContainerSuite/TestListContainersPagination.yaml diff --git a/recordings/ContainerSuite/TestSetContainerPermissionsOnlySuccessfully.yaml b/storage/recordings/ContainerSuite/TestSetContainerPermissionsOnlySuccessfully.yaml similarity index 100% rename from recordings/ContainerSuite/TestSetContainerPermissionsOnlySuccessfully.yaml rename to storage/recordings/ContainerSuite/TestSetContainerPermissionsOnlySuccessfully.yaml diff --git a/recordings/ContainerSuite/TestSetContainerPermissionsSuccessfully.yaml b/storage/recordings/ContainerSuite/TestSetContainerPermissionsSuccessfully.yaml similarity index 100% rename from recordings/ContainerSuite/TestSetContainerPermissionsSuccessfully.yaml rename to storage/recordings/ContainerSuite/TestSetContainerPermissionsSuccessfully.yaml diff --git a/recordings/ContainerSuite/TestSetContainerPermissionsWithTimeoutSuccessfully.yaml b/storage/recordings/ContainerSuite/TestSetContainerPermissionsWithTimeoutSuccessfully.yaml similarity index 100% rename from recordings/ContainerSuite/TestSetContainerPermissionsWithTimeoutSuccessfully.yaml rename to storage/recordings/ContainerSuite/TestSetContainerPermissionsWithTimeoutSuccessfully.yaml diff --git a/recordings/ContainerSuite/TestSetThenGetContainerPermissionsOnlySuccessfully.yaml b/storage/recordings/ContainerSuite/TestSetThenGetContainerPermissionsOnlySuccessfully.yaml similarity index 100% rename from recordings/ContainerSuite/TestSetThenGetContainerPermissionsOnlySuccessfully.yaml rename to storage/recordings/ContainerSuite/TestSetThenGetContainerPermissionsOnlySuccessfully.yaml diff --git a/recordings/ContainerSuite/TestSetThenGetContainerPermissionsSuccessfully.yaml b/storage/recordings/ContainerSuite/TestSetThenGetContainerPermissionsSuccessfully.yaml similarity index 100% rename from recordings/ContainerSuite/TestSetThenGetContainerPermissionsSuccessfully.yaml rename to storage/recordings/ContainerSuite/TestSetThenGetContainerPermissionsSuccessfully.yaml diff --git a/recordings/CopyBlobSuite/TestAbortBlobCopy.yaml b/storage/recordings/CopyBlobSuite/TestAbortBlobCopy.yaml similarity index 100% rename from recordings/CopyBlobSuite/TestAbortBlobCopy.yaml rename to storage/recordings/CopyBlobSuite/TestAbortBlobCopy.yaml diff --git a/recordings/CopyBlobSuite/TestBlobCopy.yaml b/storage/recordings/CopyBlobSuite/TestBlobCopy.yaml similarity index 100% rename from recordings/CopyBlobSuite/TestBlobCopy.yaml rename to storage/recordings/CopyBlobSuite/TestBlobCopy.yaml diff --git a/recordings/CopyBlobSuite/TestIncrementalCopyBlobNoTimeout.yaml b/storage/recordings/CopyBlobSuite/TestIncrementalCopyBlobNoTimeout.yaml similarity index 100% rename from recordings/CopyBlobSuite/TestIncrementalCopyBlobNoTimeout.yaml rename to storage/recordings/CopyBlobSuite/TestIncrementalCopyBlobNoTimeout.yaml diff --git a/recordings/CopyBlobSuite/TestIncrementalCopyBlobWithTimeout.yaml b/storage/recordings/CopyBlobSuite/TestIncrementalCopyBlobWithTimeout.yaml similarity index 100% rename from recordings/CopyBlobSuite/TestIncrementalCopyBlobWithTimeout.yaml rename to storage/recordings/CopyBlobSuite/TestIncrementalCopyBlobWithTimeout.yaml diff --git a/recordings/CopyBlobSuite/TestStartBlobCopy.yaml b/storage/recordings/CopyBlobSuite/TestStartBlobCopy.yaml similarity index 100% rename from recordings/CopyBlobSuite/TestStartBlobCopy.yaml rename to storage/recordings/CopyBlobSuite/TestStartBlobCopy.yaml diff --git a/recordings/LeaseBlobSuite/TestAcquireLeaseWithBadProposedLeaseID.yaml b/storage/recordings/LeaseBlobSuite/TestAcquireLeaseWithBadProposedLeaseID.yaml similarity index 100% rename from recordings/LeaseBlobSuite/TestAcquireLeaseWithBadProposedLeaseID.yaml rename to storage/recordings/LeaseBlobSuite/TestAcquireLeaseWithBadProposedLeaseID.yaml diff --git a/recordings/LeaseBlobSuite/TestAcquireLeaseWithNoProposedLeaseID.yaml b/storage/recordings/LeaseBlobSuite/TestAcquireLeaseWithNoProposedLeaseID.yaml similarity index 100% rename from recordings/LeaseBlobSuite/TestAcquireLeaseWithNoProposedLeaseID.yaml rename to storage/recordings/LeaseBlobSuite/TestAcquireLeaseWithNoProposedLeaseID.yaml diff --git a/recordings/LeaseBlobSuite/TestAcquireLeaseWithProposedLeaseID.yaml b/storage/recordings/LeaseBlobSuite/TestAcquireLeaseWithProposedLeaseID.yaml similarity index 100% rename from recordings/LeaseBlobSuite/TestAcquireLeaseWithProposedLeaseID.yaml rename to storage/recordings/LeaseBlobSuite/TestAcquireLeaseWithProposedLeaseID.yaml diff --git a/recordings/LeaseBlobSuite/TestBreakLeaseSuccessful.yaml b/storage/recordings/LeaseBlobSuite/TestBreakLeaseSuccessful.yaml similarity index 100% rename from recordings/LeaseBlobSuite/TestBreakLeaseSuccessful.yaml rename to storage/recordings/LeaseBlobSuite/TestBreakLeaseSuccessful.yaml diff --git a/recordings/LeaseBlobSuite/TestChangeLeaseNotSuccessfulbadProposedLeaseID.yaml b/storage/recordings/LeaseBlobSuite/TestChangeLeaseNotSuccessfulbadProposedLeaseID.yaml similarity index 100% rename from recordings/LeaseBlobSuite/TestChangeLeaseNotSuccessfulbadProposedLeaseID.yaml rename to storage/recordings/LeaseBlobSuite/TestChangeLeaseNotSuccessfulbadProposedLeaseID.yaml diff --git a/recordings/LeaseBlobSuite/TestChangeLeaseSuccessful.yaml b/storage/recordings/LeaseBlobSuite/TestChangeLeaseSuccessful.yaml similarity index 100% rename from recordings/LeaseBlobSuite/TestChangeLeaseSuccessful.yaml rename to storage/recordings/LeaseBlobSuite/TestChangeLeaseSuccessful.yaml diff --git a/recordings/LeaseBlobSuite/TestReleaseLeaseNotSuccessfulBadLeaseID.yaml b/storage/recordings/LeaseBlobSuite/TestReleaseLeaseNotSuccessfulBadLeaseID.yaml similarity index 100% rename from recordings/LeaseBlobSuite/TestReleaseLeaseNotSuccessfulBadLeaseID.yaml rename to storage/recordings/LeaseBlobSuite/TestReleaseLeaseNotSuccessfulBadLeaseID.yaml diff --git a/recordings/LeaseBlobSuite/TestReleaseLeaseSuccessful.yaml b/storage/recordings/LeaseBlobSuite/TestReleaseLeaseSuccessful.yaml similarity index 100% rename from recordings/LeaseBlobSuite/TestReleaseLeaseSuccessful.yaml rename to storage/recordings/LeaseBlobSuite/TestReleaseLeaseSuccessful.yaml diff --git a/recordings/LeaseBlobSuite/TestRenewLeaseAgainstNoCurrentLease.yaml b/storage/recordings/LeaseBlobSuite/TestRenewLeaseAgainstNoCurrentLease.yaml similarity index 100% rename from recordings/LeaseBlobSuite/TestRenewLeaseAgainstNoCurrentLease.yaml rename to storage/recordings/LeaseBlobSuite/TestRenewLeaseAgainstNoCurrentLease.yaml diff --git a/recordings/LeaseBlobSuite/TestRenewLeaseSuccessful.yaml b/storage/recordings/LeaseBlobSuite/TestRenewLeaseSuccessful.yaml similarity index 100% rename from recordings/LeaseBlobSuite/TestRenewLeaseSuccessful.yaml rename to storage/recordings/LeaseBlobSuite/TestRenewLeaseSuccessful.yaml diff --git a/recordings/PageBlobSuite/TestGetPageRanges.yaml b/storage/recordings/PageBlobSuite/TestGetPageRanges.yaml similarity index 100% rename from recordings/PageBlobSuite/TestGetPageRanges.yaml rename to storage/recordings/PageBlobSuite/TestGetPageRanges.yaml diff --git a/recordings/PageBlobSuite/TestPutPageBlob.yaml b/storage/recordings/PageBlobSuite/TestPutPageBlob.yaml similarity index 100% rename from recordings/PageBlobSuite/TestPutPageBlob.yaml rename to storage/recordings/PageBlobSuite/TestPutPageBlob.yaml diff --git a/recordings/PageBlobSuite/TestPutPagesClear.yaml b/storage/recordings/PageBlobSuite/TestPutPagesClear.yaml similarity index 100% rename from recordings/PageBlobSuite/TestPutPagesClear.yaml rename to storage/recordings/PageBlobSuite/TestPutPagesClear.yaml diff --git a/recordings/PageBlobSuite/TestPutPagesUpdate.yaml b/storage/recordings/PageBlobSuite/TestPutPagesUpdate.yaml similarity index 100% rename from recordings/PageBlobSuite/TestPutPagesUpdate.yaml rename to storage/recordings/PageBlobSuite/TestPutPagesUpdate.yaml diff --git a/recordings/StorageBlobSuite/TestBlobExists.yaml b/storage/recordings/StorageBlobSuite/TestBlobExists.yaml similarity index 100% rename from recordings/StorageBlobSuite/TestBlobExists.yaml rename to storage/recordings/StorageBlobSuite/TestBlobExists.yaml diff --git a/recordings/StorageBlobSuite/TestDeleteBlobIfExists.yaml b/storage/recordings/StorageBlobSuite/TestDeleteBlobIfExists.yaml similarity index 100% rename from recordings/StorageBlobSuite/TestDeleteBlobIfExists.yaml rename to storage/recordings/StorageBlobSuite/TestDeleteBlobIfExists.yaml diff --git a/recordings/StorageBlobSuite/TestDeleteBlobWithConditions.yaml b/storage/recordings/StorageBlobSuite/TestDeleteBlobWithConditions.yaml similarity index 100% rename from recordings/StorageBlobSuite/TestDeleteBlobWithConditions.yaml rename to storage/recordings/StorageBlobSuite/TestDeleteBlobWithConditions.yaml diff --git a/recordings/StorageBlobSuite/TestGetAndSetBlobMetadata.yaml b/storage/recordings/StorageBlobSuite/TestGetAndSetBlobMetadata.yaml similarity index 100% rename from recordings/StorageBlobSuite/TestGetAndSetBlobMetadata.yaml rename to storage/recordings/StorageBlobSuite/TestGetAndSetBlobMetadata.yaml diff --git a/recordings/StorageBlobSuite/TestGetBlobProperties.yaml b/storage/recordings/StorageBlobSuite/TestGetBlobProperties.yaml similarity index 100% rename from recordings/StorageBlobSuite/TestGetBlobProperties.yaml rename to storage/recordings/StorageBlobSuite/TestGetBlobProperties.yaml diff --git a/recordings/StorageBlobSuite/TestGetBlobRange.yaml b/storage/recordings/StorageBlobSuite/TestGetBlobRange.yaml similarity index 100% rename from recordings/StorageBlobSuite/TestGetBlobRange.yaml rename to storage/recordings/StorageBlobSuite/TestGetBlobRange.yaml diff --git a/recordings/StorageBlobSuite/TestMetadataCaseMunging.yaml b/storage/recordings/StorageBlobSuite/TestMetadataCaseMunging.yaml similarity index 100% rename from recordings/StorageBlobSuite/TestMetadataCaseMunging.yaml rename to storage/recordings/StorageBlobSuite/TestMetadataCaseMunging.yaml diff --git a/recordings/StorageBlobSuite/TestPutAppendBlobSpecialChars.yaml b/storage/recordings/StorageBlobSuite/TestPutAppendBlobSpecialChars.yaml similarity index 100% rename from recordings/StorageBlobSuite/TestPutAppendBlobSpecialChars.yaml rename to storage/recordings/StorageBlobSuite/TestPutAppendBlobSpecialChars.yaml diff --git a/recordings/StorageBlobSuite/TestSetBlobProperties.yaml b/storage/recordings/StorageBlobSuite/TestSetBlobProperties.yaml similarity index 100% rename from recordings/StorageBlobSuite/TestSetBlobProperties.yaml rename to storage/recordings/StorageBlobSuite/TestSetBlobProperties.yaml diff --git a/recordings/StorageBlobSuite/TestSetMetadataWithExtraHeaders.yaml b/storage/recordings/StorageBlobSuite/TestSetMetadataWithExtraHeaders.yaml similarity index 100% rename from recordings/StorageBlobSuite/TestSetMetadataWithExtraHeaders.yaml rename to storage/recordings/StorageBlobSuite/TestSetMetadataWithExtraHeaders.yaml diff --git a/recordings/StorageBlobSuite/TestSnapshotBlob.yaml b/storage/recordings/StorageBlobSuite/TestSnapshotBlob.yaml similarity index 100% rename from recordings/StorageBlobSuite/TestSnapshotBlob.yaml rename to storage/recordings/StorageBlobSuite/TestSnapshotBlob.yaml diff --git a/recordings/StorageBlobSuite/TestSnapshotBlobWithInvalidLease.yaml b/storage/recordings/StorageBlobSuite/TestSnapshotBlobWithInvalidLease.yaml similarity index 100% rename from recordings/StorageBlobSuite/TestSnapshotBlobWithInvalidLease.yaml rename to storage/recordings/StorageBlobSuite/TestSnapshotBlobWithInvalidLease.yaml diff --git a/recordings/StorageBlobSuite/TestSnapshotBlobWithTimeout.yaml b/storage/recordings/StorageBlobSuite/TestSnapshotBlobWithTimeout.yaml similarity index 100% rename from recordings/StorageBlobSuite/TestSnapshotBlobWithTimeout.yaml rename to storage/recordings/StorageBlobSuite/TestSnapshotBlobWithTimeout.yaml diff --git a/recordings/StorageBlobSuite/TestSnapshotBlobWithValidLease.yaml b/storage/recordings/StorageBlobSuite/TestSnapshotBlobWithValidLease.yaml similarity index 100% rename from recordings/StorageBlobSuite/TestSnapshotBlobWithValidLease.yaml rename to storage/recordings/StorageBlobSuite/TestSnapshotBlobWithValidLease.yaml diff --git a/recordings/StorageClientSuite/TestReturnsStorageServiceError.yaml b/storage/recordings/StorageClientSuite/TestReturnsStorageServiceError.yaml similarity index 100% rename from recordings/StorageClientSuite/TestReturnsStorageServiceError.yaml rename to storage/recordings/StorageClientSuite/TestReturnsStorageServiceError.yaml diff --git a/recordings/StorageClientSuite/TestReturnsStorageServiceError_withoutResponseBody.yaml b/storage/recordings/StorageClientSuite/TestReturnsStorageServiceError_withoutResponseBody.yaml similarity index 100% rename from recordings/StorageClientSuite/TestReturnsStorageServiceError_withoutResponseBody.yaml rename to storage/recordings/StorageClientSuite/TestReturnsStorageServiceError_withoutResponseBody.yaml diff --git a/recordings/StorageDirSuite/TestCreateDirectory.yaml b/storage/recordings/StorageDirSuite/TestCreateDirectory.yaml similarity index 100% rename from recordings/StorageDirSuite/TestCreateDirectory.yaml rename to storage/recordings/StorageDirSuite/TestCreateDirectory.yaml diff --git a/recordings/StorageDirSuite/TestCreateDirectoryIfExists.yaml b/storage/recordings/StorageDirSuite/TestCreateDirectoryIfExists.yaml similarity index 100% rename from recordings/StorageDirSuite/TestCreateDirectoryIfExists.yaml rename to storage/recordings/StorageDirSuite/TestCreateDirectoryIfExists.yaml diff --git a/recordings/StorageDirSuite/TestCreateDirectoryIfNotExists.yaml b/storage/recordings/StorageDirSuite/TestCreateDirectoryIfNotExists.yaml similarity index 100% rename from recordings/StorageDirSuite/TestCreateDirectoryIfNotExists.yaml rename to storage/recordings/StorageDirSuite/TestCreateDirectoryIfNotExists.yaml diff --git a/recordings/StorageDirSuite/TestDirectoryMetadata.yaml b/storage/recordings/StorageDirSuite/TestDirectoryMetadata.yaml similarity index 100% rename from recordings/StorageDirSuite/TestDirectoryMetadata.yaml rename to storage/recordings/StorageDirSuite/TestDirectoryMetadata.yaml diff --git a/recordings/StorageDirSuite/TestListDirsAndFiles.yaml b/storage/recordings/StorageDirSuite/TestListDirsAndFiles.yaml similarity index 100% rename from recordings/StorageDirSuite/TestListDirsAndFiles.yaml rename to storage/recordings/StorageDirSuite/TestListDirsAndFiles.yaml diff --git a/recordings/StorageDirSuite/TestListZeroDirsAndFiles.yaml b/storage/recordings/StorageDirSuite/TestListZeroDirsAndFiles.yaml similarity index 100% rename from recordings/StorageDirSuite/TestListZeroDirsAndFiles.yaml rename to storage/recordings/StorageDirSuite/TestListZeroDirsAndFiles.yaml diff --git a/recordings/StorageEntitySuite/TestDelete.yaml b/storage/recordings/StorageEntitySuite/TestDelete.yaml similarity index 100% rename from recordings/StorageEntitySuite/TestDelete.yaml rename to storage/recordings/StorageEntitySuite/TestDelete.yaml diff --git a/recordings/StorageEntitySuite/TestExecuteQueryNextResults.yaml b/storage/recordings/StorageEntitySuite/TestExecuteQueryNextResults.yaml similarity index 100% rename from recordings/StorageEntitySuite/TestExecuteQueryNextResults.yaml rename to storage/recordings/StorageEntitySuite/TestExecuteQueryNextResults.yaml diff --git a/recordings/StorageEntitySuite/TestInsert.yaml b/storage/recordings/StorageEntitySuite/TestInsert.yaml similarity index 100% rename from recordings/StorageEntitySuite/TestInsert.yaml rename to storage/recordings/StorageEntitySuite/TestInsert.yaml diff --git a/recordings/StorageEntitySuite/TestInsertOrMerge.yaml b/storage/recordings/StorageEntitySuite/TestInsertOrMerge.yaml similarity index 100% rename from recordings/StorageEntitySuite/TestInsertOrMerge.yaml rename to storage/recordings/StorageEntitySuite/TestInsertOrMerge.yaml diff --git a/recordings/StorageEntitySuite/TestInsertOrReplace.yaml b/storage/recordings/StorageEntitySuite/TestInsertOrReplace.yaml similarity index 100% rename from recordings/StorageEntitySuite/TestInsertOrReplace.yaml rename to storage/recordings/StorageEntitySuite/TestInsertOrReplace.yaml diff --git a/recordings/StorageEntitySuite/TestMerge.yaml b/storage/recordings/StorageEntitySuite/TestMerge.yaml similarity index 100% rename from recordings/StorageEntitySuite/TestMerge.yaml rename to storage/recordings/StorageEntitySuite/TestMerge.yaml diff --git a/recordings/StorageEntitySuite/TestUpdate.yaml b/storage/recordings/StorageEntitySuite/TestUpdate.yaml similarity index 100% rename from recordings/StorageEntitySuite/TestUpdate.yaml rename to storage/recordings/StorageEntitySuite/TestUpdate.yaml diff --git a/recordings/StorageEntitySuite/Test_InsertAndDeleteEntities.yaml b/storage/recordings/StorageEntitySuite/Test_InsertAndDeleteEntities.yaml similarity index 100% rename from recordings/StorageEntitySuite/Test_InsertAndDeleteEntities.yaml rename to storage/recordings/StorageEntitySuite/Test_InsertAndDeleteEntities.yaml diff --git a/recordings/StorageEntitySuite/Test_InsertAndExecuteQuery.yaml b/storage/recordings/StorageEntitySuite/Test_InsertAndExecuteQuery.yaml similarity index 100% rename from recordings/StorageEntitySuite/Test_InsertAndExecuteQuery.yaml rename to storage/recordings/StorageEntitySuite/Test_InsertAndExecuteQuery.yaml diff --git a/recordings/StorageEntitySuite/Test_InsertAndGetEntities.yaml b/storage/recordings/StorageEntitySuite/Test_InsertAndGetEntities.yaml similarity index 100% rename from recordings/StorageEntitySuite/Test_InsertAndGetEntities.yaml rename to storage/recordings/StorageEntitySuite/Test_InsertAndGetEntities.yaml diff --git a/recordings/StorageFileSuite/TestCopyFileMissingFile.yaml b/storage/recordings/StorageFileSuite/TestCopyFileMissingFile.yaml similarity index 100% rename from recordings/StorageFileSuite/TestCopyFileMissingFile.yaml rename to storage/recordings/StorageFileSuite/TestCopyFileMissingFile.yaml diff --git a/recordings/StorageFileSuite/TestCopyFileSameAccountNoMetaData.yaml b/storage/recordings/StorageFileSuite/TestCopyFileSameAccountNoMetaData.yaml similarity index 100% rename from recordings/StorageFileSuite/TestCopyFileSameAccountNoMetaData.yaml rename to storage/recordings/StorageFileSuite/TestCopyFileSameAccountNoMetaData.yaml diff --git a/recordings/StorageFileSuite/TestCopyFileSameAccountTimeout.yaml b/storage/recordings/StorageFileSuite/TestCopyFileSameAccountTimeout.yaml similarity index 100% rename from recordings/StorageFileSuite/TestCopyFileSameAccountTimeout.yaml rename to storage/recordings/StorageFileSuite/TestCopyFileSameAccountTimeout.yaml diff --git a/recordings/StorageFileSuite/TestCreateFile.yaml b/storage/recordings/StorageFileSuite/TestCreateFile.yaml similarity index 100% rename from recordings/StorageFileSuite/TestCreateFile.yaml rename to storage/recordings/StorageFileSuite/TestCreateFile.yaml diff --git a/recordings/StorageFileSuite/TestFileMD5.yaml b/storage/recordings/StorageFileSuite/TestFileMD5.yaml similarity index 100% rename from recordings/StorageFileSuite/TestFileMD5.yaml rename to storage/recordings/StorageFileSuite/TestFileMD5.yaml diff --git a/recordings/StorageFileSuite/TestFileMetadata.yaml b/storage/recordings/StorageFileSuite/TestFileMetadata.yaml similarity index 100% rename from recordings/StorageFileSuite/TestFileMetadata.yaml rename to storage/recordings/StorageFileSuite/TestFileMetadata.yaml diff --git a/recordings/StorageFileSuite/TestFileProperties.yaml b/storage/recordings/StorageFileSuite/TestFileProperties.yaml similarity index 100% rename from recordings/StorageFileSuite/TestFileProperties.yaml rename to storage/recordings/StorageFileSuite/TestFileProperties.yaml diff --git a/recordings/StorageFileSuite/TestFileRanges.yaml b/storage/recordings/StorageFileSuite/TestFileRanges.yaml similarity index 100% rename from recordings/StorageFileSuite/TestFileRanges.yaml rename to storage/recordings/StorageFileSuite/TestFileRanges.yaml diff --git a/recordings/StorageFileSuite/TestGetFile.yaml b/storage/recordings/StorageFileSuite/TestGetFile.yaml similarity index 100% rename from recordings/StorageFileSuite/TestGetFile.yaml rename to storage/recordings/StorageFileSuite/TestGetFile.yaml diff --git a/recordings/StorageMessageSuite/TestDeleteMessages.yaml b/storage/recordings/StorageMessageSuite/TestDeleteMessages.yaml similarity index 100% rename from recordings/StorageMessageSuite/TestDeleteMessages.yaml rename to storage/recordings/StorageMessageSuite/TestDeleteMessages.yaml diff --git a/recordings/StorageMessageSuite/TestPutMessage_Peek.yaml b/storage/recordings/StorageMessageSuite/TestPutMessage_Peek.yaml similarity index 100% rename from recordings/StorageMessageSuite/TestPutMessage_Peek.yaml rename to storage/recordings/StorageMessageSuite/TestPutMessage_Peek.yaml diff --git a/recordings/StorageMessageSuite/TestPutMessage_Peek_Update_Delete.yaml b/storage/recordings/StorageMessageSuite/TestPutMessage_Peek_Update_Delete.yaml similarity index 100% rename from recordings/StorageMessageSuite/TestPutMessage_Peek_Update_Delete.yaml rename to storage/recordings/StorageMessageSuite/TestPutMessage_Peek_Update_Delete.yaml diff --git a/recordings/StorageQueueSuite/TestCreateQueue_DeleteQueue.yaml b/storage/recordings/StorageQueueSuite/TestCreateQueue_DeleteQueue.yaml similarity index 100% rename from recordings/StorageQueueSuite/TestCreateQueue_DeleteQueue.yaml rename to storage/recordings/StorageQueueSuite/TestCreateQueue_DeleteQueue.yaml diff --git a/recordings/StorageQueueSuite/TestDeleteMessages.yaml b/storage/recordings/StorageQueueSuite/TestDeleteMessages.yaml similarity index 100% rename from recordings/StorageQueueSuite/TestDeleteMessages.yaml rename to storage/recordings/StorageQueueSuite/TestDeleteMessages.yaml diff --git a/recordings/StorageQueueSuite/TestGetMessages.yaml b/storage/recordings/StorageQueueSuite/TestGetMessages.yaml similarity index 100% rename from recordings/StorageQueueSuite/TestGetMessages.yaml rename to storage/recordings/StorageQueueSuite/TestGetMessages.yaml diff --git a/recordings/StorageQueueSuite/TestQueueExists.yaml b/storage/recordings/StorageQueueSuite/TestQueueExists.yaml similarity index 100% rename from recordings/StorageQueueSuite/TestQueueExists.yaml rename to storage/recordings/StorageQueueSuite/TestQueueExists.yaml diff --git a/recordings/StorageQueueSuite/Test_GetMetadata_GetApproximateCount.yaml b/storage/recordings/StorageQueueSuite/Test_GetMetadata_GetApproximateCount.yaml similarity index 100% rename from recordings/StorageQueueSuite/Test_GetMetadata_GetApproximateCount.yaml rename to storage/recordings/StorageQueueSuite/Test_GetMetadata_GetApproximateCount.yaml diff --git a/recordings/StorageQueueSuite/Test_SetMetadataGetMetadata_Roundtrips.yaml b/storage/recordings/StorageQueueSuite/Test_SetMetadataGetMetadata_Roundtrips.yaml similarity index 100% rename from recordings/StorageQueueSuite/Test_SetMetadataGetMetadata_Roundtrips.yaml rename to storage/recordings/StorageQueueSuite/Test_SetMetadataGetMetadata_Roundtrips.yaml diff --git a/recordings/StorageShareSuite/TestCreateShareDeleteShare.yaml b/storage/recordings/StorageShareSuite/TestCreateShareDeleteShare.yaml similarity index 100% rename from recordings/StorageShareSuite/TestCreateShareDeleteShare.yaml rename to storage/recordings/StorageShareSuite/TestCreateShareDeleteShare.yaml diff --git a/recordings/StorageShareSuite/TestCreateShareIfExists.yaml b/storage/recordings/StorageShareSuite/TestCreateShareIfExists.yaml similarity index 100% rename from recordings/StorageShareSuite/TestCreateShareIfExists.yaml rename to storage/recordings/StorageShareSuite/TestCreateShareIfExists.yaml diff --git a/recordings/StorageShareSuite/TestCreateShareIfNotExists.yaml b/storage/recordings/StorageShareSuite/TestCreateShareIfNotExists.yaml similarity index 100% rename from recordings/StorageShareSuite/TestCreateShareIfNotExists.yaml rename to storage/recordings/StorageShareSuite/TestCreateShareIfNotExists.yaml diff --git a/recordings/StorageShareSuite/TestDeleteShareIfNotExists.yaml b/storage/recordings/StorageShareSuite/TestDeleteShareIfNotExists.yaml similarity index 100% rename from recordings/StorageShareSuite/TestDeleteShareIfNotExists.yaml rename to storage/recordings/StorageShareSuite/TestDeleteShareIfNotExists.yaml diff --git a/recordings/StorageShareSuite/TestGetAndSetShareMetadata.yaml b/storage/recordings/StorageShareSuite/TestGetAndSetShareMetadata.yaml similarity index 100% rename from recordings/StorageShareSuite/TestGetAndSetShareMetadata.yaml rename to storage/recordings/StorageShareSuite/TestGetAndSetShareMetadata.yaml diff --git a/recordings/StorageShareSuite/TestGetAndSetShareProperties.yaml b/storage/recordings/StorageShareSuite/TestGetAndSetShareProperties.yaml similarity index 100% rename from recordings/StorageShareSuite/TestGetAndSetShareProperties.yaml rename to storage/recordings/StorageShareSuite/TestGetAndSetShareProperties.yaml diff --git a/recordings/StorageShareSuite/TestListShares.yaml b/storage/recordings/StorageShareSuite/TestListShares.yaml similarity index 100% rename from recordings/StorageShareSuite/TestListShares.yaml rename to storage/recordings/StorageShareSuite/TestListShares.yaml diff --git a/recordings/StorageShareSuite/TestMetadataCaseMunging.yaml b/storage/recordings/StorageShareSuite/TestMetadataCaseMunging.yaml similarity index 100% rename from recordings/StorageShareSuite/TestMetadataCaseMunging.yaml rename to storage/recordings/StorageShareSuite/TestMetadataCaseMunging.yaml diff --git a/recordings/StorageShareSuite/TestShareExists.yaml b/storage/recordings/StorageShareSuite/TestShareExists.yaml similarity index 100% rename from recordings/StorageShareSuite/TestShareExists.yaml rename to storage/recordings/StorageShareSuite/TestShareExists.yaml diff --git a/recordings/StorageSuite/TestGetServiceProperties.yaml b/storage/recordings/StorageSuite/TestGetServiceProperties.yaml similarity index 100% rename from recordings/StorageSuite/TestGetServiceProperties.yaml rename to storage/recordings/StorageSuite/TestGetServiceProperties.yaml diff --git a/recordings/StorageSuite/TestSetServiceProperties.yaml b/storage/recordings/StorageSuite/TestSetServiceProperties.yaml similarity index 100% rename from recordings/StorageSuite/TestSetServiceProperties.yaml rename to storage/recordings/StorageSuite/TestSetServiceProperties.yaml diff --git a/recordings/StorageTableSuite/TestQueryTablesNextResults.yaml b/storage/recordings/StorageTableSuite/TestQueryTablesNextResults.yaml similarity index 100% rename from recordings/StorageTableSuite/TestQueryTablesNextResults.yaml rename to storage/recordings/StorageTableSuite/TestQueryTablesNextResults.yaml diff --git a/recordings/StorageTableSuite/TestSetPermissionsSuccessfully.yaml b/storage/recordings/StorageTableSuite/TestSetPermissionsSuccessfully.yaml similarity index 100% rename from recordings/StorageTableSuite/TestSetPermissionsSuccessfully.yaml rename to storage/recordings/StorageTableSuite/TestSetPermissionsSuccessfully.yaml diff --git a/recordings/StorageTableSuite/TestSetPermissionsUnsuccessfully.yaml b/storage/recordings/StorageTableSuite/TestSetPermissionsUnsuccessfully.yaml similarity index 100% rename from recordings/StorageTableSuite/TestSetPermissionsUnsuccessfully.yaml rename to storage/recordings/StorageTableSuite/TestSetPermissionsUnsuccessfully.yaml diff --git a/recordings/StorageTableSuite/TestSetThenGetPermissionsSuccessfully.yaml b/storage/recordings/StorageTableSuite/TestSetThenGetPermissionsSuccessfully.yaml similarity index 100% rename from recordings/StorageTableSuite/TestSetThenGetPermissionsSuccessfully.yaml rename to storage/recordings/StorageTableSuite/TestSetThenGetPermissionsSuccessfully.yaml diff --git a/recordings/StorageTableSuite/Test_CreateAndDeleteTable.yaml b/storage/recordings/StorageTableSuite/Test_CreateAndDeleteTable.yaml similarity index 100% rename from recordings/StorageTableSuite/Test_CreateAndDeleteTable.yaml rename to storage/recordings/StorageTableSuite/Test_CreateAndDeleteTable.yaml diff --git a/recordings/StorageTableSuite/Test_CreateTableWithAllResponsePayloadLevels.yaml b/storage/recordings/StorageTableSuite/Test_CreateTableWithAllResponsePayloadLevels.yaml similarity index 100% rename from recordings/StorageTableSuite/Test_CreateTableWithAllResponsePayloadLevels.yaml rename to storage/recordings/StorageTableSuite/Test_CreateTableWithAllResponsePayloadLevels.yaml diff --git a/recordings/TableBatchSuite/Test_BatchInsertDeleteSameEntity.yaml b/storage/recordings/TableBatchSuite/Test_BatchInsertDeleteSameEntity.yaml similarity index 100% rename from recordings/TableBatchSuite/Test_BatchInsertDeleteSameEntity.yaml rename to storage/recordings/TableBatchSuite/Test_BatchInsertDeleteSameEntity.yaml diff --git a/recordings/TableBatchSuite/Test_BatchInsertMultipleEntities.yaml b/storage/recordings/TableBatchSuite/Test_BatchInsertMultipleEntities.yaml similarity index 100% rename from recordings/TableBatchSuite/Test_BatchInsertMultipleEntities.yaml rename to storage/recordings/TableBatchSuite/Test_BatchInsertMultipleEntities.yaml diff --git a/recordings/TableBatchSuite/Test_BatchInsertSameEntryMultipleTimes.yaml b/storage/recordings/TableBatchSuite/Test_BatchInsertSameEntryMultipleTimes.yaml similarity index 100% rename from recordings/TableBatchSuite/Test_BatchInsertSameEntryMultipleTimes.yaml rename to storage/recordings/TableBatchSuite/Test_BatchInsertSameEntryMultipleTimes.yaml diff --git a/recordings/TableBatchSuite/Test_BatchInsertThenDeleteDifferentBatches.yaml b/storage/recordings/TableBatchSuite/Test_BatchInsertThenDeleteDifferentBatches.yaml similarity index 100% rename from recordings/TableBatchSuite/Test_BatchInsertThenDeleteDifferentBatches.yaml rename to storage/recordings/TableBatchSuite/Test_BatchInsertThenDeleteDifferentBatches.yaml diff --git a/recordings/TableBatchSuite/Test_BatchInsertThenMergeDifferentBatches.yaml b/storage/recordings/TableBatchSuite/Test_BatchInsertThenMergeDifferentBatches.yaml similarity index 100% rename from recordings/TableBatchSuite/Test_BatchInsertThenMergeDifferentBatches.yaml rename to storage/recordings/TableBatchSuite/Test_BatchInsertThenMergeDifferentBatches.yaml