/// <summary> /// Test page blob reads, expecting lease failure. /// </summary> /// <param name="testBlob">The page blob.</param> /// <param name="testAccessCondition">The failing access condition to use.</param> /// <param name="expectedErrorCode">The expected error code.</param> /// <param name="description">The reason why these calls should fail.</param> private void PageBlobReadExpectLeaseFailure(CloudPageBlob testBlob, AccessCondition testAccessCondition, HttpStatusCode expectedStatusCode, string expectedErrorCode, string description) { TestHelper.ExpectedException( () => testBlob.GetPageRanges(null /* offset */, null /* length */, testAccessCondition, null /* options */), description + "(Get Page Ranges)", expectedStatusCode, expectedErrorCode); }
/// <summary> /// Test page blob reads, expecting success. /// </summary> /// <param name="testBlob">The page blob.</param> /// <param name="testAccessCondition">The access condition to use.</param> private void PageBlobReadExpectSuccess(CloudPageBlob testBlob, AccessCondition testAccessCondition) { testBlob.GetPageRanges(null /* offset */, null /* length */, testAccessCondition, null /* options */); }
//****************** //* * //* ShowPageBlob * //* * //****************** // Display properties for a specific page blob. public void ShowPageBlob(CloudPageBlob blob) { Cursor = Cursors.Wait; try { PagesTab.Visibility = System.Windows.Visibility.Visible; ContentTab.Visibility = System.Windows.Visibility.Collapsed; PageBlob = blob; IsBlobChanged = false; this.Title = "View Blob - " + blob.Name; // Display blob properties. PropBlobType.Text = "Page"; PropCacheControl.Text = blob.Properties.CacheControl; PropContainer.Text = blob.Container.Name; PropContentDisposition.Text = blob.Properties.ContentDisposition; PropContentEncoding.Text = blob.Properties.ContentEncoding; PropContentLanguage.Text = blob.Properties.ContentLanguage; PropContentMD5.Text = blob.Properties.ContentMD5; PropContentType.Text = blob.Properties.ContentType; if (blob.CopyState != null) { PropCopyState.Text = blob.CopyState.ToString(); } if (blob.Properties.ETag != null) { PropETag.Text = blob.Properties.ETag.Replace("\"", String.Empty).Replace("0x", String.Empty); } if (blob.IsSnapshot) { PropIsSnapshot.Text = "True"; } else { PropIsSnapshot.Text = "False"; } PropLastModified.Text = blob.Properties.LastModified.ToString(); PropLeaseDuration.Text = blob.Properties.LeaseDuration.ToString(); PropLeaseState.Text = blob.Properties.LeaseState.ToString(); PropLeaseStatus.Text = blob.Properties.LeaseStatus.ToString(); PropLength.Text = blob.Properties.Length.ToString(); PropName.Text = blob.Name; PropParent.Text = blob.Parent.Container.Name; PropSnapshotQualifiedStorageUri.Text = blob.SnapshotQualifiedStorageUri.ToString().Replace("; ", ";\n"); PropSnapshotQualifiedUri.Text = blob.SnapshotQualifiedUri.ToString().Replace("; ", ";\n"); if (blob.SnapshotTime.HasValue) { PropSnapshotTime.Text = blob.SnapshotTime.ToString(); } PropStorageUri.Text = blob.StorageUri.ToString().Replace("; ", ";\n"); PropStreamMinimumReadSizeInBytes.Text = blob.StreamMinimumReadSizeInBytes.ToString(); PropStreamWriteSizeInBytes.Text = blob.StreamWriteSizeInBytes.ToString(); PropUri.Text = blob.Uri.ToString().Replace("; ", ";\n"); // Read page ranges in use and display in Pages tab. MaxPageNumber = (blob.Properties.Length / 512) - 1; IEnumerable<Microsoft.WindowsAzure.Storage.Blob.PageRange> ranges = PageBlob.GetPageRanges(); PageRanges.Items.Clear(); long startPage, endPage; int rangeCount = 0; if (ranges != null) { long pages = PageBlob.Properties.Length / 512; foreach(Microsoft.WindowsAzure.Storage.Blob.PageRange range in ranges) { startPage = (range.StartOffset) / 512; endPage = (range.EndOffset) / 512; long offset = range.StartOffset; long endOffset = offset + 512 - 1; int index = 0; for (long page = startPage; page <= endPage; page++) { index = PageRanges.Items.Add("Page " + page.ToString() + ": (" + offset.ToString() + " - " + endOffset.ToString() + ")"); rangeCount++; offset += 512; endOffset += 512; } } } if (rangeCount == 0) { PageRanges.Items.Add("None - no pages allocated"); } Cursor = Cursors.Arrow; } catch (Exception ex) { MessageBox.Show(ex.Message); } }