internal ICloudBlob CopyBlobAndWaitForComplete(CloudBlobUtil blobUtil) { string destBlobName = Utility.GenNameString("copystate"); ICloudBlob destBlob = default(ICloudBlob); Test.Info("Copy Blob using storage client"); if (blobUtil.Blob.BlobType == StorageBlob.BlobType.BlockBlob) { CloudBlockBlob blockBlob = blobUtil.Container.GetBlockBlobReference(destBlobName); blockBlob.StartCopyFromBlob((CloudBlockBlob)blobUtil.Blob); destBlob = blockBlob; } else { CloudPageBlob pageBlob = blobUtil.Container.GetPageBlobReference(destBlobName); pageBlob.StartCopyFromBlob((CloudPageBlob)blobUtil.Blob); destBlob = pageBlob; } CloudBlobUtil.WaitForCopyOperationComplete(destBlob); Test.Assert(destBlob.CopyState.Status == CopyStatus.Success, String.Format("The blob copy using storage client should be success, actually it's {0}", destBlob.CopyState.Status)); return(destBlob); }
private ICloudBlob AssertCopyBlobCrossContainer(ICloudBlob srcBlob, CloudBlobContainer destContainer, string destBlobName, object destContext, Func <bool> StartFunc = null) { if (StartFunc == null) { Test.Assert(agent.StartAzureStorageBlobCopy(srcBlob.Container.Name, srcBlob.Name, destContainer.Name, destBlobName, destContext), "blob copy should start sucessfully"); } else { Test.Assert(StartFunc(), "blob copy should start sucessfully"); } int expectedBlobCount = 1; Test.Assert(agent.Output.Count == expectedBlobCount, String.Format("Expected get {0} copy state, and actually it's {1}", expectedBlobCount, agent.Output.Count)); ICloudBlob destBlob = (ICloudBlob)agent.Output[0]["ICloudBlob"]; string expectedBlobName = destBlobName; if (string.IsNullOrEmpty(expectedBlobName)) { expectedBlobName = srcBlob.Name; } Test.Assert(expectedBlobName == destBlob.Name, string.Format("Expected destination blob name is {0}, and actually it's {1}", expectedBlobName, destBlob.Name)); Test.Assert(CloudBlobUtil.WaitForCopyOperationComplete(destBlob), "Copy Operation should finished"); destBlob.FetchAttributes(); string expectedSourceUri = CloudBlobUtil.ConvertCopySourceUri(srcBlob.Uri.ToString()); string sourceUri = destBlob.CopyState.Source.ToString(); Test.Assert(sourceUri.StartsWith(expectedSourceUri), String.Format("source uri should start with {0}, and actualy it's {1}", expectedSourceUri, sourceUri)); Test.Assert(destBlob.Metadata.Count > 0, "destination blob should contain meta data"); Test.Assert(destBlob.Metadata.SequenceEqual(srcBlob.Metadata), "Copied blob's meta data should be equal with origin metadata"); Test.Assert(destBlob.Properties.ContentEncoding == srcBlob.Properties.ContentEncoding, String.Format("expected content encoding is {0}, and actually it's {1}", srcBlob.Properties.ContentEncoding, destBlob.Properties.ContentEncoding)); return(destBlob); }