public void OpContextTestClientRequestIDOnBlob() { CloudBlobClient blobClient = GenerateCloudBlobClient(); CloudBlobContainer container = blobClient.GetContainerReference("test"); string uniqueID = Guid.NewGuid().ToString(); Action act = () => container.Exists(null, new OperationContext() { ClientRequestID = uniqueID }); TestHelper.VerifyHeaderWasSent("x-ms-client-request-id", uniqueID, XStoreSelectors.BlobTraffic().IfHostNameContains(blobClient.Credentials.AccountName), act); act = () => container.EndExists(container.BeginExists(null, new OperationContext() { ClientRequestID = uniqueID }, null, null)); TestHelper.VerifyHeaderWasSent("x-ms-client-request-id", uniqueID, XStoreSelectors.BlobTraffic().IfHostNameContains(blobClient.Credentials.AccountName), act); #if TASK act = () => container.ExistsAsync(null, new OperationContext() { ClientRequestID = uniqueID }).Wait(); TestHelper.VerifyHeaderWasSent("x-ms-client-request-id", uniqueID, XStoreSelectors.BlobTraffic().IfHostNameContains(blobClient.Credentials.AccountName), act); #endif }
public void CloudBlockBlobDownloadToStreamAPMRetry() { byte[] buffer = GetRandomBuffer(1 * 1024 * 1024); CloudBlobContainer container = GetRandomContainerReference(); try { container.Create(); CloudBlockBlob blob = container.GetBlockBlobReference("blob1"); using (MemoryStream originalBlob = new MemoryStream(buffer)) { using (AutoResetEvent waitHandle = new AutoResetEvent(false)) { ICancellableAsyncResult result = blob.BeginUploadFromStream(originalBlob, ar => waitHandle.Set(), null); waitHandle.WaitOne(); blob.EndUploadFromStream(result); using (MemoryStream downloadedBlob = new MemoryStream()) { Exception manglerEx = null; using (HttpMangler proxy = new HttpMangler(false, new[] { TamperBehaviors.TamperNRequestsIf( session => ThreadPool.QueueUserWorkItem(state => { Thread.Sleep(1000); try { session.Abort(); } catch (Exception e) { manglerEx = e; } }), 2, XStoreSelectors.BlobTraffic().IfHostNameContains(container.ServiceClient.Credentials.AccountName)) })) { OperationContext operationContext = new OperationContext(); result = blob.BeginDownloadToStream(downloadedBlob, null, null, operationContext, ar => waitHandle.Set(), null); waitHandle.WaitOne(); blob.EndDownloadToStream(result); TestHelper.AssertStreamsAreEqual(originalBlob, downloadedBlob); } if (manglerEx != null) { throw manglerEx; } } } } } finally { container.DeleteIfExists(); } }
public void OpContextTestUserHeadersOnBlob() { CloudBlobClient blobClient = GenerateCloudBlobClient(); CloudBlobContainer container = blobClient.GetContainerReference("test"); string uniqueID = Guid.NewGuid().ToString(); OperationContext ctx = new OperationContext(); ctx.UserHeaders = new Dictionary <string, string>(); ctx.UserHeaders.Add("foo", "bar"); Action act = () => container.Exists(null, ctx); TestHelper.VerifyHeaderWasSent(ctx.UserHeaders.Keys.First(), ctx.UserHeaders[ctx.UserHeaders.Keys.First()], XStoreSelectors.BlobTraffic().IfHostNameContains(blobClient.Credentials.AccountName), act); act = () => container.EndExists(container.BeginExists(null, ctx, null, null)); TestHelper.VerifyHeaderWasSent(ctx.UserHeaders.Keys.First(), ctx.UserHeaders[ctx.UserHeaders.Keys.First()], XStoreSelectors.BlobTraffic().IfHostNameContains(blobClient.Credentials.AccountName), act); }
public void CloudBlobContainerSetMetadataAPMCancel() { CloudBlobContainer container = GetRandomContainerReference(); try { container.Create(); container.Metadata.Add("key1", "value1"); TestHelper.ExecuteAPMMethodWithCancellation(4000, new[] { DelayBehaviors.DelayAllRequestsIf(4000 * 3, XStoreSelectors.BlobTraffic().IfHostNameContains(container.ServiceClient.Credentials.AccountName)) }, (options, opContext, callback, state) => container.BeginSetMetadata(null, (BlobRequestOptions)options, opContext, callback, state), container.EndSetMetadata); } finally { container.DeleteIfExists(); } }