public async Task SaveAfterRetry() { var storageMock = new Mock <IStorage>(); storageMock.SetupSequence(x => x.Save(It.IsAny <MultipartItem>())) .ReturnsAsync((HttpStatusCode.BadGateway, null)) .ReturnsAsync((HttpStatusCode.BadGateway, null)) .ReturnsAsync((HttpStatusCode.BadGateway, null)) .ReturnsAsync((HttpStatusCode.OK, null)) .ReturnsAsync((HttpStatusCode.BadGateway, null)); var options = new StorageOptions { WaitBeforeRetryMilliseconds = 10, RetryHttpStatusCodes = new List <int> { (int)HttpStatusCode.BadGateway } }; var retryableStorage = new RetryableStorage(options, new Mock <ILogger <RetryableStorage> >().Object, storageMock.Object); var response = await retryableStorage.Save(new MultipartItem()); Assert.AreEqual(HttpStatusCode.OK, response.statusCode); storageMock.Verify(x => x.Save(It.IsAny <MultipartItem>()), Times.Exactly(4)); }
public async Task Save() { var storageMock = CreateStorageMock(HttpStatusCode.OK, null); var retryableStorage = new RetryableStorage(new StorageOptions(), new Mock <ILogger <RetryableStorage> >().Object, storageMock.Object); var response = await retryableStorage.Save(new MultipartItem()); Assert.AreEqual(HttpStatusCode.OK, response.statusCode); storageMock.Verify(x => x.Save(It.IsAny <MultipartItem>()), Times.Once); }
public async Task KeepRetrySave() { var storageMock = CreateStorageMock(HttpStatusCode.BadGateway, null); var options = new StorageOptions { WaitBeforeRetryMilliseconds = 10, RetryHttpStatusCodes = new List <int> { (int)HttpStatusCode.BadGateway } }; var retryableStorage = new RetryableStorage(options, new Mock <ILogger <RetryableStorage> >().Object, storageMock.Object); var response = await retryableStorage.Save(new MultipartItem()); Assert.AreEqual(HttpStatusCode.BadGateway, response.statusCode); storageMock.Verify(x => x.Save(It.IsAny <MultipartItem>()), Times.Exactly(options.Retries + 1)); }