public static bool WaitForCopyOperationComplete(StorageBlob.ICloudBlob destBlob, int maxRetry = 100) { int retryCount = 0; int sleepInterval = 1000; //ms if (destBlob == null) { return false; } do { if (retryCount > 0) { Test.Info(String.Format("{0}th check current copy state and it's {1}. Wait for copy completion", retryCount, destBlob.CopyState.Status)); } Thread.Sleep(sleepInterval); destBlob.FetchAttributes(); retryCount++; } while (destBlob.CopyState.Status == StorageBlob.CopyStatus.Pending && retryCount < maxRetry); Test.Info(String.Format("Final Copy status is {0}", destBlob.CopyState.Status)); return destBlob.CopyState.Status != StorageBlob.CopyStatus.Pending; }
/// <summary> /// generate random blob properties and metadata /// </summary> /// <param name="blob">ICloudBlob object</param> private void GenerateBlobPropertiesAndMetaData(StorageBlob.ICloudBlob blob) { blob.Properties.ContentEncoding = Utility.GenNameString("encoding"); blob.Properties.ContentLanguage = Utility.GenNameString("lang"); int minMetaCount = 1; int maxMetaCount = 5; int minMetaValueLength = 10; int maxMetaValueLength = 20; int count = random.Next(minMetaCount, maxMetaCount); for (int i = 0; i < count; i++) { string metaKey = Utility.GenNameString("metatest"); int valueLength = random.Next(minMetaValueLength, maxMetaValueLength); string metaValue = Utility.GenNameString("metavalue-", valueLength); blob.Metadata.Add(metaKey, metaValue); } blob.SetProperties(); blob.SetMetadata(); blob.FetchAttributes(); }