コード例 #1
0
 /// <summary>
 /// Abort copy operation on specified blob
 /// </summary>
 /// <param name="blob">ICloudBlob object</param>
 /// <param name="copyId">Copy id</param>
 /// <param name="accessCondition">Access condition</param>
 /// <param name="options">Blob request options</param>
 /// <param name="operationContext">Operation context</param>
 public void AbortCopy(ICloudBlob blob, string copyId, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext)
 {
     try
     {
         blob.AbortCopy(copyId, accessCondition, options, operationContext);
     }
     catch (StorageException e)
     {
         if (e.IsSuccessfulResponse())
         {
             //The abort operation is successful, although get an exception
             return;
         }
         else
         {
             throw;
         }
     }
 }
コード例 #2
0
 /// <summary>
 /// Abort copy operation on specified blob
 /// </summary>
 /// <param name="blob">ICloudBlob object</param>
 /// <param name="copyId">Copy id</param>
 /// <param name="accessCondition">Access condition</param>
 /// <param name="options">Blob request options</param>
 /// <param name="operationContext">Operation context</param>
 public void AbortCopy(ICloudBlob blob, string copyId, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext)
 {
     try
     {
         blob.AbortCopy(copyId, accessCondition, options, operationContext);
     }
     catch (StorageException e)
     {
         if (e.IsSuccessfulResponse())
         {
             //The abort operation is successful, although get an exception
             return;
         }
         else
         {
             throw;
         }
     }
 }
コード例 #3
0
        public void GetCopyStateWhenCopyingTest()
        {
            CloudBlobContainer Container     = blobUtil.CreateContainer();
            string             ContainerName = Container.Name;
            string             BlobName      = Utility.GenNameString("blockblob");
            ICloudBlob         Blob          = blobUtil.CreateBlockBlob(Container, BlobName);

            string uri = Test.Data.Get("BigFileUri");

            Test.Assert(!String.IsNullOrEmpty(uri), string.Format("Big file uri should be not empty, actually it's {0}", uri));

            if (String.IsNullOrEmpty(uri))
            {
                return;
            }

            Blob.StartCopyFromBlob(new Uri(uri));

            int maxMonitorTime = 30;   //seconds
            int checkCount     = 0;
            int sleepInterval  = 1000; //ms

            CopyStatus status = CopyStatus.Pending;

            try
            {
                int expectedCopyStateCount = 1;

                do
                {
                    Test.Info(String.Format("{0}th check current copy state", checkCount));
                    Test.Assert(agent.GetAzureStorageBlobCopyState(ContainerName, BlobName, false), "Get copy state in dest container should be successed.");

                    Test.Assert(agent.Output.Count == expectedCopyStateCount, String.Format("Should contain {0} copy state, and actually it's {1}", expectedCopyStateCount, agent.Output.Count));
                    status = (CopyStatus)agent.Output[0]["Status"];
                    Test.Assert(status == CopyStatus.Pending, String.Format("Copy status should be Pending, actually it's {0}", status));
                    checkCount++;
                    Thread.Sleep(sleepInterval);
                }while (status == CopyStatus.Pending && checkCount < maxMonitorTime);

                Test.Info("Finish the monitor loop and try to abort copy");

                try
                {
                    Blob.AbortCopy(Blob.CopyState.CopyId);
                }
                catch (StorageException e)
                {
                    //TODO use extension method
                    if (e.RequestInformation != null && e.RequestInformation.HttpStatusCode == 409)
                    {
                        Test.Info("Skip 409 abort conflict exception. Error:{0}", e.Message);
                        Test.Info("Detail Error Message: {0}", e.RequestInformation.HttpStatusMessage);
                    }
                    else
                    {
                        Test.AssertFail(String.Format("Can't abort copy. Error: {0}", e.Message));
                    }
                }

                Test.Assert(agent.GetAzureStorageBlobCopyState(ContainerName, BlobName, false), "Get copy state in dest container should be successed.");
                Test.Assert(agent.Output.Count == expectedCopyStateCount, String.Format("Should contain {0} copy state, and actually it's {1}", expectedCopyStateCount, agent.Output.Count));
                status = (CopyStatus)agent.Output[0]["Status"];
                Test.Assert(status == CopyStatus.Aborted, String.Format("Copy status should be Aborted, actually it's {0}", status));
            }
            finally
            {
                blobUtil.RemoveContainer(Container.Name);
            }
        }