public AzureAtomicReader(CloudBlobClient storageClient, IDocumentStrategy strategy) { this._strategy = strategy; var folder = strategy.GetEntityBucket <TEntity>(); this._containerDirectory = storageClient.GetBlobDirectory(folder); this._logger = NetcoLogger.GetLogger(this.GetType()); this._ap = ActionPolicyAsync.From((exception => { var storageException = exception as StorageException; if (storageException == null) { return(false); } switch (storageException.RequestInformation.HttpStatusCode) { case ( int )HttpStatusCode.InternalServerError: case ( int )HttpStatusCode.ServiceUnavailable: return(true); default: return(false); } })).Retry(200, (ex, i) => { this._logger.Log().Trace(ex, "Retrying Azure API GET call: {0}/200", i); var secondsDelay = 0.2 + 0.1 * _random.Next(-1, 1); // randomize wait time Task.Delay(TimeSpan.FromSeconds(secondsDelay)).Wait(); }); }
public AzureAtomicWriter(CloudBlobClient storageClient, IDocumentStrategy strategy) { this._strategy = strategy; var folder = strategy.GetEntityBucket <TEntity>(); this._containerDirectory = storageClient.GetBlobDirectory(folder); }
public StatelessAzureQueueReader( string name, CloudQueue primaryQueue, AzureBlobDirectory container, Lazy <CloudQueue> poisonQueue, TimeSpan visibilityTimeout) { this._cloudBlob = container; this._queue = primaryQueue; this._posionQueue = poisonQueue; this._queueName = name; this._visibilityTimeout = visibilityTimeout; }
public async Task TestUri() { CloudBlobContainer container = _blobClient.GetContainerReference("container"); container.CreateIfNotExists(); const string dirName = "dir"; CloudBlobDirectory directory = await CreateNonEmptyDirectory(container, dirName); AzureBlobDirectory azureBlobDirectory = new AzureBlobDirectory(container.GetDirectoryReference(dirName)); Assert.AreEqual(directory.Uri.ToString(), azureBlobDirectory.Uri); }
public async Task TestGetFile() { CloudBlobContainer container = _blobClient.GetContainerReference("container"); container.CreateIfNotExists(); CloudBlobDirectory directory = await CreateNonEmptyDirectory(container, "dir"); await CreateEmptyBlob(directory.GetBlockBlobReference("blob1")); AzureBlobDirectory azureBlobDirectory = new AzureBlobDirectory(directory); Assert.AreEqual("blob1", (await azureBlobDirectory.GetFile("blob1")).Name); }
public async Task TestExists() { CloudBlobContainer container = _blobClient.GetContainerReference("container"); container.CreateIfNotExists(); await CreateEmptyBlob(container.GetBlockBlobReference("blob1")); CloudBlobDirectory directory = await CreateNonEmptyDirectory(container, "dir"); AzureBlobDirectory azureBlobDirectory = new AzureBlobDirectory(directory); Assert.IsTrue(await azureBlobDirectory.Exists()); await DeleteDirectory(directory); Assert.IsFalse(await azureBlobDirectory.Exists()); }
public async Task TestFiles() { CloudBlobContainer container = _blobClient.GetContainerReference("container"); container.CreateIfNotExists(); CloudBlobDirectory directory = container.GetDirectoryReference("dir"); await Task.WhenAll( CreateEmptyBlob(directory.GetBlockBlobReference("blob1")), CreateEmptyBlob(directory.GetBlockBlobReference("blob2"))); AzureBlobDirectory azureBlobDirectory = new AzureBlobDirectory(directory); IEnumerable <string> files = (await azureBlobDirectory.ListFiles()).Select(d => d.Name); Assert.AreEqual(2, files.Count()); Assert.IsTrue(files.Contains("blob1")); Assert.IsTrue(files.Contains("blob2")); }
public async Task TestDirectories() { CloudBlobContainer container = _blobClient.GetContainerReference("container"); container.CreateIfNotExists(); CloudBlobDirectory directory = await CreateNonEmptyDirectory(container, "dir"); await Task.WhenAll( CreateNonEmptyDirectory(directory, "dir1"), CreateNonEmptyDirectory(directory, "dir2")); AzureBlobDirectory azureBlobDirectory = new AzureBlobDirectory(directory); IEnumerable <string> directories = (await azureBlobDirectory.ListDirectories()).Select(d => d.Name); Assert.AreEqual(2, directories.Count()); Assert.IsTrue(directories.Contains("dir1")); Assert.IsTrue(directories.Contains("dir2")); }
public async Task TestDownload() { CloudBlobContainer container = _blobClient.GetContainerReference("container"); container.CreateIfNotExists(); CloudBlobDirectory directory = await CreateNonEmptyDirectory(container, "dir"); AzureBlobDirectory azureBlobDirectory = new AzureBlobDirectory(directory); string path = Path.Combine(Path.GetTempPath(), "azureblobdirectorydownloadtest"); if (Directory.Exists(path)) { Directory.Delete(path, recursive: true); } await azureBlobDirectory.Download(path); Assert.IsTrue(Directory.Exists(path)); }
/// <summary> /// Initializes a new instance of the <see cref="BlobStreamingContainer"/> class. /// </summary> /// <param name="directory">The directory.</param> public BlobStreamingContainer(AzureBlobDirectory directory) { this._directory = directory; }