public void CloudBlobDirectoryHierarchicalTraversal() { foreach (String delimiter in Delimiters) { CloudBlobClient client = GenerateCloudBlobClient(); client.DefaultDelimiter = delimiter; string name = GetRandomContainerName(); CloudBlobContainer container = client.GetContainerReference(name); try { ////Traverse hierarchically starting with length 1 CloudBlobDirectory directory1 = container.GetDirectoryReference("Dir1" + delimiter); CloudBlobDirectory subdir1 = directory1.GetSubdirectoryReference("Dir2"); CloudBlobDirectory parent1 = subdir1.Parent; Assert.AreEqual(parent1.Prefix, directory1.Prefix); CloudBlobDirectory subdir2 = subdir1.GetSubdirectoryReference("Dir3"); CloudBlobDirectory parent2 = subdir2.Parent; Assert.AreEqual(parent2.Prefix, subdir1.Prefix); CloudBlobDirectory subdir3 = subdir2.GetSubdirectoryReference("Dir4"); CloudBlobDirectory parent3 = subdir3.Parent; Assert.AreEqual(parent3.Prefix, subdir2.Prefix); CloudBlobDirectory subdir4 = subdir3.GetSubdirectoryReference("Dir5"); CloudBlobDirectory parent4 = subdir4.Parent; Assert.AreEqual(parent4.Prefix, subdir3.Prefix); } finally { container.DeleteIfExists(); } } }
public async Task CloudBlobDirectoryMultipleDelimitersAsync() { foreach (String delimiter in Delimiters) { CloudBlobClient client = GenerateCloudBlobClient(); ////Set the default delimiter to \ client.DefaultDelimiter = delimiter; string name = GetRandomContainerName(); CloudBlobContainer container = client.GetContainerReference(name); await container.CreateAsync(); try { if (await CloudBlobDirectorySetupWithDelimiterAsync(container, delimiter)) { BlobResultSegment segment = await container.ListBlobsSegmentedAsync("TopDir1" + delimiter, false, BlobListingDetails.UncommittedBlobs, null, null, null, null); List <IListBlobItem> simpleList = new List <IListBlobItem>(); simpleList.AddRange(segment.Results); while (segment.ContinuationToken != null) { segment = await container.ListBlobsSegmentedAsync("TopDir1" + delimiter, false, BlobListingDetails.UncommittedBlobs, null, segment.ContinuationToken, null, null); simpleList.AddRange(segment.Results); } Assert.IsTrue(simpleList.Count == 3); IListBlobItem item11 = simpleList.ElementAt(0); Assert.IsTrue(item11.Uri.Equals(container.Uri + "/TopDir1" + delimiter + "Blob1")); IListBlobItem item12 = simpleList.ElementAt(1); Assert.IsTrue(item12.Uri.Equals(container.Uri + "/TopDir1" + delimiter + "MidDir1" + delimiter)); IListBlobItem item13 = simpleList.ElementAt(2); Assert.IsTrue(item13.Uri.Equals(container.Uri + "/TopDir1" + delimiter + "MidDir2" + delimiter)); CloudBlobDirectory directory = container.GetDirectoryReference("TopDir1" + delimiter); CloudBlobDirectory subDirectory = directory.GetSubdirectoryReference("MidDir1" + delimiter); CloudBlobDirectory parent = subDirectory.Parent; Assert.AreEqual(parent.Prefix, directory.Prefix); Assert.AreEqual(parent.Uri, directory.Uri); } } finally { container.DeleteIfExistsAsync().Wait(); } } }
public void CloudBlobContainerReference() { CloudBlobClient client = GenerateCloudBlobClient(); CloudBlobContainer container = client.GetContainerReference("container"); CloudBlockBlob blockBlob = container.GetBlockBlobReference("directory1/blob1"); CloudPageBlob pageBlob = container.GetPageBlobReference("directory2/blob2"); CloudBlobDirectory directory = container.GetDirectoryReference("directory3"); CloudBlobDirectory directory2 = directory.GetSubdirectoryReference("directory4"); Assert.AreEqual(container, blockBlob.Container); Assert.AreEqual(container, pageBlob.Container); Assert.AreEqual(container, directory.Container); Assert.AreEqual(container, directory2.Container); Assert.AreEqual(container, directory2.Parent.Container); Assert.AreEqual(container, blockBlob.Parent.Container); Assert.AreEqual(container, blockBlob.Parent.Container); }
public void CloudBlobDirectoryMultipleDelimiters() { foreach (String delimiter in Delimiters) { CloudBlobClient client = GenerateCloudBlobClient(); ////Set the default delimiter to \ client.DefaultDelimiter = delimiter; string name = GetRandomContainerName(); CloudBlobContainer container = client.GetContainerReference(name); try { container.Create(); if (CloudBlobDirectorySetupWithDelimiter(container, delimiter)) { IEnumerable <IListBlobItem> list1 = container.ListBlobs("TopDir1" + delimiter, false, BlobListingDetails.None, null, null); List <IListBlobItem> simpleList1 = list1.ToList(); ////Check if for 3 because if there were more than 3, the previous assert would have failed. ////So the only thing we need to make sure is that it is not less than 3. Assert.IsTrue(simpleList1.Count == 3); IListBlobItem item11 = simpleList1.ElementAt(0); Assert.IsTrue(item11.Uri.Equals(container.Uri + "/TopDir1" + delimiter + "Blob1")); IListBlobItem item12 = simpleList1.ElementAt(1); Assert.IsTrue(item12.Uri.Equals(container.Uri + "/TopDir1" + delimiter + "MidDir1" + delimiter)); IListBlobItem item13 = simpleList1.ElementAt(2); Assert.IsTrue(item13.Uri.Equals(container.Uri + "/TopDir1" + delimiter + "MidDir2" + delimiter)); CloudBlobDirectory directory = container.GetDirectoryReference("TopDir1" + delimiter); CloudBlobDirectory subDirectory = directory.GetSubdirectoryReference("MidDir1" + delimiter); CloudBlobDirectory parent = subDirectory.Parent; Assert.AreEqual(parent.Prefix, directory.Prefix); Assert.AreEqual(parent.Uri, directory.Uri); } } finally { container.DeleteIfExists(); } } }
public void CloudBlobDirectoryDelimitersInARow() { foreach (String delimiter in Delimiters) { CloudBlobClient client = GenerateCloudBlobClient(); client.DefaultDelimiter = delimiter; string name = GetRandomContainerName(); CloudBlobContainer container = client.GetContainerReference(name); try { CloudPageBlob blob = container.GetPageBlobReference(delimiter + delimiter + delimiter + "Blob1"); ////Traverse from leaf to root CloudBlobDirectory directory1 = blob.Parent; Assert.AreEqual(directory1.Prefix, delimiter + delimiter + delimiter); CloudBlobDirectory directory2 = directory1.Parent; Assert.AreEqual(directory2.Prefix, delimiter + delimiter); CloudBlobDirectory directory3 = directory2.Parent; Assert.AreEqual(directory3.Prefix, delimiter); ////Traverse from root to leaf CloudBlobDirectory directory4 = container.GetDirectoryReference(delimiter); CloudBlobDirectory directory5 = directory4.GetSubdirectoryReference(delimiter); Assert.AreEqual(directory5.Prefix, delimiter + delimiter); CloudBlobDirectory directory6 = directory5.GetSubdirectoryReference(delimiter); Assert.AreEqual(directory6.Prefix, delimiter + delimiter + delimiter); CloudPageBlob blob2 = directory6.GetPageBlobReference("Blob1"); Assert.AreEqual(blob2.Name, delimiter + delimiter + delimiter + "Blob1"); Assert.AreEqual(blob2.Uri, blob.Uri); } finally { container.DeleteIfExists(); } } }
public void CloudBlobDirectoryValidateInRootContainer() { foreach (String delimiter in Delimiters) { CloudBlobClient client = GenerateCloudBlobClient(); client.DefaultDelimiter = delimiter; CloudBlobContainer container = client.GetContainerReference("$root"); CloudPageBlob pageBlob = container.GetPageBlobReference("Dir1" + delimiter + "Blob1"); if (delimiter == "/") { TestHelper.ExpectedException( () => pageBlob.Create(0), "Try to create a CloudBlobDirectory/blob which has a slash in its name in the root container", HttpStatusCode.BadRequest); } else { CloudPageBlob blob = container.GetPageBlobReference("TopDir1" + delimiter + "MidDir1" + delimiter + "EndDir1" + delimiter + "EndBlob1"); CloudBlobDirectory directory = blob.Parent; Assert.AreEqual(directory.Prefix, "TopDir1" + delimiter + "MidDir1" + delimiter + "EndDir1" + delimiter); Assert.AreEqual(directory.Uri, container.Uri + "/TopDir1" + delimiter + "MidDir1" + delimiter + "EndDir1" + delimiter); CloudBlobDirectory directory1 = container.GetDirectoryReference("TopDir1" + delimiter); CloudBlobDirectory subdir1 = directory1.GetSubdirectoryReference("MidDir" + delimiter); CloudBlobDirectory parent1 = subdir1.Parent; Assert.AreEqual(parent1.Prefix, directory1.Prefix); Assert.AreEqual(parent1.Uri, directory1.Uri); CloudBlobDirectory subdir2 = subdir1.GetSubdirectoryReference("EndDir" + delimiter); CloudBlobDirectory parent2 = subdir2.Parent; Assert.AreEqual(parent2.Prefix, subdir1.Prefix); Assert.AreEqual(parent2.Uri, subdir1.Uri); } } }
public void CloudBlobDirectoryGetSubdirectoryAndTraverseBackToParent() { foreach (String delimiter in Delimiters) { CloudBlobClient client = GenerateCloudBlobClient(); client.DefaultDelimiter = delimiter; string name = GetRandomContainerName(); CloudBlobContainer container = client.GetContainerReference(name); try { CloudBlobDirectory directory = container.GetDirectoryReference("TopDir1" + delimiter); CloudBlobDirectory subDirectory = directory.GetSubdirectoryReference("MidDir1" + delimiter); CloudBlobDirectory parent = subDirectory.Parent; Assert.AreEqual(parent.Prefix, directory.Prefix); Assert.AreEqual(parent.Uri, directory.Uri); } finally { container.DeleteIfExists(); } } }